diff -r 000000000000 -r 4f2f89ce4247 WebKit/mac/WebView/WebViewPrivate.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebKit/mac/WebView/WebViewPrivate.h Fri Sep 17 09:02:29 2010 +0300 @@ -0,0 +1,649 @@ +/* + * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple 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 +#import +#import + +#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 WebGeolocationPosition; +@class WebInspector; +@class WebPreferences; +@class WebScriptWorld; +@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 +extern NSString *WebElementIsInScrollBarKey; + +// One of the subviews of the WebView entered compositing mode. +extern NSString *_WebViewDidStartAcceleratedCompositingNotification; + +#if ENABLE_DASHBOARD_SUPPORT +typedef enum { + WebDashboardBehaviorAlwaysSendMouseEventsToAllWindows, + WebDashboardBehaviorAlwaysSendActiveNullEventsToPlugIns, + WebDashboardBehaviorAlwaysAcceptsFirstMouse, + WebDashboardBehaviorAllowWheelScrolling, + WebDashboardBehaviorUseBackwardCompatibilityMode +} WebDashboardBehavior; +#endif + +typedef enum { + WebInjectAtDocumentStart, + WebInjectAtDocumentEnd, +} WebUserScriptInjectionTime; + +typedef enum { + WebInjectInAllFrames, + WebInjectInTopFrameOnly +} WebUserContentInjectedFrames; + +@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; + +/*! + @method setHistoryDelegate: + @abstract Set the WebView's WebHistoryDelegate delegate. + @param delegate The WebHistoryDelegate to set as the delegate. +*/ +- (void)setHistoryDelegate:(id)delegate; + +/*! + @method historyDelegate + @abstract Return the WebView's WebHistoryDelegate delegate. + @result The WebView's WebHistoryDelegate delegate. +*/ +- (id)historyDelegate; + +- (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) +- (BOOL)canZoomPageIn; +- (IBAction)zoomPageIn:(id)sender; +- (BOOL)canZoomPageOut; +- (IBAction)zoomPageOut:(id)sender; +- (BOOL)canResetPageZoom; +- (IBAction)resetPageZoom:(id)sender; + +// Sets a master volume control for all media elements in the WebView. Valid values are 0..1. +- (void)setMediaVolume:(float)volume; +- (float)mediaVolume; + +// Add visited links +- (void)addVisitedLinks:(NSArray *)visitedLinks; + +@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 _loadBackForwardListFromOtherView: + @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; + +/* + @method _reportException:inContext: + @abstract Logs the exception to the Web Inspector. This only needs called for exceptions that + occur while using the JavaScriptCore APIs with a context owned by a WebKit. + @param exception The exception value to log. + @param context The context the exception occured in. +*/ ++ (void)_reportException:(JSValueRef)exception inContext:(JSContextRef)context; + +/*! + @method _dispatchPendingLoadRequests: + @abstract Dispatches any pending load requests that have been scheduled because of recent DOM additions or style changes. + @discussion You only need to call this method if you require synchronous notification of loads through the resource load delegate. + Otherwise the resource load delegate will be notified about loads during a future run loop iteration. + */ +- (void)_dispatchPendingLoadRequests; + ++ (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; + +/*! + @method canCloseAllWebViews + @abstract Checks if all the open WebViews can be closed (by dispatching the beforeUnload event to the pages). + @result YES if all the WebViews can be closed. +*/ ++ (BOOL)canCloseAllWebViews; + +// May well become public +- (void)_setFormDelegate:(id)delegate; +- (id)_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; + +// Indicates if the WebView is in the midst of a user gesture. +- (BOOL)_isProcessingUserGesture; + +// SPI for DumpRenderTree +- (void)_updateActiveState; + +/*! + @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; + +/*! + @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; + +- (WebHistoryItem *)_globalHistoryItem; + +/*! + @method textIteratorForRect: + @param rect The rectangle of the document that we're interested in text from. + @result WebTextIterator object, initialized with a range that corresponds to + the passed-in rectangle. + @abstract This method gives the text for the approximate range of the document + corresponding to the rectangle. The range is determined by using hit testing at + the top left and bottom right of the rectangle. Because of that, there can be + text visible in the rectangle that is not included in the iterator. If you need + a guarantee of iterating all text that is visible, then you need to instead make + a WebTextIterator with a DOMRange that covers the entire document. + */ +- (WebTextIterator *)textIteratorForRect:(NSRect)rect; + +#if ENABLE_DASHBOARD_SUPPORT +// Clients other than Dashboard, don't use this. +// As of this writing, Dashboard uses this on Tiger, but not on Leopard or newer. +- (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; + +- (void)setSelectTrailingWhitespaceEnabled:(BOOL)flag; +- (BOOL)isSelectTrailingWhitespaceEnabled; + +- (void)setMemoryCacheDelegateCallsEnabled:(BOOL)suspend; +- (BOOL)areMemoryCacheDelegateCallsEnabled; + +- (void)_setJavaScriptURLsAreAllowed:(BOOL)setJavaScriptURLsAreAllowed; + ++ (NSCursor *)_pointingHandCursor; + +// SPI for DumpRenderTree +- (BOOL)_postsAcceleratedCompositingNotifications; +- (void)_setPostsAcceleratedCompositingNotifications:(BOOL)flag; +- (BOOL)_isUsingAcceleratedCompositing; + +// Returns YES if NSView -displayRectIgnoringOpacity:inContext: will produce a faithful representation of the content. +- (BOOL)_isSoftwareRenderable; +// When drawing into a bitmap context, we normally flatten compositing layers (and distort 3D transforms). +// Clients who are able to capture their own copy of the compositing layers need to be able to disable this. +- (void)_setIncludesFlattenedCompositingLayersWhenDrawingToBitmap:(BOOL)flag; +- (BOOL)_includesFlattenedCompositingLayersWhenDrawingToBitmap; + +// SPI for PluginHalter ++ (BOOL)_isNodeHaltedPlugin:(DOMNode *)node; ++ (BOOL)_hasPluginForNodeBeenHalted:(DOMNode *)node; ++ (void)_restartHaltedPluginForNode:(DOMNode *)node; + +// Which pasteboard text is coming from in editing delegate methods such as shouldInsertNode. +- (NSPasteboard *)_insertionPasteboard; + +// Whitelists access from an origin (sourceOrigin) to a set of one or more origins described by the parameters: +// - destinationProtocol: The protocol to grant access to. +// - destinationHost: The host to grant access to. +// - allowDestinationSubdomains: If host is a domain, setting this to YES will whitelist host and all its subdomains, recursively. ++ (void)_addOriginAccessWhitelistEntryWithSourceOrigin:(NSString *)sourceOrigin destinationProtocol:(NSString *)destinationProtocol destinationHost:(NSString *)destinationHost allowDestinationSubdomains:(BOOL)allowDestinationSubdomains; ++ (void)_removeOriginAccessWhitelistEntryWithSourceOrigin:(NSString *)sourceOrigin destinationProtocol:(NSString *)destinationProtocol destinationHost:(NSString *)destinationHost allowDestinationSubdomains:(BOOL)allowDestinationSubdomains; + +// Removes all white list entries created with _addOriginAccessWhitelistEntryWithSourceOrigin. ++ (void)_resetOriginAccessWhitelists; + +// FIXME: The following two methods are deprecated in favor of the overloads below that take the WebUserContentInjectedFrames argument. https://bugs.webkit.org/show_bug.cgi?id=41800. ++ (void)_addUserScriptToGroup:(NSString *)groupName world:(WebScriptWorld *)world source:(NSString *)source url:(NSURL *)url whitelist:(NSArray *)whitelist blacklist:(NSArray *)blacklist injectionTime:(WebUserScriptInjectionTime)injectionTime; ++ (void)_addUserStyleSheetToGroup:(NSString *)groupName world:(WebScriptWorld *)world source:(NSString *)source url:(NSURL *)url whitelist:(NSArray *)whitelist blacklist:(NSArray *)blacklist; + ++ (void)_addUserScriptToGroup:(NSString *)groupName world:(WebScriptWorld *)world source:(NSString *)source url:(NSURL *)url whitelist:(NSArray *)whitelist blacklist:(NSArray *)blacklist injectionTime:(WebUserScriptInjectionTime)injectionTime injectedFrames:(WebUserContentInjectedFrames)injectedFrames; ++ (void)_addUserStyleSheetToGroup:(NSString *)groupName world:(WebScriptWorld *)world source:(NSString *)source url:(NSURL *)url whitelist:(NSArray *)whitelist blacklist:(NSArray *)blacklist injectedFrames:(WebUserContentInjectedFrames)injectedFrames; ++ (void)_removeUserScriptFromGroup:(NSString *)groupName world:(WebScriptWorld *)world url:(NSURL *)url; ++ (void)_removeUserStyleSheetFromGroup:(NSString *)groupName world:(WebScriptWorld *)world url:(NSURL *)url; ++ (void)_removeUserScriptsFromGroup:(NSString *)groupName world:(WebScriptWorld *)world; ++ (void)_removeUserStyleSheetsFromGroup:(NSString *)groupName world:(WebScriptWorld *)world; ++ (void)_removeAllUserContentFromGroup:(NSString *)groupName; + +/*! + @method cssAnimationsSuspended + @abstract Returns whether or not CSS Animations are suspended. + @result YES if CSS Animations are suspended. +*/ +- (BOOL)cssAnimationsSuspended; + +/*! + @method setCSSAnimationsSuspended + @param paused YES to suspend animations, NO to resume animations. + @discussion Suspends or resumes all running animations and transitions in the page. +*/ +- (void)setCSSAnimationsSuspended:(BOOL)suspended; + ++ (void)_setDomainRelaxationForbidden:(BOOL)forbidden forURLScheme:(NSString *)scheme; ++ (void)_registerURLSchemeAsSecure:(NSString *)scheme; + +@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 implementors once when a print job begins. If the + implementor implements knowsPageRange:, this should be called from there. + Otherwise this should be called from beginDocument. The 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 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 (WebViewTextChecking) + +- (BOOL)isAutomaticQuoteSubstitutionEnabled; +- (BOOL)isAutomaticLinkDetectionEnabled; +- (BOOL)isAutomaticDashSubstitutionEnabled; +- (BOOL)isAutomaticTextReplacementEnabled; +- (BOOL)isAutomaticSpellingCorrectionEnabled; +#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) +- (void)setAutomaticQuoteSubstitutionEnabled:(BOOL)flag; +- (void)toggleAutomaticQuoteSubstitution:(id)sender; +- (void)setAutomaticLinkDetectionEnabled:(BOOL)flag; +- (void)toggleAutomaticLinkDetection:(id)sender; +- (void)setAutomaticDashSubstitutionEnabled:(BOOL)flag; +- (void)toggleAutomaticDashSubstitution:(id)sender; +- (void)setAutomaticTextReplacementEnabled:(BOOL)flag; +- (void)toggleAutomaticTextReplacement:(id)sender; +- (void)setAutomaticSpellingCorrectionEnabled:(BOOL)flag; +- (void)toggleAutomaticSpellingCorrection:(id)sender; +#endif + +@end + +@interface WebView (WebViewEditingInMail) +- (void)_insertNewlineInQuotedContent; +- (void)_replaceSelectionWithNode:(DOMNode *)node matchStyle:(BOOL)matchStyle; +- (BOOL)_selectionIsCaret; +- (BOOL)_selectionIsAll; +@end + +@protocol WebGeolocationProvider +- (void)registerWebView:(WebView *)webView; +- (void)unregisterWebView:(WebView *)webView; +- (WebGeolocationPosition *)lastPosition; +@end + +@interface WebView (WebViewGeolocation) +- (void)_setGeolocationProvider:(id)locationProvider; +- (id)_geolocationProvider; + +- (void)_geolocationDidChangePosition:(WebGeolocationPosition *)position; +- (void)_geolocationDidFailWithError:(NSError *)error; +@end + +@interface WebView (WebViewPrivateStyleInfo) +- (JSValueRef)_computedStyleIncludingVisitedInfo:(JSContextRef)context forElement:(JSValueRef)value; +@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; + +- (void)webView:(WebView *)sender didFirstVisuallyNonEmptyLayoutInFrame:(WebFrame *)frame; + +// For implementing the WebInspector's test harness +- (void)webView:(WebView *)webView didClearInspectorWindowObject:(WebScriptObject *)windowObject forFrame:(WebFrame *)frame; + +@end + +@interface NSObject (WebResourceLoadDelegatePrivate) +// Addresses - SPI for now +- (NSCachedURLResponse *)webView:(WebView *)sender resource:(id)identifier willCacheResponse:(NSCachedURLResponse *)response fromDataSource:(WebDataSource *)dataSource; +@end + +#undef WebNSInteger +#undef WebNSUInteger