| /* | 
 |  * 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 |