WebKit/mac/WebView/WebViewPrivate.h
changeset 0 4f2f89ce4247
--- /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 <WebKit/WebView.h>
+#import <WebKit/WebFramePrivate.h>
+#import <JavaScriptCore/JSBase.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 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) <NSUserInterfaceValidations>
+- (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<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;
+
+// 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
+// <rdar://problem/5217124> 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 <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 (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 <NSObject>
+- (void)registerWebView:(WebView *)webView;
+- (void)unregisterWebView:(WebView *)webView;
+- (WebGeolocationPosition *)lastPosition;
+@end
+
+@interface WebView (WebViewGeolocation)
+- (void)_setGeolocationProvider:(id<WebGeolocationProvider>)locationProvider;
+- (id<WebGeolocationProvider>)_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 <rdar://problem/5008925> - SPI for now
+- (NSCachedURLResponse *)webView:(WebView *)sender resource:(id)identifier willCacheResponse:(NSCachedURLResponse *)response fromDataSource:(WebDataSource *)dataSource;
+@end
+
+#undef WebNSInteger
+#undef WebNSUInteger