webengine/osswebengine/WebKit/WebView/WebView.h
changeset 0 dd21522fd290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebKit/WebView/WebView.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,819 @@
+/*
+ * Copyright (C) 2003, 2004, 2005, 2006 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 <Cocoa/Cocoa.h>
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4
+#define WebNSInteger int
+#else
+#define WebNSInteger NSInteger
+#endif
+
+@class DOMCSSStyleDeclaration;
+@class DOMDocument;
+@class DOMElement;
+@class DOMNode;
+@class DOMRange;
+
+@class WebArchive;
+@class WebBackForwardList;
+@class WebDataSource;
+@class WebFrame;
+@class WebFrameView;
+@class WebHistoryItem;
+@class WebPreferences;
+@class WebScriptObject;
+@class WebViewPrivate;
+
+// Element dictionary keys
+extern NSString *WebElementDOMNodeKey;          // DOMNode of the element
+extern NSString *WebElementFrameKey;            // WebFrame of the element
+extern NSString *WebElementImageAltStringKey;   // NSString of the ALT attribute of the image element
+extern NSString *WebElementImageKey;            // NSImage of the image element
+extern NSString *WebElementImageRectKey;        // NSValue of an NSRect, the rect of the image element
+extern NSString *WebElementImageURLKey;         // NSURL of the image element
+extern NSString *WebElementIsSelectedKey;       // NSNumber of BOOL indicating whether the element is selected or not 
+extern NSString *WebElementLinkURLKey;          // NSURL of the link if the element is within an anchor
+extern NSString *WebElementLinkTargetFrameKey;  // WebFrame of the target of the anchor
+extern NSString *WebElementLinkTitleKey;        // NSString of the title of the anchor
+extern NSString *WebElementLinkLabelKey;        // NSString of the text within the anchor
+
+/*
+    @discussion Notifications sent by WebView to mark the progress of loads.
+    @constant WebViewProgressStartedNotification Posted whenever a load begins in the WebView, including
+    a load that is initiated in a subframe.  After receiving this notification zero or more
+    WebViewProgressEstimateChangedNotifications will be sent.  The userInfo will be nil.
+    @constant WebViewProgressEstimateChangedNotification Posted whenever the value of
+    estimatedProgress changes.  The userInfo will be nil.
+    @constant WebViewProgressFinishedNotification Posted when the load for a WebView has finished.
+    The userInfo will be nil.
+*/
+extern NSString *WebViewProgressStartedNotification;
+extern NSString *WebViewProgressEstimateChangedNotification;
+extern NSString *WebViewProgressFinishedNotification;
+
+/*!
+    @class WebView
+    WebView manages the interaction between WebFrameViews and WebDataSources.  Modification
+    of the policies and behavior of the WebKit is largely managed by WebViews and their
+    delegates.
+    
+    <p>
+    Typical usage:
+    </p>
+    <pre>
+    WebView *webView;
+    WebFrame *mainFrame;
+    
+    webView  = [[WebView alloc] initWithFrame: NSMakeRect (0,0,640,480)];
+    mainFrame = [webView mainFrame];
+    [mainFrame loadRequest:request];
+    </pre>
+    
+    WebViews have the following delegates:  WebUIDelegate, WebResourceLoadDelegate,
+    WebFrameLoadDelegate, and WebPolicyDelegate.
+    
+    WebKit depends on the WebView's WebUIDelegate for all window
+    related management, including opening new windows and controlling the user interface
+    elements in those windows.
+    
+    WebResourceLoadDelegate is used to monitor the progress of resources as they are
+    loaded.  This delegate may be used to present users with a progress monitor.
+    
+    The WebFrameLoadDelegate receives messages when the URL in a WebFrame is
+    changed.
+    
+    WebView's WebPolicyDelegate can make determinations about how
+    content should be handled, based on the resource's URL and MIME type.
+*/
+@interface WebView : NSView
+{
+@private
+    WebViewPrivate *_private;
+}
+
+/*!
+    @method canShowMIMEType:
+    @abstract Checks if the WebKit can show content of a certain MIME type.
+    @param MIMEType The MIME type to check.
+    @result YES if the WebKit can show content with MIMEtype.
+*/
++ (BOOL)canShowMIMEType:(NSString *)MIMEType;
+
+
+/*!
+     @method canShowMIMETypeAsHTML:
+     @abstract Checks if the the MIME type is a type that the WebKit will interpret as HTML.
+     @param MIMEType The MIME type to check.
+     @result YES if the MIMEtype in an HTML type.
+*/
++ (BOOL)canShowMIMETypeAsHTML:(NSString *)MIMEType;
+
+/*!
+    @method MIMETypesShownAsHTML
+    @result Returns an array of NSStrings that describe the MIME types
+    WebKit will attempt to render as HTML.
+*/
++ (NSArray *)MIMETypesShownAsHTML;
+
+/*!
+    @method setMIMETypesShownAsHTML:
+    @discussion Sets the array of NSString MIME types that WebKit will
+    attempt to render as HTML.  Typically you will retrieve the built-in
+    array using MIMETypesShownAsHTML and add additional MIME types to that
+    array.
+*/
++ (void)setMIMETypesShownAsHTML:(NSArray *)MIMETypes;
+
+/*!
+    @method URLFromPasteboard:
+    @abstract Returns a URL from a pasteboard
+    @param pasteboard The pasteboard with a URL
+    @result A URL if the pasteboard has one. Nil if it does not.
+    @discussion This method differs than NSURL's URLFromPasteboard method in that it tries multiple pasteboard types
+    including NSURLPboardType to find a URL on the pasteboard.
+*/
++ (NSURL *)URLFromPasteboard:(NSPasteboard *)pasteboard;
+
+/*!
+    @method URLTitleFromPasteboard:
+    @abstract Returns a URL title from a pasteboard
+    @param pasteboard The pasteboard with a URL title
+    @result A URL title if the pasteboard has one. Nil if it does not.
+    @discussion This method returns a title that refers a URL on the pasteboard. An example of this is the link label
+    which is the text inside the anchor tag.
+*/
++ (NSString *)URLTitleFromPasteboard:(NSPasteboard *)pasteboard;
+
+/*!
+    @method registerURLSchemeAsLocal:
+    @abstract Adds the scheme to the list of schemes to be treated as local.
+    @param scheme The scheme to register
+*/
++ (void)registerURLSchemeAsLocal:(NSString *)scheme;
+
+/*!
+    @method initWithFrame:frameName:groupName:
+    @abstract The designated initializer for WebView.
+    @discussion Initialize a WebView with the supplied parameters. This method will 
+    create a main WebFrame with the view. Passing a top level frame name is useful if you
+    handle a targetted frame navigation that would normally open a window in some other 
+    way that still ends up creating a new WebView.
+    @param frame The frame used to create the view.
+    @param frameName The name to use for the top level frame. May be nil.
+    @param groupName The name of the webView set to which this webView will be added.  May be nil.
+    @result Returns an initialized WebView.
+*/
+- (id)initWithFrame:(NSRect)frame frameName:(NSString *)frameName groupName:(NSString *)groupName;
+
+/*!
+    @method close
+    @abstract Closes the receiver, unloading its web page and canceling any pending loads.
+    Once the receiver has closed, it will no longer respond to requests or fire delegate methods.
+    (However, the -close method itself may fire delegate methods.)
+    @discussion A garbage collected application is required to call close when the receiver is no longer needed.
+    The close method will be called automatically when the window or hostWindow closes and shouldCloseWithWindow returns YES.
+    A non-garbage collected application can still call close, providing a convenient way to prevent receiver
+    from doing any more loading and firing any future delegate methods.
+*/
+- (void)close;
+
+/*!
+    @method setShouldCloseWithWindow:
+    @abstract Set whether the receiver closes when either it's window or hostWindow closes.
+    @param close YES if the receiver should close when either it's window or hostWindow closes, otherwise NO.
+*/
+- (void)setShouldCloseWithWindow:(BOOL)close;
+
+/*!
+    @method shouldCloseWithWindow
+    @abstract Returns whether the receiver closes when either it's window or hostWindow closes.
+    @discussion Defaults to YES in garbage collected applications, otherwise NO to maintain backwards compatibility.
+    @result YES if the receiver closes when either it's window or hostWindow closes, otherwise NO.
+*/
+- (BOOL)shouldCloseWithWindow;
+
+/*!
+    @method setUIDelegate:
+    @abstract Set the WebView's WebUIDelegate.
+    @param delegate The WebUIDelegate to set as the delegate.
+*/    
+- (void)setUIDelegate:(id)delegate;
+
+/*!
+    @method UIDelegate
+    @abstract Return the WebView's WebUIDelegate.
+    @result The WebView's WebUIDelegate.
+*/
+- (id)UIDelegate;
+
+/*!
+    @method setResourceLoadDelegate:
+    @abstract Set the WebView's WebResourceLoadDelegate load delegate.
+    @param delegate The WebResourceLoadDelegate to set as the load delegate.
+*/
+- (void)setResourceLoadDelegate:(id)delegate;
+
+/*!
+    @method resourceLoadDelegate
+    @result Return the WebView's WebResourceLoadDelegate.
+*/    
+- (id)resourceLoadDelegate;
+
+/*!
+    @method setDownloadDelegate:
+    @abstract Set the WebView's WebDownloadDelegate.
+    @discussion The download delegate is retained by WebDownload when any downloads are in progress.
+    @param delegate The WebDownloadDelegate to set as the download delegate.
+*/    
+- (void)setDownloadDelegate:(id)delegate;
+
+/*!
+    @method downloadDelegate
+    @abstract Return the WebView's WebDownloadDelegate.
+    @result The WebView's WebDownloadDelegate.
+*/    
+- (id)downloadDelegate;
+
+/*!
+    @method setFrameLoadDelegate:
+    @abstract Set the WebView's WebFrameLoadDelegate delegate.
+    @param delegate The WebFrameLoadDelegate to set as the delegate.
+*/    
+- (void)setFrameLoadDelegate:(id)delegate;
+
+/*!
+    @method frameLoadDelegate
+    @abstract Return the WebView's WebFrameLoadDelegate delegate.
+    @result The WebView's WebFrameLoadDelegate delegate.
+*/    
+- (id)frameLoadDelegate;
+
+/*!
+    @method setPolicyDelegate:
+    @abstract Set the WebView's WebPolicyDelegate delegate.
+    @param delegate The WebPolicyDelegate to set as the delegate.
+*/    
+- (void)setPolicyDelegate:(id)delegate;
+
+/*!
+    @method policyDelegate
+    @abstract Return the WebView's WebPolicyDelegate.
+    @result The WebView's WebPolicyDelegate.
+*/    
+- (id)policyDelegate;
+
+/*!
+    @method mainFrame
+    @abstract Return the top level frame.  
+    @discussion Note that even document that are not framesets will have a
+    mainFrame.
+    @result The main frame.
+*/    
+- (WebFrame *)mainFrame;
+
+/*!
+    @method selectedFrame
+    @abstract Return the frame that has the active selection.  
+    @discussion Returns the frame that contains the first responder, if any. Otherwise returns the
+    frame that contains a non-zero-length selection, if any. Returns nil if no frame meets these criteria.
+    @result The selected frame.
+*/
+- (WebFrame *)selectedFrame;
+
+/*!
+    @method backForwardList
+    @result The backforward list for this webView.
+*/    
+- (WebBackForwardList *)backForwardList;
+
+/*!
+    @method setMaintainsBackForwardList:
+    @abstract Enable or disable the use of a backforward list for this webView.
+    @param flag Turns use of the back forward list on or off
+*/    
+- (void)setMaintainsBackForwardList:(BOOL)flag;
+
+/*!
+    @method goBack
+    @abstract Go back to the previous URL in the backforward list.
+    @result YES if able to go back in the backforward list, NO otherwise.
+*/    
+- (BOOL)goBack;
+
+/*!
+    @method goForward
+    @abstract Go forward to the next URL in the backforward list.
+    @result YES if able to go forward in the backforward list, NO otherwise.
+*/    
+- (BOOL)goForward;
+
+/*!
+    @method goToBackForwardItem:
+    @abstract Go back or forward to an item in the backforward list.
+    @result YES if able to go to the item, NO otherwise.
+*/    
+- (BOOL)goToBackForwardItem:(WebHistoryItem *)item;
+
+/*!
+    @method setTextSizeMultiplier:
+    @abstract Change the size of the text rendering in views managed by this webView.
+    @param multiplier A fractional percentage value, 1.0 is 100%.
+*/    
+- (void)setTextSizeMultiplier:(float)multiplier;
+
+/*!
+    @method textSizeMultiplier
+    @result The text size multipler.
+*/    
+- (float)textSizeMultiplier;
+
+/*!
+    @method setApplicationNameForUserAgent:
+    @abstract Set the application name. 
+    @discussion This name will be used in user-agent strings
+    that are chosen for best results in rendering web pages.
+    @param applicationName The application name
+*/
+- (void)setApplicationNameForUserAgent:(NSString *)applicationName;
+
+/*!
+    @method applicationNameForUserAgent
+    @result The name of the application as used in the user-agent string.
+*/
+- (NSString *)applicationNameForUserAgent;
+
+/*!
+    @method setCustomUserAgent:
+    @abstract Set the user agent. 
+    @discussion Setting this means that the webView should use this user-agent string
+    instead of constructing a user-agent string for each URL. Setting it to nil
+    causes the webView to construct the user-agent string for each URL
+    for best results rendering web pages.
+    @param userAgentString The user agent description
+*/
+- (void)setCustomUserAgent:(NSString *)userAgentString;
+
+/*!
+    @method customUserAgent
+    @result The custom user-agent string or nil if no custom user-agent string has been set.
+*/
+- (NSString *)customUserAgent;
+
+/*!
+    @method userAgentForURL:
+    @abstract Get the appropriate user-agent string for a particular URL.
+    @param URL The URL.
+    @result The user-agent string for the supplied URL.
+*/
+- (NSString *)userAgentForURL:(NSURL *)URL;
+
+
+/*!
+    @method supportsTextEncoding
+    @abstract Find out if the current web page supports text encodings.
+    @result YES if the document view of the current web page can
+    support different text encodings.
+*/
+- (BOOL)supportsTextEncoding;
+
+/*!
+    @method setCustomTextEncodingName:
+    @discussion Make the page display with a different text encoding; stops any load in progress.
+    The text encoding passed in overrides the normal text encoding smarts including
+    what's specified in a web page's header or HTTP response.
+    The text encoding automatically goes back to the default when the top level frame
+    changes to a new location.
+    Setting the text encoding name to nil makes the webView use default encoding rules.
+    @param encoding The text encoding name to use to display a page or nil.
+*/
+- (void)setCustomTextEncodingName:(NSString *)encodingName;
+
+/*!
+    @method customTextEncodingName
+    @result The custom text encoding name or nil if no custom text encoding name has been set.
+*/
+- (NSString *)customTextEncodingName;
+
+/*!
+    @method setMediaStyle:
+    @discussion Set the media style for the WebView.  The mediaStyle will override the normal value
+    of the CSS media property.  Setting the value to nil will restore the normal value.
+    @param mediaStyle The value to use for the CSS media property.
+*/
+- (void)setMediaStyle:(NSString *)mediaStyle;
+
+/*!
+    @method mediaStyle
+    @result mediaStyle The value to use for the CSS media property, as set by setMediaStyle:.  It
+    will be nil unless set by that method.
+*/
+- (NSString *)mediaStyle;
+
+/*!
+    @method stringByEvaluatingJavaScriptFromString:
+    @param script The text of the JavaScript.
+    @result The result of the script, converted to a string, or nil for failure.
+*/
+- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
+
+/*!
+    @method windowScriptObject
+    @discussion windowScriptObject return a WebScriptObject that represents the
+    window object from the script environment.
+    @result Returns the window object from the script environment.
+*/
+- (WebScriptObject *)windowScriptObject;
+
+/*!
+    @method setPreferences:
+    @param preferences The preferences to use for the webView.
+    @abstract Override the standard setting for the webView. 
+*/
+- (void)setPreferences: (WebPreferences *)prefs;
+
+/*!
+    @method preferences
+    @result Returns the preferences used by this webView.
+    @discussion This method will return [WebPreferences standardPreferences] if no
+    other instance of WebPreferences has been set.
+*/
+- (WebPreferences *)preferences;
+
+/*!
+    @method setPreferencesIdentifier:
+    @param anIdentifier The string to use a prefix for storing values for this WebView in the user
+    defaults database.
+    @discussion If the WebPreferences for this WebView are stored in the user defaults database, the
+    string set in this method will be used a key prefix.
+*/
+- (void)setPreferencesIdentifier:(NSString *)anIdentifier;
+
+/*!
+    @method preferencesIdentifier
+    @result Returns the WebPreferences key prefix.
+*/
+- (NSString *)preferencesIdentifier;
+
+
+/*!
+    @method setHostWindow:
+    @param hostWindow The host window for the web view.
+    @discussion Parts of WebKit (such as plug-ins and JavaScript) depend on a window to function
+    properly. Set a host window so these parts continue to function even when the web view is
+    not in an actual window.
+*/
+- (void)setHostWindow:(NSWindow *)hostWindow;
+
+/*!
+    @method hostWindow
+    @result The host window for the web view.
+*/
+- (NSWindow *)hostWindow;
+
+/*!
+    @method searchFor:direction:caseSensitive:
+    @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.
+    @result YES if found, NO if not found.
+*/
+- (BOOL)searchFor:(NSString *)string direction:(BOOL)forward caseSensitive:(BOOL)caseFlag wrap:(BOOL)wrapFlag;
+
+/*!
+    @method registerViewClass:representationClass:forMIMEType:
+    @discussion Register classes that implement WebDocumentView and WebDocumentRepresentation respectively.
+    A document class may register for a primary MIME type by excluding
+    a subtype, i.e. "video/" will match the document class with
+    all video types.  More specific matching takes precedence
+    over general matching.
+    @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 MIMEType The MIME type to represent with an object of the given class.
+*/
++ (void)registerViewClass:(Class)viewClass representationClass:(Class)representationClass forMIMEType:(NSString *)MIMEType;
+
+
+/*!
+    @method setGroupName:
+    @param groupName The name of the group for this WebView.
+    @discussion JavaScript may access named frames within the same group. 
+*/
+- (void)setGroupName:(NSString *)groupName;
+
+/*!
+    @method groupName
+    @discussion The group name for this WebView.
+*/
+- (NSString *)groupName;
+
+/*!
+    @method estimatedProgress
+    @discussion An estimate of the percent complete for a document load.  This
+    value will range from 0 to 1.0 and, once a load completes, will remain at 1.0 
+    until a new load starts, at which point it will be reset to 0.  The value is an
+    estimate based on the total number of bytes expected to be received
+    for a document, including all it's possible subresources.  For more accurate progress
+    indication it is recommended that you implement a WebFrameLoadDelegate and a
+    WebResourceLoadDelegate.
+*/
+- (double)estimatedProgress;
+
+/*!
+    @method isLoading
+    @discussion Returns YES if there are any pending loads.
+*/
+- (BOOL)isLoading;
+
+/*!
+    @method elementAtPoint:
+    @param point A point in the coordinates of the WebView
+    @result An element dictionary describing the point
+*/
+- (NSDictionary *)elementAtPoint:(NSPoint)point;
+
+/*!
+    @method pasteboardTypesForSelection
+    @abstract Returns the pasteboard types that WebView can use for the current selection
+*/
+- (NSArray *)pasteboardTypesForSelection;
+
+/*!
+    @method writeSelectionWithPasteboardTypes:toPasteboard:
+    @abstract Writes the current selection to the pasteboard
+    @param types The types that WebView will write to the pasteboard
+    @param pasteboard The pasteboard to write to
+*/
+- (void)writeSelectionWithPasteboardTypes:(NSArray *)types toPasteboard:(NSPasteboard *)pasteboard;
+
+/*!
+    @method pasteboardTypesForElement:
+    @abstract Returns the pasteboard types that WebView can use for an element
+    @param element The element
+*/
+- (NSArray *)pasteboardTypesForElement:(NSDictionary *)element;
+
+/*!
+    @method writeElement:withPasteboardTypes:toPasteboard:
+    @abstract Writes an element to the pasteboard
+    @param element The element to write to the pasteboard
+    @param types The types that WebView will write to the pasteboard
+    @param pasteboard The pasteboard to write to
+*/
+- (void)writeElement:(NSDictionary *)element withPasteboardTypes:(NSArray *)types toPasteboard:(NSPasteboard *)pasteboard;
+
+/*!
+    @method moveDragCaretToPoint:
+    @param point A point in the coordinates of the WebView
+    @discussion This method moves the caret that shows where something being dragged will be dropped. It may cause the WebView to scroll
+    to make the new position of the drag caret visible.
+*/
+- (void)moveDragCaretToPoint:(NSPoint)point;
+
+/*!
+    @method removeDragCaret
+    @abstract Removes the drag caret from the WebView
+*/
+- (void)removeDragCaret;
+
+/*!
+    @method setDrawsBackground:
+    @param drawsBackround YES to cause the receiver to draw a default white background, NO otherwise.
+    @abstract Sets whether the receiver draws a default white background when the loaded page has no background specified.
+*/
+- (void)setDrawsBackground:(BOOL)drawsBackround;
+
+/*!
+    @method drawsBackground
+    @result Returns YES if the receiver draws a default white background, NO otherwise.
+*/
+- (BOOL)drawsBackground;
+
+/*!
+    @method setMainFrameURL:
+    @param URLString The URL to load in the mainFrame.
+*/
+- (void)setMainFrameURL:(NSString *)URLString;
+
+/*!
+    @method mainFrameURL
+    @result Returns the main frame's current URL.
+*/
+- (NSString *)mainFrameURL;
+
+/*!
+    @method mainFrameDocument
+    @result Returns the main frame's DOMDocument.
+*/
+- (DOMDocument *)mainFrameDocument;
+
+/*!
+    @method mainFrameTitle
+    @result Returns the main frame's title if any, otherwise an empty string.
+*/
+- (NSString *)mainFrameTitle;
+
+/*!
+    @method mainFrameIcon
+    @discussion The methods returns the site icon for the current page loaded in the mainFrame.
+    @result Returns the main frame's icon if any, otherwise nil.
+*/
+- (NSImage *)mainFrameIcon;
+
+@end
+
+
+@interface WebView (WebIBActions) <NSUserInterfaceValidations>
+- (IBAction)takeStringURLFrom:(id)sender;
+- (IBAction)stopLoading:(id)sender;
+- (IBAction)reload:(id)sender;
+- (BOOL)canGoBack;
+- (IBAction)goBack:(id)sender;
+- (BOOL)canGoForward;
+- (IBAction)goForward:(id)sender;
+- (BOOL)canMakeTextLarger;
+- (IBAction)makeTextLarger:(id)sender;
+- (BOOL)canMakeTextSmaller;
+- (IBAction)makeTextSmaller:(id)sender;
+- (BOOL)canMakeTextStandardSize;
+- (IBAction)makeTextStandardSize:(id)sender;
+- (IBAction)toggleContinuousSpellChecking:(id)sender;
+- (IBAction)toggleSmartInsertDelete:(id)sender;
+@end
+
+
+// WebView editing support
+
+extern NSString * const WebViewDidBeginEditingNotification;
+extern NSString * const WebViewDidChangeNotification;
+extern NSString * const WebViewDidEndEditingNotification;
+extern NSString * const WebViewDidChangeTypingStyleNotification;
+extern NSString * const WebViewDidChangeSelectionNotification;
+
+@interface WebView (WebViewCSS)
+- (DOMCSSStyleDeclaration *)computedStyleForElement:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
+@end
+
+@interface WebView (WebViewEditing)
+- (DOMRange *)editableDOMRangeForPoint:(NSPoint)point;
+- (void)setSelectedDOMRange:(DOMRange *)range affinity:(NSSelectionAffinity)selectionAffinity;
+- (DOMRange *)selectedDOMRange;
+- (NSSelectionAffinity)selectionAffinity;
+- (BOOL)maintainsInactiveSelection;
+- (void)setEditable:(BOOL)flag;
+- (BOOL)isEditable;
+- (void)setTypingStyle:(DOMCSSStyleDeclaration *)style;
+- (DOMCSSStyleDeclaration *)typingStyle;
+- (void)setSmartInsertDeleteEnabled:(BOOL)flag;
+- (BOOL)smartInsertDeleteEnabled;
+- (void)setContinuousSpellCheckingEnabled:(BOOL)flag;
+- (BOOL)isContinuousSpellCheckingEnabled;
+- (WebNSInteger)spellCheckerDocumentTag;
+- (NSUndoManager *)undoManager;
+- (void)setEditingDelegate:(id)delegate;
+- (id)editingDelegate;
+- (DOMCSSStyleDeclaration *)styleDeclarationWithText:(NSString *)text;
+@end
+
+@interface WebView (WebViewUndoableEditing)
+- (void)replaceSelectionWithNode:(DOMNode *)node; 
+- (void)replaceSelectionWithText:(NSString *)text;    
+- (void)replaceSelectionWithMarkupString:(NSString *)markupString;
+- (void)replaceSelectionWithArchive:(WebArchive *)archive;
+- (void)deleteSelection;    
+- (void)applyStyle:(DOMCSSStyleDeclaration *)style;
+@end
+
+@interface WebView (WebViewEditingActions)
+
+- (void)copy:(id)sender;
+- (void)cut:(id)sender;
+- (void)paste:(id)sender;
+- (void)copyFont:(id)sender;
+- (void)pasteFont:(id)sender;
+- (void)delete:(id)sender;
+- (void)pasteAsPlainText:(id)sender;
+- (void)pasteAsRichText:(id)sender;
+
+- (void)changeFont:(id)sender;
+- (void)changeAttributes:(id)sender;
+- (void)changeDocumentBackgroundColor:(id)sender;
+- (void)changeColor:(id)sender;
+
+- (void)alignCenter:(id)sender;
+- (void)alignJustified:(id)sender;
+- (void)alignLeft:(id)sender;
+- (void)alignRight:(id)sender;
+
+- (void)checkSpelling:(id)sender;
+- (void)showGuessPanel:(id)sender;
+- (void)performFindPanelAction:(id)sender;
+
+- (void)startSpeaking:(id)sender;
+- (void)stopSpeaking:(id)sender;
+
+- (void)moveToBeginningOfSentence:(id)sender;
+- (void)moveToBeginningOfSentenceAndModifySelection:(id)sender;
+- (void)moveToEndOfSentence:(id)sender;
+- (void)moveToEndOfSentenceAndModifySelection:(id)sender;
+- (void)selectSentence:(id)sender;
+
+/* 
+The following methods are declared in NSResponder.h.
+WebView overrides each method in this list, providing
+a custom implementation for each.
+    
+- (void)capitalizeWord:(id)sender;
+- (void)centerSelectionInVisibleArea:(id)sender;
+- (void)changeCaseOfLetter:(id)sender;
+- (void)complete:(id)sender;
+- (void)deleteBackward:(id)sender;
+- (void)deleteBackwardByDecomposingPreviousCharacter:(id)sender;
+- (void)deleteForward:(id)sender;
+- (void)deleteToBeginningOfLine:(id)sender;
+- (void)deleteToBeginningOfParagraph:(id)sender;
+- (void)deleteToEndOfLine:(id)sender;
+- (void)deleteToEndOfParagraph:(id)sender;
+- (void)deleteWordBackward:(id)sender;
+- (void)deleteWordForward:(id)sender;
+- (void)indent:(id)sender;
+- (void)insertBacktab:(id)sender;
+- (void)insertNewline:(id)sender;
+- (void)insertParagraphSeparator:(id)sender;
+- (void)insertTab:(id)sender;
+- (void)lowercaseWord:(id)sender;
+- (void)moveBackward:(id)sender;
+- (void)moveBackwardAndModifySelection:(id)sender;
+- (void)moveDown:(id)sender;
+- (void)moveDownAndModifySelection:(id)sender;
+- (void)moveForward:(id)sender;
+- (void)moveForwardAndModifySelection:(id)sender;
+- (void)moveLeft:(id)sender;
+- (void)moveLeftAndModifySelection:(id)sender;
+- (void)moveRight:(id)sender;
+- (void)moveRightAndModifySelection:(id)sender;
+- (void)moveToBeginningOfDocument:(id)sender;
+- (void)moveToBeginningOfDocumentAndModifySelection:(id)sender;
+- (void)moveToBeginningOfLine:(id)sender;
+- (void)moveToBeginningOfLineAndModifySelection:(id)sender;
+- (void)moveToBeginningOfParagraph:(id)sender;
+- (void)moveToBeginningOfParagraphAndModifySelection:(id)sender;
+- (void)moveToEndOfDocument:(id)sender;
+- (void)moveToEndOfDocumentAndModifySelection:(id)sender;
+- (void)moveToEndOfLine:(id)sender;
+- (void)moveToEndOfLineAndModifySelection:(id)sender;
+- (void)moveToEndOfParagraph:(id)sender;
+- (void)moveToEndOfParagraphAndModifySelection:(id)sender;
+- (void)moveUp:(id)sender;
+- (void)moveUpAndModifySelection:(id)sender;
+- (void)moveWordBackward:(id)sender;
+- (void)moveWordBackwardAndModifySelection:(id)sender;
+- (void)moveWordForward:(id)sender;
+- (void)moveWordForwardAndModifySelection:(id)sender;
+- (void)moveWordLeft:(id)sender;
+- (void)moveWordLeftAndModifySelection:(id)sender;
+- (void)moveWordRight:(id)sender;
+- (void)moveWordRightAndModifySelection:(id)sender;
+- (void)pageDown:(id)sender;
+- (void)pageUp:(id)sender;
+- (void)scrollLineDown:(id)sender;
+- (void)scrollLineUp:(id)sender;
+- (void)scrollPageDown:(id)sender;
+- (void)scrollPageUp:(id)sender;
+- (void)selectAll:(id)sender;
+- (void)selectLine:(id)sender;
+- (void)selectParagraph:(id)sender;
+- (void)selectWord:(id)sender;
+- (void)uppercaseWord:(id)sender;
+*/
+ 
+@end
+
+#undef WebNSInteger