Adding 2006 to the copyright years for headers I changed earlier.
[WebKit-https.git] / WebKit / WebView / WebView.h
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 initWithFrame:frameName:groupName:
175     @abstract The designated initializer for WebView.
176     @discussion Initialize a WebView with the supplied parameters. This method will 
177     create a main WebFrame with the view. Passing a top level frame name is useful if you
178     handle a targetted frame navigation that would normally open a window in some other 
179     way that still ends up creating a new WebView.
180     @param frame The frame used to create the view.
181     @param frameName The name to use for the top level frame. May be nil.
182     @param groupName The name of the webView set to which this webView will be added.  May be nil.
183     @result Returns an initialized WebView.
184 */
185 - (id)initWithFrame:(NSRect)frame frameName:(NSString *)frameName groupName:(NSString *)groupName;
186
187 /*!
188     @method close
189     @abstract Cancels any pending load operations. Once the receiver is closed it will no longer
190     respond to new requests or fire any more delegate methods.
191     @discussion A garbage collected application is required to call close when the receiver is no longer needed.
192     The close method will be called automatically when the window or hostWindow closes and shouldCloseWithWindow returns YES.
193     A non-garbage collected application can still call close, providing a convenient way to prevent receiver
194     from doing any more loading and firing any future delegate methods.
195 */
196 - (void)close;
197
198 /*!
199     @method setShouldCloseWithWindow:
200     @abstract Set whether the receiver closes when either it's window or hostWindow closes.
201     @param close YES if the receiver should close when either it's window or hostWindow closes, otherwise NO.
202 */
203 - (void)setShouldCloseWithWindow:(BOOL)close;
204
205 /*!
206     @method shouldCloseWithWindow
207     @abstract Returns whether the receiver closes when either it's window or hostWindow closes.
208     @discussion Defaults to YES in garbage collected applications, otherwise NO to maintain backwards compatibility.
209     @result YES if the receiver closes when either it's window or hostWindow closes, otherwise NO.
210 */
211 - (BOOL)shouldCloseWithWindow;
212
213 /*!
214     @method setUIDelegate:
215     @abstract Set the WebView's WebUIDelegate.
216     @param delegate The WebUIDelegate to set as the delegate.
217 */    
218 - (void)setUIDelegate:(id)delegate;
219
220 /*!
221     @method UIDelegate
222     @abstract Return the WebView's WebUIDelegate.
223     @result The WebView's WebUIDelegate.
224 */
225 - (id)UIDelegate;
226
227 /*!
228     @method setResourceLoadDelegate:
229     @abstract Set the WebView's WebResourceLoadDelegate load delegate.
230     @param delegate The WebResourceLoadDelegate to set as the load delegate.
231 */
232 - (void)setResourceLoadDelegate:(id)delegate;
233
234 /*!
235     @method resourceLoadDelegate
236     @result Return the WebView's WebResourceLoadDelegate.
237 */    
238 - (id)resourceLoadDelegate;
239
240 /*!
241     @method setDownloadDelegate:
242     @abstract Set the WebView's WebDownloadDelegate.
243     @discussion The download delegate is retained by WebDownload when any downloads are in progress.
244     @param delegate The WebDownloadDelegate to set as the download delegate.
245 */    
246 - (void)setDownloadDelegate:(id)delegate;
247
248 /*!
249     @method downloadDelegate
250     @abstract Return the WebView's WebDownloadDelegate.
251     @result The WebView's WebDownloadDelegate.
252 */    
253 - (id)downloadDelegate;
254
255 /*!
256     @method setFrameLoadDelegate:
257     @abstract Set the WebView's WebFrameLoadDelegate delegate.
258     @param delegate The WebFrameLoadDelegate to set as the delegate.
259 */    
260 - (void)setFrameLoadDelegate:(id)delegate;
261
262 /*!
263     @method frameLoadDelegate
264     @abstract Return the WebView's WebFrameLoadDelegate delegate.
265     @result The WebView's WebFrameLoadDelegate delegate.
266 */    
267 - (id)frameLoadDelegate;
268
269 /*!
270     @method setPolicyDelegate:
271     @abstract Set the WebView's WebPolicyDelegate delegate.
272     @param delegate The WebPolicyDelegate to set as the delegate.
273 */    
274 - (void)setPolicyDelegate:(id)delegate;
275
276 /*!
277     @method policyDelegate
278     @abstract Return the WebView's WebPolicyDelegate.
279     @result The WebView's WebPolicyDelegate.
280 */    
281 - (id)policyDelegate;
282
283 /*!
284     @method mainFrame
285     @abstract Return the top level frame.  
286     @discussion Note that even document that are not framesets will have a
287     mainFrame.
288     @result The main frame.
289 */    
290 - (WebFrame *)mainFrame;
291
292 /*!
293     @method selectedFrame
294     @abstract Return the frame that has the active selection.  
295     @discussion Returns the frame that contains the first responder, if any. Otherwise returns the
296     frame that contains a non-zero-length selection, if any. Returns nil if no frame meets these criteria.
297     @result The selected frame.
298 */
299 - (WebFrame *)selectedFrame;
300
301 /*!
302     @method backForwardList
303     @result The backforward list for this webView.
304 */    
305 - (WebBackForwardList *)backForwardList;
306
307 /*!
308     @method setMaintainsBackForwardList:
309     @abstract Enable or disable the use of a backforward list for this webView.
310     @param flag Turns use of the back forward list on or off
311 */    
312 - (void)setMaintainsBackForwardList:(BOOL)flag;
313
314 /*!
315     @method goBack
316     @abstract Go back to the previous URL in the backforward list.
317     @result YES if able to go back in the backforward list, NO otherwise.
318 */    
319 - (BOOL)goBack;
320
321 /*!
322     @method goForward
323     @abstract Go forward to the next URL in the backforward list.
324     @result YES if able to go forward in the backforward list, NO otherwise.
325 */    
326 - (BOOL)goForward;
327
328 /*!
329     @method goToBackForwardItem:
330     @abstract Go back or forward to an item in the backforward list.
331     @result YES if able to go to the item, NO otherwise.
332 */    
333 - (BOOL)goToBackForwardItem:(WebHistoryItem *)item;
334
335 /*!
336     @method setTextSizeMultiplier:
337     @abstract Change the size of the text rendering in views managed by this webView.
338     @param multiplier A fractional percentage value, 1.0 is 100%.
339 */    
340 - (void)setTextSizeMultiplier:(float)multiplier;
341
342 /*!
343     @method textSizeMultiplier
344     @result The text size multipler.
345 */    
346 - (float)textSizeMultiplier;
347
348 /*!
349     @method setApplicationNameForUserAgent:
350     @abstract Set the application name. 
351     @discussion This name will be used in user-agent strings
352     that are chosen for best results in rendering web pages.
353     @param applicationName The application name
354 */
355 - (void)setApplicationNameForUserAgent:(NSString *)applicationName;
356
357 /*!
358     @method applicationNameForUserAgent
359     @result The name of the application as used in the user-agent string.
360 */
361 - (NSString *)applicationNameForUserAgent;
362
363 /*!
364     @method setCustomUserAgent:
365     @abstract Set the user agent. 
366     @discussion Setting this means that the webView should use this user-agent string
367     instead of constructing a user-agent string for each URL. Setting it to nil
368     causes the webView to construct the user-agent string for each URL
369     for best results rendering web pages.
370     @param userAgentString The user agent description
371 */
372 - (void)setCustomUserAgent:(NSString *)userAgentString;
373
374 /*!
375     @method customUserAgent
376     @result The custom user-agent string or nil if no custom user-agent string has been set.
377 */
378 - (NSString *)customUserAgent;
379
380 /*!
381     @method userAgentForURL:
382     @abstract Get the appropriate user-agent string for a particular URL.
383     @param URL The URL.
384     @result The user-agent string for the supplied URL.
385 */
386 - (NSString *)userAgentForURL:(NSURL *)URL;
387
388
389 /*!
390     @method supportsTextEncoding
391     @abstract Find out if the current web page supports text encodings.
392     @result YES if the document view of the current web page can
393     support different text encodings.
394 */
395 - (BOOL)supportsTextEncoding;
396
397 /*!
398     @method setCustomTextEncodingName:
399     @discussion Make the page display with a different text encoding; stops any load in progress.
400     The text encoding passed in overrides the normal text encoding smarts including
401     what's specified in a web page's header or HTTP response.
402     The text encoding automatically goes back to the default when the top level frame
403     changes to a new location.
404     Setting the text encoding name to nil makes the webView use default encoding rules.
405     @param encoding The text encoding name to use to display a page or nil.
406 */
407 - (void)setCustomTextEncodingName:(NSString *)encodingName;
408
409 /*!
410     @method customTextEncodingName
411     @result The custom text encoding name or nil if no custom text encoding name has been set.
412 */
413 - (NSString *)customTextEncodingName;
414
415 /*!
416     @method setMediaStyle:
417     @discussion Set the media style for the WebView.  The mediaStyle will override the normal value
418     of the CSS media property.  Setting the value to nil will restore the normal value.
419     @param mediaStyle The value to use for the CSS media property.
420 */
421 - (void)setMediaStyle:(NSString *)mediaStyle;
422
423 /*!
424     @method mediaStyle
425     @result mediaStyle The value to use for the CSS media property, as set by setMediaStyle:.  It
426     will be nil unless set by that method.
427 */
428 - (NSString *)mediaStyle;
429
430 /*!
431     @method stringByEvaluatingJavaScriptFromString:
432     @param script The text of the JavaScript.
433     @result The result of the script, converted to a string, or nil for failure.
434 */
435 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
436
437 /*!
438     @method windowScriptObject
439     @discussion windowScriptObject return a WebScriptObject that represents the
440     window object from the script environment.
441     @result Returns the window object from the script environment.
442 */
443 - (WebScriptObject *)windowScriptObject;
444
445 /*!
446     @method setPreferences:
447     @param preferences The preferences to use for the webView.
448     @abstract Override the standard setting for the webView. 
449 */
450 - (void)setPreferences: (WebPreferences *)prefs;
451
452 /*!
453     @method preferences
454     @result Returns the preferences used by this webView.
455     @discussion This method will return [WebPreferences standardPreferences] if no
456     other instance of WebPreferences has been set.
457 */
458 - (WebPreferences *)preferences;
459
460 /*!
461     @method setPreferencesIdentifier:
462     @param anIdentifier The string to use a prefix for storing values for this WebView in the user
463     defaults database.
464     @discussion If the WebPreferences for this WebView are stored in the user defaults database, the
465     string set in this method will be used a key prefix.
466 */
467 - (void)setPreferencesIdentifier:(NSString *)anIdentifier;
468
469 /*!
470     @method preferencesIdentifier
471     @result Returns the WebPreferences key prefix.
472 */
473 - (NSString *)preferencesIdentifier;
474
475
476 /*!
477     @method setHostWindow:
478     @param hostWindow The host window for the web view.
479     @discussion Parts of WebKit (such as plug-ins and JavaScript) depend on a window to function
480     properly. Set a host window so these parts continue to function even when the web view is
481     not in an actual window.
482 */
483 - (void)setHostWindow:(NSWindow *)hostWindow;
484
485 /*!
486     @method hostWindow
487     @result The host window for the web view.
488 */
489 - (NSWindow *)hostWindow;
490
491 /*!
492     @method searchFor:direction:caseSensitive:
493     @abstract Searches a document view for a string and highlights the string if it is found.
494     Starts the search from the current selection.  Will search across all frames.
495     @param string The string to search for.
496     @param forward YES to search forward, NO to seach backwards.
497     @param caseFlag YES to for case-sensitive search, NO for case-insensitive search.
498     @result YES if found, NO if not found.
499 */
500 - (BOOL)searchFor:(NSString *)string direction:(BOOL)forward caseSensitive:(BOOL)caseFlag wrap:(BOOL)wrapFlag;
501
502 /*!
503     @method registerViewClass:representationClass:forMIMEType:
504     @discussion Register classes that implement WebDocumentView and WebDocumentRepresentation respectively.
505     A document class may register for a primary MIME type by excluding
506     a subtype, i.e. "video/" will match the document class with
507     all video types.  More specific matching takes precedence
508     over general matching.
509     @param viewClass The WebDocumentView class to use to render data for a given MIME type.
510     @param representationClass The WebDocumentRepresentation class to use to represent data of the given MIME type.
511     @param MIMEType The MIME type to represent with an object of the given class.
512 */
513 + (void)registerViewClass:(Class)viewClass representationClass:(Class)representationClass forMIMEType:(NSString *)MIMEType;
514
515
516 /*!
517     @method setGroupName:
518     @param groupName The name of the group for this WebView.
519     @discussion JavaScript may access named frames within the same group. 
520 */
521 - (void)setGroupName:(NSString *)groupName;
522
523 /*!
524     @method groupName
525     @discussion The group name for this WebView.
526 */
527 - (NSString *)groupName;
528
529 /*!
530     @method estimatedProgress
531     @discussion An estimate of the percent complete for a document load.  This
532     value will range from 0 to 1.0 and, once a load completes, will remain at 1.0 
533     until a new load starts, at which point it will be reset to 0.  The value is an
534     estimate based on the total number of bytes expected to be received
535     for a document, including all it's possible subresources.  For more accurate progress
536     indication it is recommended that you implement a WebFrameLoadDelegate and a
537     WebResourceLoadDelegate.
538 */
539 - (double)estimatedProgress;
540
541 /*!
542     @method isLoading
543     @discussion Returns YES if there are any pending loads.
544 */
545 - (BOOL)isLoading;
546
547 /*!
548     @method elementAtPoint:
549     @param point A point in the coordinates of the WebView
550     @result An element dictionary describing the point
551 */
552 - (NSDictionary *)elementAtPoint:(NSPoint)point;
553
554 /*!
555     @method pasteboardTypesForSelection
556     @abstract Returns the pasteboard types that WebView can use for the current selection
557 */
558 - (NSArray *)pasteboardTypesForSelection;
559
560 /*!
561     @method writeSelectionWithPasteboardTypes:toPasteboard:
562     @abstract Writes the current selection to the pasteboard
563     @param types The types that WebView will write to the pasteboard
564     @param pasteboard The pasteboard to write to
565 */
566 - (void)writeSelectionWithPasteboardTypes:(NSArray *)types toPasteboard:(NSPasteboard *)pasteboard;
567
568 /*!
569     @method pasteboardTypesForElement:
570     @abstract Returns the pasteboard types that WebView can use for an element
571     @param element The element
572 */
573 - (NSArray *)pasteboardTypesForElement:(NSDictionary *)element;
574
575 /*!
576     @method writeElement:withPasteboardTypes:toPasteboard:
577     @abstract Writes an element to the pasteboard
578     @param element The element to write to the pasteboard
579     @param types The types that WebView will write to the pasteboard
580     @param pasteboard The pasteboard to write to
581 */
582 - (void)writeElement:(NSDictionary *)element withPasteboardTypes:(NSArray *)types toPasteboard:(NSPasteboard *)pasteboard;
583
584 /*!
585     @method moveDragCaretToPoint:
586     @param point A point in the coordinates of the WebView
587     @discussion This method moves the caret that shows where something being dragged will be dropped. It may cause the WebView to scroll
588     to make the new position of the drag caret visible.
589 */
590 - (void)moveDragCaretToPoint:(NSPoint)point;
591
592 /*!
593     @method removeDragCaret
594     @abstract Removes the drag caret from the WebView
595 */
596 - (void)removeDragCaret;
597
598 /*!
599     @method setDrawsBackground:
600     @param drawsBackround YES to cause the receiver to draw a default white background, NO otherwise.
601     @abstract Sets whether the receiver draws a default white background when the loaded page has no background specified.
602 */
603 - (void)setDrawsBackground:(BOOL)drawsBackround;
604
605 /*!
606     @method drawsBackground
607     @result Returns YES if the receiver draws a default white background, NO otherwise.
608 */
609 - (BOOL)drawsBackground;
610
611 /*!
612     @method setMainFrameURL:
613     @param URLString The URL to load in the mainFrame.
614 */
615 - (void)setMainFrameURL:(NSString *)URLString;
616
617 /*!
618     @method mainFrameURL
619     @result Returns the main frame's current URL.
620 */
621 - (NSString *)mainFrameURL;
622
623 /*!
624     @method mainFrameDocument
625     @result Returns the main frame's DOMDocument.
626 */
627 - (DOMDocument *)mainFrameDocument;
628
629 /*!
630     @method mainFrameTitle
631     @result Returns the main frame's title if any, otherwise an empty string.
632 */
633 - (NSString *)mainFrameTitle;
634
635 /*!
636     @method mainFrameIcon
637     @discussion The methods returns the site icon for the current page loaded in the mainFrame.
638     @result Returns the main frame's icon if any, otherwise nil.
639 */
640 - (NSImage *)mainFrameIcon;
641
642 @end
643
644
645 @interface WebView (WebIBActions) <NSUserInterfaceValidations>
646 - (IBAction)takeStringURLFrom:(id)sender;
647 - (IBAction)stopLoading:(id)sender;
648 - (IBAction)reload:(id)sender;
649 - (BOOL)canGoBack;
650 - (IBAction)goBack:(id)sender;
651 - (BOOL)canGoForward;
652 - (IBAction)goForward:(id)sender;
653 - (BOOL)canMakeTextLarger;
654 - (IBAction)makeTextLarger:(id)sender;
655 - (BOOL)canMakeTextSmaller;
656 - (IBAction)makeTextSmaller:(id)sender;
657 - (BOOL)canMakeTextStandardSize;
658 - (IBAction)makeTextStandardSize:(id)sender;
659 - (IBAction)toggleContinuousSpellChecking:(id)sender;
660 - (IBAction)toggleSmartInsertDelete:(id)sender;
661 @end
662
663
664 // WebView editing support
665
666 extern NSString * const WebViewDidBeginEditingNotification;
667 extern NSString * const WebViewDidChangeNotification;
668 extern NSString * const WebViewDidEndEditingNotification;
669 extern NSString * const WebViewDidChangeTypingStyleNotification;
670 extern NSString * const WebViewDidChangeSelectionNotification;
671
672 @interface WebView (WebViewCSS)
673 - (DOMCSSStyleDeclaration *)computedStyleForElement:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
674 @end
675
676 @interface WebView (WebViewEditing)
677 - (DOMRange *)editableDOMRangeForPoint:(NSPoint)point;
678 - (void)setSelectedDOMRange:(DOMRange *)range affinity:(NSSelectionAffinity)selectionAffinity;
679 - (DOMRange *)selectedDOMRange;
680 - (NSSelectionAffinity)selectionAffinity;
681 - (BOOL)maintainsInactiveSelection;
682 - (void)setEditable:(BOOL)flag;
683 - (BOOL)isEditable;
684 - (void)setTypingStyle:(DOMCSSStyleDeclaration *)style;
685 - (DOMCSSStyleDeclaration *)typingStyle;
686 - (void)setSmartInsertDeleteEnabled:(BOOL)flag;
687 - (BOOL)smartInsertDeleteEnabled;
688 - (void)setContinuousSpellCheckingEnabled:(BOOL)flag;
689 - (BOOL)isContinuousSpellCheckingEnabled;
690 - (WebNSInteger)spellCheckerDocumentTag;
691 - (NSUndoManager *)undoManager;
692 - (void)setEditingDelegate:(id)delegate;
693 - (id)editingDelegate;
694 - (DOMCSSStyleDeclaration *)styleDeclarationWithText:(NSString *)text;
695 @end
696
697 @interface WebView (WebViewUndoableEditing)
698 - (void)replaceSelectionWithNode:(DOMNode *)node; 
699 - (void)replaceSelectionWithText:(NSString *)text;    
700 - (void)replaceSelectionWithMarkupString:(NSString *)markupString;
701 - (void)replaceSelectionWithArchive:(WebArchive *)archive;
702 - (void)deleteSelection;    
703 - (void)applyStyle:(DOMCSSStyleDeclaration *)style;
704 @end
705
706 @interface WebView (WebViewEditingActions)
707
708 - (void)copy:(id)sender;
709 - (void)cut:(id)sender;
710 - (void)paste:(id)sender;
711 - (void)copyFont:(id)sender;
712 - (void)pasteFont:(id)sender;
713 - (void)delete:(id)sender;
714 - (void)pasteAsPlainText:(id)sender;
715 - (void)pasteAsRichText:(id)sender;
716
717 - (void)changeFont:(id)sender;
718 - (void)changeAttributes:(id)sender;
719 - (void)changeDocumentBackgroundColor:(id)sender;
720 - (void)changeColor:(id)sender;
721
722 - (void)alignCenter:(id)sender;
723 - (void)alignJustified:(id)sender;
724 - (void)alignLeft:(id)sender;
725 - (void)alignRight:(id)sender;
726
727 - (void)checkSpelling:(id)sender;
728 - (void)showGuessPanel:(id)sender;
729 - (void)performFindPanelAction:(id)sender;
730
731 - (void)startSpeaking:(id)sender;
732 - (void)stopSpeaking:(id)sender;
733
734 - (void)moveToBeginningOfSentence:(id)sender;
735 - (void)moveToBeginningOfSentenceAndModifySelection:(id)sender;
736 - (void)moveToEndOfSentence:(id)sender;
737 - (void)moveToEndOfSentenceAndModifySelection:(id)sender;
738 - (void)selectSentence:(id)sender;
739
740 /* 
741 The following methods are declared in NSResponder.h.
742 WebView overrides each method in this list, providing
743 a custom implementation for each.
744     
745 - (void)capitalizeWord:(id)sender;
746 - (void)centerSelectionInVisibleArea:(id)sender;
747 - (void)changeCaseOfLetter:(id)sender;
748 - (void)complete:(id)sender;
749 - (void)deleteBackward:(id)sender;
750 - (void)deleteBackwardByDecomposingPreviousCharacter:(id)sender;
751 - (void)deleteForward:(id)sender;
752 - (void)deleteToBeginningOfLine:(id)sender;
753 - (void)deleteToBeginningOfParagraph:(id)sender;
754 - (void)deleteToEndOfLine:(id)sender;
755 - (void)deleteToEndOfParagraph:(id)sender;
756 - (void)deleteWordBackward:(id)sender;
757 - (void)deleteWordForward:(id)sender;
758 - (void)indent:(id)sender;
759 - (void)insertBacktab:(id)sender;
760 - (void)insertNewline:(id)sender;
761 - (void)insertParagraphSeparator:(id)sender;
762 - (void)insertTab:(id)sender;
763 - (void)lowercaseWord:(id)sender;
764 - (void)moveBackward:(id)sender;
765 - (void)moveBackwardAndModifySelection:(id)sender;
766 - (void)moveDown:(id)sender;
767 - (void)moveDownAndModifySelection:(id)sender;
768 - (void)moveForward:(id)sender;
769 - (void)moveForwardAndModifySelection:(id)sender;
770 - (void)moveLeft:(id)sender;
771 - (void)moveLeftAndModifySelection:(id)sender;
772 - (void)moveRight:(id)sender;
773 - (void)moveRightAndModifySelection:(id)sender;
774 - (void)moveToBeginningOfDocument:(id)sender;
775 - (void)moveToBeginningOfDocumentAndModifySelection:(id)sender;
776 - (void)moveToBeginningOfLine:(id)sender;
777 - (void)moveToBeginningOfLineAndModifySelection:(id)sender;
778 - (void)moveToBeginningOfParagraph:(id)sender;
779 - (void)moveToBeginningOfParagraphAndModifySelection:(id)sender;
780 - (void)moveToEndOfDocument:(id)sender;
781 - (void)moveToEndOfDocumentAndModifySelection:(id)sender;
782 - (void)moveToEndOfLine:(id)sender;
783 - (void)moveToEndOfLineAndModifySelection:(id)sender;
784 - (void)moveToEndOfParagraph:(id)sender;
785 - (void)moveToEndOfParagraphAndModifySelection:(id)sender;
786 - (void)moveUp:(id)sender;
787 - (void)moveUpAndModifySelection:(id)sender;
788 - (void)moveWordBackward:(id)sender;
789 - (void)moveWordBackwardAndModifySelection:(id)sender;
790 - (void)moveWordForward:(id)sender;
791 - (void)moveWordForwardAndModifySelection:(id)sender;
792 - (void)moveWordLeft:(id)sender;
793 - (void)moveWordLeftAndModifySelection:(id)sender;
794 - (void)moveWordRight:(id)sender;
795 - (void)moveWordRightAndModifySelection:(id)sender;
796 - (void)pageDown:(id)sender;
797 - (void)pageUp:(id)sender;
798 - (void)scrollLineDown:(id)sender;
799 - (void)scrollLineUp:(id)sender;
800 - (void)scrollPageDown:(id)sender;
801 - (void)scrollPageUp:(id)sender;
802 - (void)selectAll:(id)sender;
803 - (void)selectLine:(id)sender;
804 - (void)selectParagraph:(id)sender;
805 - (void)selectWord:(id)sender;
806 - (void)uppercaseWord:(id)sender;
807 */
808  
809 @end
810
811 #undef WebNSInteger