| /* |
| * Copyright (C) 2005 Apple Computer, Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of |
| * its contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY |
| * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY |
| * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #import <WebKit/WebView.h> |
| #import <WebKit/WebFramePrivate.h> |
| |
| #if !defined(ENABLE_DASHBOARD_SUPPORT) |
| #define ENABLE_DASHBOARD_SUPPORT 1 |
| #endif |
| |
| #if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4 |
| #define WebNSInteger int |
| #define WebNSUInteger unsigned int |
| #else |
| #define WebNSInteger NSInteger |
| #define WebNSUInteger NSUInteger |
| #endif |
| |
| @class NSError; |
| @class WebFrame; |
| @class WebInspector; |
| @class WebPreferences; |
| @class WebTextIterator; |
| |
| @protocol WebFormDelegate; |
| |
| extern NSString *_WebCanGoBackKey; |
| extern NSString *_WebCanGoForwardKey; |
| extern NSString *_WebEstimatedProgressKey; |
| extern NSString *_WebIsLoadingKey; |
| extern NSString *_WebMainFrameIconKey; |
| extern NSString *_WebMainFrameTitleKey; |
| extern NSString *_WebMainFrameURLKey; |
| extern NSString *_WebMainFrameDocumentKey; |
| |
| // pending public WebElementDictionary keys |
| extern NSString *WebElementTitleKey; // NSString of the title of the element (used by Safari) |
| extern NSString *WebElementSpellingToolTipKey; // NSString of a tooltip representing misspelling or bad grammar (used internally) |
| extern NSString *WebElementIsContentEditableKey; // NSNumber indicating whether the inner non-shared node is content editable (used internally) |
| |
| // other WebElementDictionary keys |
| extern NSString *WebElementLinkIsLiveKey; // NSNumber of BOOL indictating whether the link is live or not |
| |
| #if ENABLE_DASHBOARD_SUPPORT |
| typedef enum { |
| WebDashboardBehaviorAlwaysSendMouseEventsToAllWindows, |
| WebDashboardBehaviorAlwaysSendActiveNullEventsToPlugIns, |
| WebDashboardBehaviorAlwaysAcceptsFirstMouse, |
| WebDashboardBehaviorAllowWheelScrolling, |
| WebDashboardBehaviorUseBackwardCompatibilityMode |
| } WebDashboardBehavior; |
| #endif |
| |
| @interface WebController : NSTreeController { |
| IBOutlet WebView *webView; |
| } |
| - (WebView *)webView; |
| - (void)setWebView:(WebView *)newWebView; |
| @end |
| |
| @interface WebView (WebViewEditingActionsPendingPublic) |
| |
| - (void)outdent:(id)sender; |
| |
| @end |
| |
| @interface WebView (WebPendingPublic) |
| |
| - (void)scheduleInRunLoop:(NSRunLoop *)runLoop forMode:(NSString *)mode; |
| - (void)unscheduleFromRunLoop:(NSRunLoop *)runLoop forMode:(NSString *)mode; |
| |
| /*! |
| @method searchFor:direction:caseSensitive:wrap:startInSelection: |
| @abstract Searches a document view for a string and highlights the string if it is found. |
| Starts the search from the current selection. Will search across all frames. |
| @param string The string to search for. |
| @param forward YES to search forward, NO to seach backwards. |
| @param caseFlag YES to for case-sensitive search, NO for case-insensitive search. |
| @param wrapFlag YES to wrap around, NO to avoid wrapping. |
| @param startInSelection YES to begin search in the selected text (useful for incremental searching), NO to begin search after the selected text. |
| @result YES if found, NO if not found. |
| */ |
| - (BOOL)searchFor:(NSString *)string direction:(BOOL)forward caseSensitive:(BOOL)caseFlag wrap:(BOOL)wrapFlag startInSelection:(BOOL)startInSelection; |
| |
| - (void)setMainFrameDocumentReady:(BOOL)mainFrameDocumentReady; |
| |
| - (void)setTabKeyCyclesThroughElements:(BOOL)cyclesElements; |
| - (BOOL)tabKeyCyclesThroughElements; |
| |
| - (void)scrollDOMRangeToVisible:(DOMRange *)range; |
| |
| // setHoverFeedbackSuspended: can be called by clients that want to temporarily prevent the webView |
| // from displaying feedback about mouse position. Each WebDocumentView class that displays feedback |
| // about mouse position should honor this setting. |
| - (void)setHoverFeedbackSuspended:(BOOL)newValue; |
| - (BOOL)isHoverFeedbackSuspended; |
| |
| /*! |
| @method setScriptDebugDelegate: |
| @abstract Set the WebView's WebScriptDebugDelegate delegate. |
| @param delegate The WebScriptDebugDelegate to set as the delegate. |
| */ |
| - (void)setScriptDebugDelegate:(id)delegate; |
| |
| /*! |
| @method scriptDebugDelegate |
| @abstract Return the WebView's WebScriptDebugDelegate. |
| @result The WebView's WebScriptDebugDelegate. |
| */ |
| - (id)scriptDebugDelegate; |
| |
| - (BOOL)shouldClose; |
| |
| /*! |
| @method aeDescByEvaluatingJavaScriptFromString: |
| @param script The text of the JavaScript. |
| @result The result of the script, converted to an NSAppleEventDescriptor, or nil for failure. |
| */ |
| - (NSAppleEventDescriptor *)aeDescByEvaluatingJavaScriptFromString:(NSString *)script; |
| |
| // Support for displaying multiple text matches. |
| // These methods might end up moving into a protocol, so different document types can specify |
| // whether or not they implement the protocol. For now we'll just deal with HTML. |
| // These methods are still in flux; don't rely on them yet. |
| - (BOOL)canMarkAllTextMatches; |
| - (WebNSUInteger)markAllMatchesForText:(NSString *)string caseSensitive:(BOOL)caseFlag highlight:(BOOL)highlight limit:(WebNSUInteger)limit; |
| - (void)unmarkAllTextMatches; |
| - (NSArray *)rectsForTextMatches; |
| |
| // Support for disabling registration with the undo manager. This is equivalent to the methods with the same names on NSTextView. |
| - (BOOL)allowsUndo; |
| - (void)setAllowsUndo:(BOOL)flag; |
| |
| /*! |
| @method setPageSizeMultiplier: |
| @abstract Change the zoom factor of the page in views managed by this webView. |
| @param multiplier A fractional percentage value, 1.0 is 100%. |
| */ |
| - (void)setPageSizeMultiplier:(float)multiplier; |
| |
| /*! |
| @method pageSizeMultiplier |
| @result The page size multipler. |
| */ |
| - (float)pageSizeMultiplier; |
| |
| // Commands for doing page zoom. Will end up in WebView (WebIBActions) <NSUserInterfaceValidations> |
| - (BOOL)canZoomPageIn; |
| - (IBAction)zoomPageIn:(id)sender; |
| - (BOOL)canZoomPageOut; |
| - (IBAction)zoomPageOut:(id)sender; |
| - (BOOL)canResetPageZoom; |
| - (IBAction)resetPageZoom:(id)sender; |
| |
| @end |
| |
| @interface WebView (WebPrivate) |
| |
| - (WebInspector *)inspector; |
| |
| /*! |
| @method setBackgroundColor: |
| @param backgroundColor Color to use as the default background. |
| @abstract Sets what color the receiver draws under transparent page background colors and images. |
| This color is also used when no page is loaded. A color with alpha should only be used when the receiver is |
| in a non-opaque window, since the color is drawn using NSCompositeCopy. |
| */ |
| - (void)setBackgroundColor:(NSColor *)backgroundColor; |
| |
| /*! |
| @method backgroundColor |
| @result Returns the background color drawn under transparent page background colors and images. |
| This color is also used when no page is loaded. A color with alpha should only be used when the receiver is |
| in a non-opaque window, since the color is drawn using NSCompositeCopy. |
| */ |
| - (NSColor *)backgroundColor; |
| |
| /*! |
| Could be worth adding to the API. |
| @method loadItemsFromOtherView: |
| @abstract Loads the view with the contents of the other view, including its backforward list. |
| @param otherView The WebView from which to copy contents. |
| */ |
| - (void)_loadBackForwardListFromOtherView:(WebView *)otherView; |
| |
| + (NSArray *)_supportedFileExtensions; |
| |
| /*! |
| @method canShowFile: |
| @abstract Checks if the WebKit can show the content of the file at the specified path. |
| @param path The path of the file to check |
| @result YES if the WebKit can show the content of the file at the specified path. |
| */ |
| + (BOOL)canShowFile:(NSString *)path; |
| |
| /*! |
| @method suggestedFileExtensionForMIMEType: |
| @param MIMEType The MIME type to check. |
| @result The extension based on the MIME type |
| */ |
| + (NSString *)suggestedFileExtensionForMIMEType: (NSString *)MIMEType; |
| |
| + (NSString *)_standardUserAgentWithApplicationName:(NSString *)applicationName; |
| |
| // May well become public |
| - (void)_setFormDelegate:(id<WebFormDelegate>)delegate; |
| - (id<WebFormDelegate>)_formDelegate; |
| |
| - (BOOL)_isClosed; |
| |
| // _close is now replaced by public method -close. It remains here only for backward compatibility |
| // until callers can be weaned off of it. |
| - (void)_close; |
| |
| /*! |
| @method _registerViewClass:representationClass:forURLScheme: |
| @discussion Register classes that implement WebDocumentView and WebDocumentRepresentation respectively. |
| @param viewClass The WebDocumentView class to use to render data for a given MIME type. |
| @param representationClass The WebDocumentRepresentation class to use to represent data of the given MIME type. |
| @param scheme The URL scheme to represent with an object of the given class. |
| */ |
| + (void)_registerViewClass:(Class)viewClass representationClass:(Class)representationClass forURLScheme:(NSString *)URLScheme; |
| |
| + (void)_unregisterViewClassAndRepresentationClassForMIMEType:(NSString *)MIMEType; |
| |
| /*! |
| @method _canHandleRequest: |
| @abstract Performs a "preflight" operation that performs some |
| speculative checks to see if a request can be used to create |
| a WebDocumentView and WebDocumentRepresentation. |
| @discussion The result of this method is valid only as long as no |
| protocols or schemes are registered or unregistered, and as long as |
| the request is not mutated (if the request is mutable). Hence, clients |
| should be prepared to handle failures even if they have performed request |
| preflighting by caling this method. |
| @param request The request to preflight. |
| @result YES if it is likely that a WebDocumentView and WebDocumentRepresentation |
| can be created for the request, NO otherwise. |
| */ |
| + (BOOL)_canHandleRequest:(NSURLRequest *)request; |
| |
| + (NSString *)_decodeData:(NSData *)data; |
| |
| + (void)_setAlwaysUsesComplexTextCodePath:(BOOL)f; |
| // This is the old name of the above method. Needed for Safari versions that call it. |
| + (void)_setAlwaysUseATSU:(BOOL)f; |
| |
| - (NSCachedURLResponse *)_cachedResponseForURL:(NSURL *)URL; |
| |
| #if ENABLE_DASHBOARD_SUPPORT |
| - (void)_addScrollerDashboardRegions:(NSMutableDictionary *)regions; |
| - (NSDictionary *)_dashboardRegions; |
| |
| - (void)_setDashboardBehavior:(WebDashboardBehavior)behavior to:(BOOL)flag; |
| - (BOOL)_dashboardBehavior:(WebDashboardBehavior)behavior; |
| #endif |
| |
| + (void)_setShouldUseFontSmoothing:(BOOL)f; |
| + (BOOL)_shouldUseFontSmoothing; |
| |
| - (void)_setCatchesDelegateExceptions:(BOOL)f; |
| - (BOOL)_catchesDelegateExceptions; |
| |
| // These two methods are useful for a test harness that needs a consistent appearance for the focus rings |
| // regardless of OS X version. |
| + (void)_setUsesTestModeFocusRingColor:(BOOL)f; |
| + (BOOL)_usesTestModeFocusRingColor; |
| |
| + (NSString *)_minimumRequiredSafariBuildNumber; |
| |
| /*! |
| @method setAlwaysShowVerticalScroller: |
| @result Forces the vertical scroller to be visible if flag is YES, otherwise |
| if flag is NO the scroller with automatically show and hide as needed. |
| */ |
| - (void)setAlwaysShowVerticalScroller:(BOOL)flag; |
| |
| /*! |
| @method alwaysShowVerticalScroller |
| @result YES if the vertical scroller is always shown |
| */ |
| - (BOOL)alwaysShowVerticalScroller; |
| |
| /*! |
| @method setAlwaysShowHorizontalScroller: |
| @result Forces the horizontal scroller to be visible if flag is YES, otherwise |
| if flag is NO the scroller with automatically show and hide as needed. |
| */ |
| - (void)setAlwaysShowHorizontalScroller:(BOOL)flag; |
| |
| /*! |
| @method alwaysShowHorizontalScroller |
| @result YES if the horizontal scroller is always shown |
| */ |
| - (BOOL)alwaysShowHorizontalScroller; |
| |
| /*! |
| @method setProhibitsMainFrameScrolling: |
| @abstract Prohibits scrolling in the WebView's main frame. Used to "lock" a WebView |
| to a specific scroll position. |
| */ |
| - (void)setProhibitsMainFrameScrolling:(BOOL)prohibits; |
| |
| /*! |
| @method _setAdditionalWebPlugInPaths: |
| @abstract Sets additional plugin search paths for a specific WebView. |
| */ |
| - (void)_setAdditionalWebPlugInPaths:(NSArray *)newPaths; |
| |
| /*! |
| @method _setInViewSourceMode: |
| @abstract Used to place a WebView into a special source-viewing mode. |
| */ |
| - (void)_setInViewSourceMode:(BOOL)flag; |
| |
| /*! |
| @method _inViewSourceMode; |
| @abstract Whether or not the WebView is in source-view mode for HTML. |
| */ |
| - (BOOL)_inViewSourceMode; |
| |
| /*! |
| @method _attachScriptDebuggerToAllFrames |
| @abstract Attaches a script debugger to all frames belonging to the receiver. |
| */ |
| - (void)_attachScriptDebuggerToAllFrames; |
| |
| /*! |
| @method _detachScriptDebuggerFromAllFrames |
| @abstract Detaches any script debuggers from all frames belonging to the receiver. |
| */ |
| - (void)_detachScriptDebuggerFromAllFrames; |
| |
| - (BOOL)defersCallbacks; // called by QuickTime plug-in |
| - (void)setDefersCallbacks:(BOOL)defer; // called by QuickTime plug-in |
| |
| - (BOOL)usesPageCache; |
| - (void)setUsesPageCache:(BOOL)usesPageCache; |
| |
| /*! |
| @method textIteratorForRect: |
| @param rectangle from which we want the WebTextIterator to load text from |
| @result a WebtextIterator object. |
| */ |
| - (WebTextIterator *)textIteratorForRect:(NSRect)rect; |
| |
| #if ENABLE_DASHBOARD_SUPPORT |
| // <rdar://problem/5217124> Clients other than dashboard, don't use this. |
| // Do not remove until Dashboard has moved off it |
| - (void)handleAuthenticationForResource:(id)identifier challenge:(NSURLAuthenticationChallenge *)challenge fromDataSource:(WebDataSource *)dataSource; |
| #endif |
| |
| - (void)_clearUndoRedoOperations; |
| |
| /* Used to do fast (lower quality) scaling of images so that window resize can be quick. */ |
| - (BOOL)_inFastImageScalingMode; |
| - (void)_setUseFastImageScalingMode:(BOOL)flag; |
| |
| - (BOOL)_cookieEnabled; |
| - (void)_setCookieEnabled:(BOOL)enable; |
| |
| // SPI for DumpRenderTree |
| - (void)_executeCoreCommandByName:(NSString *)name value:(NSString *)value; |
| - (void)_clearMainFrameName; |
| |
| - (void)_setCustomHTMLTokenizerTimeDelay:(double)timeDelay; |
| - (void)_setCustomHTMLTokenizerChunkSize:(int)chunkSize; |
| |
| - (id)_initWithFrame:(NSRect)f frameName:(NSString *)frameName groupName:(NSString *)groupName usesDocumentViews:(BOOL)usesDocumentViews; |
| - (BOOL)_usesDocumentViews; |
| |
| @end |
| |
| @interface WebView (WebViewPrintingPrivate) |
| /*! |
| @method _adjustPrintingMarginsForHeaderAndFooter: |
| @abstract Increase the top and bottom margins for the current print operation to |
| account for the header and footer height. |
| @discussion Called by <WebDocument> implementors once when a print job begins. If the |
| <WebDocument> implementor implements knowsPageRange:, this should be called from there. |
| Otherwise this should be called from beginDocument. The <WebDocument> implementors need |
| to also call _drawHeaderAndFooter. |
| */ |
| - (void)_adjustPrintingMarginsForHeaderAndFooter; |
| |
| /*! |
| @method _drawHeaderAndFooter |
| @abstract Gives the WebView's UIDelegate a chance to draw a header and footer on the |
| printed page. |
| @discussion This should be called by <WebDocument> implementors from an override of |
| drawPageBorderWithSize:. |
| */ |
| - (void)_drawHeaderAndFooter; |
| @end |
| |
| @interface WebView (WebViewGrammarChecking) |
| |
| // FIXME: These two methods should be merged into WebViewEditing when we're not in API freeze |
| - (BOOL)isGrammarCheckingEnabled; |
| #ifndef BUILDING_ON_TIGER |
| - (void)setGrammarCheckingEnabled:(BOOL)flag; |
| |
| // FIXME: This method should be merged into WebIBActions when we're not in API freeze |
| - (void)toggleGrammarChecking:(id)sender; |
| #endif |
| @end |
| |
| @interface WebView (WebViewEditingInMail) |
| - (void)_insertNewlineInQuotedContent; |
| - (void)_replaceSelectionWithNode:(DOMNode *)node matchStyle:(BOOL)matchStyle; |
| @end |
| |
| @interface NSObject (WebFrameLoadDelegatePrivate) |
| - (void)webView:(WebView *)sender didFirstLayoutInFrame:(WebFrame *)frame; |
| |
| // didFinishDocumentLoadForFrame is sent when the document has finished loading, though not necessarily all |
| // of its subresources. |
| // FIXME 5259339: Currently this callback is not sent for (some?) pages loaded entirely from the cache. |
| - (void)webView:(WebView *)sender didFinishDocumentLoadForFrame:(WebFrame *)frame; |
| |
| // Addresses 4192534. SPI for now. |
| - (void)webView:(WebView *)sender didHandleOnloadEventsForFrame:(WebFrame *)frame; |
| |
| @end |
| |
| @interface NSObject (WebResourceLoadDelegatePrivate) |
| // Addresses <rdar://problem/5008925> - SPI for now |
| - (NSCachedURLResponse *)webView:(WebView *)sender resource:(id)identifier willCacheResponse:(NSCachedURLResponse *)response fromDataSource:(WebDataSource *)dataSource; |
| @end |
| |
| #undef WebNSInteger |
| #undef WebNSUInteger |