webengine/osswebengine/WebKit/WebView/WebView.h
changeset 0 dd21522fd290
equal deleted inserted replaced
-1:000000000000 0:dd21522fd290
       
     1 /*
       
     2  * Copyright (C) 2003, 2004, 2005, 2006 Apple Computer, Inc.  All rights reserved.
       
     3  *
       
     4  * Redistribution and use in source and binary forms, with or without
       
     5  * modification, are permitted provided that the following conditions
       
     6  * are met:
       
     7  *
       
     8  * 1.  Redistributions of source code must retain the above copyright
       
     9  *     notice, this list of conditions and the following disclaimer. 
       
    10  * 2.  Redistributions in binary form must reproduce the above copyright
       
    11  *     notice, this list of conditions and the following disclaimer in the
       
    12  *     documentation and/or other materials provided with the distribution. 
       
    13  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
       
    14  *     its contributors may be used to endorse or promote products derived
       
    15  *     from this software without specific prior written permission. 
       
    16  *
       
    17  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
       
    18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
       
    19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
       
    20  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
       
    21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
       
    22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
       
    23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
       
    24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       
    25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
       
    26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
       
    27  */
       
    28 
       
    29 #import <Cocoa/Cocoa.h>
       
    30 
       
    31 #if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4
       
    32 #define WebNSInteger int
       
    33 #else
       
    34 #define WebNSInteger NSInteger
       
    35 #endif
       
    36 
       
    37 @class DOMCSSStyleDeclaration;
       
    38 @class DOMDocument;
       
    39 @class DOMElement;
       
    40 @class DOMNode;
       
    41 @class DOMRange;
       
    42 
       
    43 @class WebArchive;
       
    44 @class WebBackForwardList;
       
    45 @class WebDataSource;
       
    46 @class WebFrame;
       
    47 @class WebFrameView;
       
    48 @class WebHistoryItem;
       
    49 @class WebPreferences;
       
    50 @class WebScriptObject;
       
    51 @class WebViewPrivate;
       
    52 
       
    53 // Element dictionary keys
       
    54 extern NSString *WebElementDOMNodeKey;          // DOMNode of the element
       
    55 extern NSString *WebElementFrameKey;            // WebFrame of the element
       
    56 extern NSString *WebElementImageAltStringKey;   // NSString of the ALT attribute of the image element
       
    57 extern NSString *WebElementImageKey;            // NSImage of the image element
       
    58 extern NSString *WebElementImageRectKey;        // NSValue of an NSRect, the rect of the image element
       
    59 extern NSString *WebElementImageURLKey;         // NSURL of the image element
       
    60 extern NSString *WebElementIsSelectedKey;       // NSNumber of BOOL indicating whether the element is selected or not 
       
    61 extern NSString *WebElementLinkURLKey;          // NSURL of the link if the element is within an anchor
       
    62 extern NSString *WebElementLinkTargetFrameKey;  // WebFrame of the target of the anchor
       
    63 extern NSString *WebElementLinkTitleKey;        // NSString of the title of the anchor
       
    64 extern NSString *WebElementLinkLabelKey;        // NSString of the text within the anchor
       
    65 
       
    66 /*
       
    67     @discussion Notifications sent by WebView to mark the progress of loads.
       
    68     @constant WebViewProgressStartedNotification Posted whenever a load begins in the WebView, including
       
    69     a load that is initiated in a subframe.  After receiving this notification zero or more
       
    70     WebViewProgressEstimateChangedNotifications will be sent.  The userInfo will be nil.
       
    71     @constant WebViewProgressEstimateChangedNotification Posted whenever the value of
       
    72     estimatedProgress changes.  The userInfo will be nil.
       
    73     @constant WebViewProgressFinishedNotification Posted when the load for a WebView has finished.
       
    74     The userInfo will be nil.
       
    75 */
       
    76 extern NSString *WebViewProgressStartedNotification;
       
    77 extern NSString *WebViewProgressEstimateChangedNotification;
       
    78 extern NSString *WebViewProgressFinishedNotification;
       
    79 
       
    80 /*!
       
    81     @class WebView
       
    82     WebView manages the interaction between WebFrameViews and WebDataSources.  Modification
       
    83     of the policies and behavior of the WebKit is largely managed by WebViews and their
       
    84     delegates.
       
    85     
       
    86     <p>
       
    87     Typical usage:
       
    88     </p>
       
    89     <pre>
       
    90     WebView *webView;
       
    91     WebFrame *mainFrame;
       
    92     
       
    93     webView  = [[WebView alloc] initWithFrame: NSMakeRect (0,0,640,480)];
       
    94     mainFrame = [webView mainFrame];
       
    95     [mainFrame loadRequest:request];
       
    96     </pre>
       
    97     
       
    98     WebViews have the following delegates:  WebUIDelegate, WebResourceLoadDelegate,
       
    99     WebFrameLoadDelegate, and WebPolicyDelegate.
       
   100     
       
   101     WebKit depends on the WebView's WebUIDelegate for all window
       
   102     related management, including opening new windows and controlling the user interface
       
   103     elements in those windows.
       
   104     
       
   105     WebResourceLoadDelegate is used to monitor the progress of resources as they are
       
   106     loaded.  This delegate may be used to present users with a progress monitor.
       
   107     
       
   108     The WebFrameLoadDelegate receives messages when the URL in a WebFrame is
       
   109     changed.
       
   110     
       
   111     WebView's WebPolicyDelegate can make determinations about how
       
   112     content should be handled, based on the resource's URL and MIME type.
       
   113 */
       
   114 @interface WebView : NSView
       
   115 {
       
   116 @private
       
   117     WebViewPrivate *_private;
       
   118 }
       
   119 
       
   120 /*!
       
   121     @method canShowMIMEType:
       
   122     @abstract Checks if the WebKit can show content of a certain MIME type.
       
   123     @param MIMEType The MIME type to check.
       
   124     @result YES if the WebKit can show content with MIMEtype.
       
   125 */
       
   126 + (BOOL)canShowMIMEType:(NSString *)MIMEType;
       
   127 
       
   128 
       
   129 /*!
       
   130      @method canShowMIMETypeAsHTML:
       
   131      @abstract Checks if the the MIME type is a type that the WebKit will interpret as HTML.
       
   132      @param MIMEType The MIME type to check.
       
   133      @result YES if the MIMEtype in an HTML type.
       
   134 */
       
   135 + (BOOL)canShowMIMETypeAsHTML:(NSString *)MIMEType;
       
   136 
       
   137 /*!
       
   138     @method MIMETypesShownAsHTML
       
   139     @result Returns an array of NSStrings that describe the MIME types
       
   140     WebKit will attempt to render as HTML.
       
   141 */
       
   142 + (NSArray *)MIMETypesShownAsHTML;
       
   143 
       
   144 /*!
       
   145     @method setMIMETypesShownAsHTML:
       
   146     @discussion Sets the array of NSString MIME types that WebKit will
       
   147     attempt to render as HTML.  Typically you will retrieve the built-in
       
   148     array using MIMETypesShownAsHTML and add additional MIME types to that
       
   149     array.
       
   150 */
       
   151 + (void)setMIMETypesShownAsHTML:(NSArray *)MIMETypes;
       
   152 
       
   153 /*!
       
   154     @method URLFromPasteboard:
       
   155     @abstract Returns a URL from a pasteboard
       
   156     @param pasteboard The pasteboard with a URL
       
   157     @result A URL if the pasteboard has one. Nil if it does not.
       
   158     @discussion This method differs than NSURL's URLFromPasteboard method in that it tries multiple pasteboard types
       
   159     including NSURLPboardType to find a URL on the pasteboard.
       
   160 */
       
   161 + (NSURL *)URLFromPasteboard:(NSPasteboard *)pasteboard;
       
   162 
       
   163 /*!
       
   164     @method URLTitleFromPasteboard:
       
   165     @abstract Returns a URL title from a pasteboard
       
   166     @param pasteboard The pasteboard with a URL title
       
   167     @result A URL title if the pasteboard has one. Nil if it does not.
       
   168     @discussion This method returns a title that refers a URL on the pasteboard. An example of this is the link label
       
   169     which is the text inside the anchor tag.
       
   170 */
       
   171 + (NSString *)URLTitleFromPasteboard:(NSPasteboard *)pasteboard;
       
   172 
       
   173 /*!
       
   174     @method registerURLSchemeAsLocal:
       
   175     @abstract Adds the scheme to the list of schemes to be treated as local.
       
   176     @param scheme The scheme to register
       
   177 */
       
   178 + (void)registerURLSchemeAsLocal:(NSString *)scheme;
       
   179 
       
   180 /*!
       
   181     @method initWithFrame:frameName:groupName:
       
   182     @abstract The designated initializer for WebView.
       
   183     @discussion Initialize a WebView with the supplied parameters. This method will 
       
   184     create a main WebFrame with the view. Passing a top level frame name is useful if you
       
   185     handle a targetted frame navigation that would normally open a window in some other 
       
   186     way that still ends up creating a new WebView.
       
   187     @param frame The frame used to create the view.
       
   188     @param frameName The name to use for the top level frame. May be nil.
       
   189     @param groupName The name of the webView set to which this webView will be added.  May be nil.
       
   190     @result Returns an initialized WebView.
       
   191 */
       
   192 - (id)initWithFrame:(NSRect)frame frameName:(NSString *)frameName groupName:(NSString *)groupName;
       
   193 
       
   194 /*!
       
   195     @method close
       
   196     @abstract Closes the receiver, unloading its web page and canceling any pending loads.
       
   197     Once the receiver has closed, it will no longer respond to requests or fire delegate methods.
       
   198     (However, the -close method itself may fire delegate methods.)
       
   199     @discussion A garbage collected application is required to call close when the receiver is no longer needed.
       
   200     The close method will be called automatically when the window or hostWindow closes and shouldCloseWithWindow returns YES.
       
   201     A non-garbage collected application can still call close, providing a convenient way to prevent receiver
       
   202     from doing any more loading and firing any future delegate methods.
       
   203 */
       
   204 - (void)close;
       
   205 
       
   206 /*!
       
   207     @method setShouldCloseWithWindow:
       
   208     @abstract Set whether the receiver closes when either it's window or hostWindow closes.
       
   209     @param close YES if the receiver should close when either it's window or hostWindow closes, otherwise NO.
       
   210 */
       
   211 - (void)setShouldCloseWithWindow:(BOOL)close;
       
   212 
       
   213 /*!
       
   214     @method shouldCloseWithWindow
       
   215     @abstract Returns whether the receiver closes when either it's window or hostWindow closes.
       
   216     @discussion Defaults to YES in garbage collected applications, otherwise NO to maintain backwards compatibility.
       
   217     @result YES if the receiver closes when either it's window or hostWindow closes, otherwise NO.
       
   218 */
       
   219 - (BOOL)shouldCloseWithWindow;
       
   220 
       
   221 /*!
       
   222     @method setUIDelegate:
       
   223     @abstract Set the WebView's WebUIDelegate.
       
   224     @param delegate The WebUIDelegate to set as the delegate.
       
   225 */    
       
   226 - (void)setUIDelegate:(id)delegate;
       
   227 
       
   228 /*!
       
   229     @method UIDelegate
       
   230     @abstract Return the WebView's WebUIDelegate.
       
   231     @result The WebView's WebUIDelegate.
       
   232 */
       
   233 - (id)UIDelegate;
       
   234 
       
   235 /*!
       
   236     @method setResourceLoadDelegate:
       
   237     @abstract Set the WebView's WebResourceLoadDelegate load delegate.
       
   238     @param delegate The WebResourceLoadDelegate to set as the load delegate.
       
   239 */
       
   240 - (void)setResourceLoadDelegate:(id)delegate;
       
   241 
       
   242 /*!
       
   243     @method resourceLoadDelegate
       
   244     @result Return the WebView's WebResourceLoadDelegate.
       
   245 */    
       
   246 - (id)resourceLoadDelegate;
       
   247 
       
   248 /*!
       
   249     @method setDownloadDelegate:
       
   250     @abstract Set the WebView's WebDownloadDelegate.
       
   251     @discussion The download delegate is retained by WebDownload when any downloads are in progress.
       
   252     @param delegate The WebDownloadDelegate to set as the download delegate.
       
   253 */    
       
   254 - (void)setDownloadDelegate:(id)delegate;
       
   255 
       
   256 /*!
       
   257     @method downloadDelegate
       
   258     @abstract Return the WebView's WebDownloadDelegate.
       
   259     @result The WebView's WebDownloadDelegate.
       
   260 */    
       
   261 - (id)downloadDelegate;
       
   262 
       
   263 /*!
       
   264     @method setFrameLoadDelegate:
       
   265     @abstract Set the WebView's WebFrameLoadDelegate delegate.
       
   266     @param delegate The WebFrameLoadDelegate to set as the delegate.
       
   267 */    
       
   268 - (void)setFrameLoadDelegate:(id)delegate;
       
   269 
       
   270 /*!
       
   271     @method frameLoadDelegate
       
   272     @abstract Return the WebView's WebFrameLoadDelegate delegate.
       
   273     @result The WebView's WebFrameLoadDelegate delegate.
       
   274 */    
       
   275 - (id)frameLoadDelegate;
       
   276 
       
   277 /*!
       
   278     @method setPolicyDelegate:
       
   279     @abstract Set the WebView's WebPolicyDelegate delegate.
       
   280     @param delegate The WebPolicyDelegate to set as the delegate.
       
   281 */    
       
   282 - (void)setPolicyDelegate:(id)delegate;
       
   283 
       
   284 /*!
       
   285     @method policyDelegate
       
   286     @abstract Return the WebView's WebPolicyDelegate.
       
   287     @result The WebView's WebPolicyDelegate.
       
   288 */    
       
   289 - (id)policyDelegate;
       
   290 
       
   291 /*!
       
   292     @method mainFrame
       
   293     @abstract Return the top level frame.  
       
   294     @discussion Note that even document that are not framesets will have a
       
   295     mainFrame.
       
   296     @result The main frame.
       
   297 */    
       
   298 - (WebFrame *)mainFrame;
       
   299 
       
   300 /*!
       
   301     @method selectedFrame
       
   302     @abstract Return the frame that has the active selection.  
       
   303     @discussion Returns the frame that contains the first responder, if any. Otherwise returns the
       
   304     frame that contains a non-zero-length selection, if any. Returns nil if no frame meets these criteria.
       
   305     @result The selected frame.
       
   306 */
       
   307 - (WebFrame *)selectedFrame;
       
   308 
       
   309 /*!
       
   310     @method backForwardList
       
   311     @result The backforward list for this webView.
       
   312 */    
       
   313 - (WebBackForwardList *)backForwardList;
       
   314 
       
   315 /*!
       
   316     @method setMaintainsBackForwardList:
       
   317     @abstract Enable or disable the use of a backforward list for this webView.
       
   318     @param flag Turns use of the back forward list on or off
       
   319 */    
       
   320 - (void)setMaintainsBackForwardList:(BOOL)flag;
       
   321 
       
   322 /*!
       
   323     @method goBack
       
   324     @abstract Go back to the previous URL in the backforward list.
       
   325     @result YES if able to go back in the backforward list, NO otherwise.
       
   326 */    
       
   327 - (BOOL)goBack;
       
   328 
       
   329 /*!
       
   330     @method goForward
       
   331     @abstract Go forward to the next URL in the backforward list.
       
   332     @result YES if able to go forward in the backforward list, NO otherwise.
       
   333 */    
       
   334 - (BOOL)goForward;
       
   335 
       
   336 /*!
       
   337     @method goToBackForwardItem:
       
   338     @abstract Go back or forward to an item in the backforward list.
       
   339     @result YES if able to go to the item, NO otherwise.
       
   340 */    
       
   341 - (BOOL)goToBackForwardItem:(WebHistoryItem *)item;
       
   342 
       
   343 /*!
       
   344     @method setTextSizeMultiplier:
       
   345     @abstract Change the size of the text rendering in views managed by this webView.
       
   346     @param multiplier A fractional percentage value, 1.0 is 100%.
       
   347 */    
       
   348 - (void)setTextSizeMultiplier:(float)multiplier;
       
   349 
       
   350 /*!
       
   351     @method textSizeMultiplier
       
   352     @result The text size multipler.
       
   353 */    
       
   354 - (float)textSizeMultiplier;
       
   355 
       
   356 /*!
       
   357     @method setApplicationNameForUserAgent:
       
   358     @abstract Set the application name. 
       
   359     @discussion This name will be used in user-agent strings
       
   360     that are chosen for best results in rendering web pages.
       
   361     @param applicationName The application name
       
   362 */
       
   363 - (void)setApplicationNameForUserAgent:(NSString *)applicationName;
       
   364 
       
   365 /*!
       
   366     @method applicationNameForUserAgent
       
   367     @result The name of the application as used in the user-agent string.
       
   368 */
       
   369 - (NSString *)applicationNameForUserAgent;
       
   370 
       
   371 /*!
       
   372     @method setCustomUserAgent:
       
   373     @abstract Set the user agent. 
       
   374     @discussion Setting this means that the webView should use this user-agent string
       
   375     instead of constructing a user-agent string for each URL. Setting it to nil
       
   376     causes the webView to construct the user-agent string for each URL
       
   377     for best results rendering web pages.
       
   378     @param userAgentString The user agent description
       
   379 */
       
   380 - (void)setCustomUserAgent:(NSString *)userAgentString;
       
   381 
       
   382 /*!
       
   383     @method customUserAgent
       
   384     @result The custom user-agent string or nil if no custom user-agent string has been set.
       
   385 */
       
   386 - (NSString *)customUserAgent;
       
   387 
       
   388 /*!
       
   389     @method userAgentForURL:
       
   390     @abstract Get the appropriate user-agent string for a particular URL.
       
   391     @param URL The URL.
       
   392     @result The user-agent string for the supplied URL.
       
   393 */
       
   394 - (NSString *)userAgentForURL:(NSURL *)URL;
       
   395 
       
   396 
       
   397 /*!
       
   398     @method supportsTextEncoding
       
   399     @abstract Find out if the current web page supports text encodings.
       
   400     @result YES if the document view of the current web page can
       
   401     support different text encodings.
       
   402 */
       
   403 - (BOOL)supportsTextEncoding;
       
   404 
       
   405 /*!
       
   406     @method setCustomTextEncodingName:
       
   407     @discussion Make the page display with a different text encoding; stops any load in progress.
       
   408     The text encoding passed in overrides the normal text encoding smarts including
       
   409     what's specified in a web page's header or HTTP response.
       
   410     The text encoding automatically goes back to the default when the top level frame
       
   411     changes to a new location.
       
   412     Setting the text encoding name to nil makes the webView use default encoding rules.
       
   413     @param encoding The text encoding name to use to display a page or nil.
       
   414 */
       
   415 - (void)setCustomTextEncodingName:(NSString *)encodingName;
       
   416 
       
   417 /*!
       
   418     @method customTextEncodingName
       
   419     @result The custom text encoding name or nil if no custom text encoding name has been set.
       
   420 */
       
   421 - (NSString *)customTextEncodingName;
       
   422 
       
   423 /*!
       
   424     @method setMediaStyle:
       
   425     @discussion Set the media style for the WebView.  The mediaStyle will override the normal value
       
   426     of the CSS media property.  Setting the value to nil will restore the normal value.
       
   427     @param mediaStyle The value to use for the CSS media property.
       
   428 */
       
   429 - (void)setMediaStyle:(NSString *)mediaStyle;
       
   430 
       
   431 /*!
       
   432     @method mediaStyle
       
   433     @result mediaStyle The value to use for the CSS media property, as set by setMediaStyle:.  It
       
   434     will be nil unless set by that method.
       
   435 */
       
   436 - (NSString *)mediaStyle;
       
   437 
       
   438 /*!
       
   439     @method stringByEvaluatingJavaScriptFromString:
       
   440     @param script The text of the JavaScript.
       
   441     @result The result of the script, converted to a string, or nil for failure.
       
   442 */
       
   443 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
       
   444 
       
   445 /*!
       
   446     @method windowScriptObject
       
   447     @discussion windowScriptObject return a WebScriptObject that represents the
       
   448     window object from the script environment.
       
   449     @result Returns the window object from the script environment.
       
   450 */
       
   451 - (WebScriptObject *)windowScriptObject;
       
   452 
       
   453 /*!
       
   454     @method setPreferences:
       
   455     @param preferences The preferences to use for the webView.
       
   456     @abstract Override the standard setting for the webView. 
       
   457 */
       
   458 - (void)setPreferences: (WebPreferences *)prefs;
       
   459 
       
   460 /*!
       
   461     @method preferences
       
   462     @result Returns the preferences used by this webView.
       
   463     @discussion This method will return [WebPreferences standardPreferences] if no
       
   464     other instance of WebPreferences has been set.
       
   465 */
       
   466 - (WebPreferences *)preferences;
       
   467 
       
   468 /*!
       
   469     @method setPreferencesIdentifier:
       
   470     @param anIdentifier The string to use a prefix for storing values for this WebView in the user
       
   471     defaults database.
       
   472     @discussion If the WebPreferences for this WebView are stored in the user defaults database, the
       
   473     string set in this method will be used a key prefix.
       
   474 */
       
   475 - (void)setPreferencesIdentifier:(NSString *)anIdentifier;
       
   476 
       
   477 /*!
       
   478     @method preferencesIdentifier
       
   479     @result Returns the WebPreferences key prefix.
       
   480 */
       
   481 - (NSString *)preferencesIdentifier;
       
   482 
       
   483 
       
   484 /*!
       
   485     @method setHostWindow:
       
   486     @param hostWindow The host window for the web view.
       
   487     @discussion Parts of WebKit (such as plug-ins and JavaScript) depend on a window to function
       
   488     properly. Set a host window so these parts continue to function even when the web view is
       
   489     not in an actual window.
       
   490 */
       
   491 - (void)setHostWindow:(NSWindow *)hostWindow;
       
   492 
       
   493 /*!
       
   494     @method hostWindow
       
   495     @result The host window for the web view.
       
   496 */
       
   497 - (NSWindow *)hostWindow;
       
   498 
       
   499 /*!
       
   500     @method searchFor:direction:caseSensitive:
       
   501     @abstract Searches a document view for a string and highlights the string if it is found.
       
   502     Starts the search from the current selection.  Will search across all frames.
       
   503     @param string The string to search for.
       
   504     @param forward YES to search forward, NO to seach backwards.
       
   505     @param caseFlag YES to for case-sensitive search, NO for case-insensitive search.
       
   506     @result YES if found, NO if not found.
       
   507 */
       
   508 - (BOOL)searchFor:(NSString *)string direction:(BOOL)forward caseSensitive:(BOOL)caseFlag wrap:(BOOL)wrapFlag;
       
   509 
       
   510 /*!
       
   511     @method registerViewClass:representationClass:forMIMEType:
       
   512     @discussion Register classes that implement WebDocumentView and WebDocumentRepresentation respectively.
       
   513     A document class may register for a primary MIME type by excluding
       
   514     a subtype, i.e. "video/" will match the document class with
       
   515     all video types.  More specific matching takes precedence
       
   516     over general matching.
       
   517     @param viewClass The WebDocumentView class to use to render data for a given MIME type.
       
   518     @param representationClass The WebDocumentRepresentation class to use to represent data of the given MIME type.
       
   519     @param MIMEType The MIME type to represent with an object of the given class.
       
   520 */
       
   521 + (void)registerViewClass:(Class)viewClass representationClass:(Class)representationClass forMIMEType:(NSString *)MIMEType;
       
   522 
       
   523 
       
   524 /*!
       
   525     @method setGroupName:
       
   526     @param groupName The name of the group for this WebView.
       
   527     @discussion JavaScript may access named frames within the same group. 
       
   528 */
       
   529 - (void)setGroupName:(NSString *)groupName;
       
   530 
       
   531 /*!
       
   532     @method groupName
       
   533     @discussion The group name for this WebView.
       
   534 */
       
   535 - (NSString *)groupName;
       
   536 
       
   537 /*!
       
   538     @method estimatedProgress
       
   539     @discussion An estimate of the percent complete for a document load.  This
       
   540     value will range from 0 to 1.0 and, once a load completes, will remain at 1.0 
       
   541     until a new load starts, at which point it will be reset to 0.  The value is an
       
   542     estimate based on the total number of bytes expected to be received
       
   543     for a document, including all it's possible subresources.  For more accurate progress
       
   544     indication it is recommended that you implement a WebFrameLoadDelegate and a
       
   545     WebResourceLoadDelegate.
       
   546 */
       
   547 - (double)estimatedProgress;
       
   548 
       
   549 /*!
       
   550     @method isLoading
       
   551     @discussion Returns YES if there are any pending loads.
       
   552 */
       
   553 - (BOOL)isLoading;
       
   554 
       
   555 /*!
       
   556     @method elementAtPoint:
       
   557     @param point A point in the coordinates of the WebView
       
   558     @result An element dictionary describing the point
       
   559 */
       
   560 - (NSDictionary *)elementAtPoint:(NSPoint)point;
       
   561 
       
   562 /*!
       
   563     @method pasteboardTypesForSelection
       
   564     @abstract Returns the pasteboard types that WebView can use for the current selection
       
   565 */
       
   566 - (NSArray *)pasteboardTypesForSelection;
       
   567 
       
   568 /*!
       
   569     @method writeSelectionWithPasteboardTypes:toPasteboard:
       
   570     @abstract Writes the current selection to the pasteboard
       
   571     @param types The types that WebView will write to the pasteboard
       
   572     @param pasteboard The pasteboard to write to
       
   573 */
       
   574 - (void)writeSelectionWithPasteboardTypes:(NSArray *)types toPasteboard:(NSPasteboard *)pasteboard;
       
   575 
       
   576 /*!
       
   577     @method pasteboardTypesForElement:
       
   578     @abstract Returns the pasteboard types that WebView can use for an element
       
   579     @param element The element
       
   580 */
       
   581 - (NSArray *)pasteboardTypesForElement:(NSDictionary *)element;
       
   582 
       
   583 /*!
       
   584     @method writeElement:withPasteboardTypes:toPasteboard:
       
   585     @abstract Writes an element to the pasteboard
       
   586     @param element The element to write to the pasteboard
       
   587     @param types The types that WebView will write to the pasteboard
       
   588     @param pasteboard The pasteboard to write to
       
   589 */
       
   590 - (void)writeElement:(NSDictionary *)element withPasteboardTypes:(NSArray *)types toPasteboard:(NSPasteboard *)pasteboard;
       
   591 
       
   592 /*!
       
   593     @method moveDragCaretToPoint:
       
   594     @param point A point in the coordinates of the WebView
       
   595     @discussion This method moves the caret that shows where something being dragged will be dropped. It may cause the WebView to scroll
       
   596     to make the new position of the drag caret visible.
       
   597 */
       
   598 - (void)moveDragCaretToPoint:(NSPoint)point;
       
   599 
       
   600 /*!
       
   601     @method removeDragCaret
       
   602     @abstract Removes the drag caret from the WebView
       
   603 */
       
   604 - (void)removeDragCaret;
       
   605 
       
   606 /*!
       
   607     @method setDrawsBackground:
       
   608     @param drawsBackround YES to cause the receiver to draw a default white background, NO otherwise.
       
   609     @abstract Sets whether the receiver draws a default white background when the loaded page has no background specified.
       
   610 */
       
   611 - (void)setDrawsBackground:(BOOL)drawsBackround;
       
   612 
       
   613 /*!
       
   614     @method drawsBackground
       
   615     @result Returns YES if the receiver draws a default white background, NO otherwise.
       
   616 */
       
   617 - (BOOL)drawsBackground;
       
   618 
       
   619 /*!
       
   620     @method setMainFrameURL:
       
   621     @param URLString The URL to load in the mainFrame.
       
   622 */
       
   623 - (void)setMainFrameURL:(NSString *)URLString;
       
   624 
       
   625 /*!
       
   626     @method mainFrameURL
       
   627     @result Returns the main frame's current URL.
       
   628 */
       
   629 - (NSString *)mainFrameURL;
       
   630 
       
   631 /*!
       
   632     @method mainFrameDocument
       
   633     @result Returns the main frame's DOMDocument.
       
   634 */
       
   635 - (DOMDocument *)mainFrameDocument;
       
   636 
       
   637 /*!
       
   638     @method mainFrameTitle
       
   639     @result Returns the main frame's title if any, otherwise an empty string.
       
   640 */
       
   641 - (NSString *)mainFrameTitle;
       
   642 
       
   643 /*!
       
   644     @method mainFrameIcon
       
   645     @discussion The methods returns the site icon for the current page loaded in the mainFrame.
       
   646     @result Returns the main frame's icon if any, otherwise nil.
       
   647 */
       
   648 - (NSImage *)mainFrameIcon;
       
   649 
       
   650 @end
       
   651 
       
   652 
       
   653 @interface WebView (WebIBActions) <NSUserInterfaceValidations>
       
   654 - (IBAction)takeStringURLFrom:(id)sender;
       
   655 - (IBAction)stopLoading:(id)sender;
       
   656 - (IBAction)reload:(id)sender;
       
   657 - (BOOL)canGoBack;
       
   658 - (IBAction)goBack:(id)sender;
       
   659 - (BOOL)canGoForward;
       
   660 - (IBAction)goForward:(id)sender;
       
   661 - (BOOL)canMakeTextLarger;
       
   662 - (IBAction)makeTextLarger:(id)sender;
       
   663 - (BOOL)canMakeTextSmaller;
       
   664 - (IBAction)makeTextSmaller:(id)sender;
       
   665 - (BOOL)canMakeTextStandardSize;
       
   666 - (IBAction)makeTextStandardSize:(id)sender;
       
   667 - (IBAction)toggleContinuousSpellChecking:(id)sender;
       
   668 - (IBAction)toggleSmartInsertDelete:(id)sender;
       
   669 @end
       
   670 
       
   671 
       
   672 // WebView editing support
       
   673 
       
   674 extern NSString * const WebViewDidBeginEditingNotification;
       
   675 extern NSString * const WebViewDidChangeNotification;
       
   676 extern NSString * const WebViewDidEndEditingNotification;
       
   677 extern NSString * const WebViewDidChangeTypingStyleNotification;
       
   678 extern NSString * const WebViewDidChangeSelectionNotification;
       
   679 
       
   680 @interface WebView (WebViewCSS)
       
   681 - (DOMCSSStyleDeclaration *)computedStyleForElement:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
       
   682 @end
       
   683 
       
   684 @interface WebView (WebViewEditing)
       
   685 - (DOMRange *)editableDOMRangeForPoint:(NSPoint)point;
       
   686 - (void)setSelectedDOMRange:(DOMRange *)range affinity:(NSSelectionAffinity)selectionAffinity;
       
   687 - (DOMRange *)selectedDOMRange;
       
   688 - (NSSelectionAffinity)selectionAffinity;
       
   689 - (BOOL)maintainsInactiveSelection;
       
   690 - (void)setEditable:(BOOL)flag;
       
   691 - (BOOL)isEditable;
       
   692 - (void)setTypingStyle:(DOMCSSStyleDeclaration *)style;
       
   693 - (DOMCSSStyleDeclaration *)typingStyle;
       
   694 - (void)setSmartInsertDeleteEnabled:(BOOL)flag;
       
   695 - (BOOL)smartInsertDeleteEnabled;
       
   696 - (void)setContinuousSpellCheckingEnabled:(BOOL)flag;
       
   697 - (BOOL)isContinuousSpellCheckingEnabled;
       
   698 - (WebNSInteger)spellCheckerDocumentTag;
       
   699 - (NSUndoManager *)undoManager;
       
   700 - (void)setEditingDelegate:(id)delegate;
       
   701 - (id)editingDelegate;
       
   702 - (DOMCSSStyleDeclaration *)styleDeclarationWithText:(NSString *)text;
       
   703 @end
       
   704 
       
   705 @interface WebView (WebViewUndoableEditing)
       
   706 - (void)replaceSelectionWithNode:(DOMNode *)node; 
       
   707 - (void)replaceSelectionWithText:(NSString *)text;    
       
   708 - (void)replaceSelectionWithMarkupString:(NSString *)markupString;
       
   709 - (void)replaceSelectionWithArchive:(WebArchive *)archive;
       
   710 - (void)deleteSelection;    
       
   711 - (void)applyStyle:(DOMCSSStyleDeclaration *)style;
       
   712 @end
       
   713 
       
   714 @interface WebView (WebViewEditingActions)
       
   715 
       
   716 - (void)copy:(id)sender;
       
   717 - (void)cut:(id)sender;
       
   718 - (void)paste:(id)sender;
       
   719 - (void)copyFont:(id)sender;
       
   720 - (void)pasteFont:(id)sender;
       
   721 - (void)delete:(id)sender;
       
   722 - (void)pasteAsPlainText:(id)sender;
       
   723 - (void)pasteAsRichText:(id)sender;
       
   724 
       
   725 - (void)changeFont:(id)sender;
       
   726 - (void)changeAttributes:(id)sender;
       
   727 - (void)changeDocumentBackgroundColor:(id)sender;
       
   728 - (void)changeColor:(id)sender;
       
   729 
       
   730 - (void)alignCenter:(id)sender;
       
   731 - (void)alignJustified:(id)sender;
       
   732 - (void)alignLeft:(id)sender;
       
   733 - (void)alignRight:(id)sender;
       
   734 
       
   735 - (void)checkSpelling:(id)sender;
       
   736 - (void)showGuessPanel:(id)sender;
       
   737 - (void)performFindPanelAction:(id)sender;
       
   738 
       
   739 - (void)startSpeaking:(id)sender;
       
   740 - (void)stopSpeaking:(id)sender;
       
   741 
       
   742 - (void)moveToBeginningOfSentence:(id)sender;
       
   743 - (void)moveToBeginningOfSentenceAndModifySelection:(id)sender;
       
   744 - (void)moveToEndOfSentence:(id)sender;
       
   745 - (void)moveToEndOfSentenceAndModifySelection:(id)sender;
       
   746 - (void)selectSentence:(id)sender;
       
   747 
       
   748 /* 
       
   749 The following methods are declared in NSResponder.h.
       
   750 WebView overrides each method in this list, providing
       
   751 a custom implementation for each.
       
   752     
       
   753 - (void)capitalizeWord:(id)sender;
       
   754 - (void)centerSelectionInVisibleArea:(id)sender;
       
   755 - (void)changeCaseOfLetter:(id)sender;
       
   756 - (void)complete:(id)sender;
       
   757 - (void)deleteBackward:(id)sender;
       
   758 - (void)deleteBackwardByDecomposingPreviousCharacter:(id)sender;
       
   759 - (void)deleteForward:(id)sender;
       
   760 - (void)deleteToBeginningOfLine:(id)sender;
       
   761 - (void)deleteToBeginningOfParagraph:(id)sender;
       
   762 - (void)deleteToEndOfLine:(id)sender;
       
   763 - (void)deleteToEndOfParagraph:(id)sender;
       
   764 - (void)deleteWordBackward:(id)sender;
       
   765 - (void)deleteWordForward:(id)sender;
       
   766 - (void)indent:(id)sender;
       
   767 - (void)insertBacktab:(id)sender;
       
   768 - (void)insertNewline:(id)sender;
       
   769 - (void)insertParagraphSeparator:(id)sender;
       
   770 - (void)insertTab:(id)sender;
       
   771 - (void)lowercaseWord:(id)sender;
       
   772 - (void)moveBackward:(id)sender;
       
   773 - (void)moveBackwardAndModifySelection:(id)sender;
       
   774 - (void)moveDown:(id)sender;
       
   775 - (void)moveDownAndModifySelection:(id)sender;
       
   776 - (void)moveForward:(id)sender;
       
   777 - (void)moveForwardAndModifySelection:(id)sender;
       
   778 - (void)moveLeft:(id)sender;
       
   779 - (void)moveLeftAndModifySelection:(id)sender;
       
   780 - (void)moveRight:(id)sender;
       
   781 - (void)moveRightAndModifySelection:(id)sender;
       
   782 - (void)moveToBeginningOfDocument:(id)sender;
       
   783 - (void)moveToBeginningOfDocumentAndModifySelection:(id)sender;
       
   784 - (void)moveToBeginningOfLine:(id)sender;
       
   785 - (void)moveToBeginningOfLineAndModifySelection:(id)sender;
       
   786 - (void)moveToBeginningOfParagraph:(id)sender;
       
   787 - (void)moveToBeginningOfParagraphAndModifySelection:(id)sender;
       
   788 - (void)moveToEndOfDocument:(id)sender;
       
   789 - (void)moveToEndOfDocumentAndModifySelection:(id)sender;
       
   790 - (void)moveToEndOfLine:(id)sender;
       
   791 - (void)moveToEndOfLineAndModifySelection:(id)sender;
       
   792 - (void)moveToEndOfParagraph:(id)sender;
       
   793 - (void)moveToEndOfParagraphAndModifySelection:(id)sender;
       
   794 - (void)moveUp:(id)sender;
       
   795 - (void)moveUpAndModifySelection:(id)sender;
       
   796 - (void)moveWordBackward:(id)sender;
       
   797 - (void)moveWordBackwardAndModifySelection:(id)sender;
       
   798 - (void)moveWordForward:(id)sender;
       
   799 - (void)moveWordForwardAndModifySelection:(id)sender;
       
   800 - (void)moveWordLeft:(id)sender;
       
   801 - (void)moveWordLeftAndModifySelection:(id)sender;
       
   802 - (void)moveWordRight:(id)sender;
       
   803 - (void)moveWordRightAndModifySelection:(id)sender;
       
   804 - (void)pageDown:(id)sender;
       
   805 - (void)pageUp:(id)sender;
       
   806 - (void)scrollLineDown:(id)sender;
       
   807 - (void)scrollLineUp:(id)sender;
       
   808 - (void)scrollPageDown:(id)sender;
       
   809 - (void)scrollPageUp:(id)sender;
       
   810 - (void)selectAll:(id)sender;
       
   811 - (void)selectLine:(id)sender;
       
   812 - (void)selectParagraph:(id)sender;
       
   813 - (void)selectWord:(id)sender;
       
   814 - (void)uppercaseWord:(id)sender;
       
   815 */
       
   816  
       
   817 @end
       
   818 
       
   819 #undef WebNSInteger