- fix newlines to be consistent for all files in the COM directory
[WebKit-https.git] / WebKit / COM / Interfaces / IWebView.idl
1 /*
2  * Copyright (C) 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  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 cpp_quote("/*")
27 cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")
28 cpp_quote(" *")
29 cpp_quote(" * Redistribution and use in source and binary forms, with or without")
30 cpp_quote(" * modification, are permitted provided that the following conditions")
31 cpp_quote(" * are met:")
32 cpp_quote(" * 1. Redistributions of source code must retain the above copyright")
33 cpp_quote(" *    notice, this list of conditions and the following disclaimer.")
34 cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")
35 cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")
36 cpp_quote(" *    documentation and/or other materials provided with the distribution.")
37 cpp_quote(" *")
38 cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")
39 cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")
40 cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")
41 cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")
42 cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")
43 cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")
44 cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")
45 cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")
46 cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")
47 cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")
48 cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")
49 cpp_quote(" */")
50
51 import "oaidl.idl";
52 import "ocidl.idl";
53 import "IWebUIDelegate.idl";
54 import "IWebResourceLoadDelegate.idl";
55 import "IWebDownload.idl";
56 import "IWebFrameLoadDelegate.idl";
57 import "IWebPolicyDelegate.idl";
58 import "IWebBackForwardList.idl";
59 import "IWebHistoryItem.idl";
60 import "IWebPreferences.idl";
61 import "DOMCSS.idl";
62 import "IWebUndoManager.idl";
63 import "IWebEditingDelegate.idl";
64 import "DOMRange.idl";
65
66 interface IDOMCSSStyleDeclaration;
67 interface IDOMDocument;
68 interface IDOMElement;
69 interface IDOMNode;
70 interface IDOMRange;
71
72 interface IWebArchive;
73 interface IWebBackForwardList;
74 interface IWebDataSource;
75 interface IWebFrame;
76 interface IWebFrameView;
77 interface IWebHistoryItem;
78 interface IWebPreferences;
79 interface IWebScriptObject;
80
81 interface IWebUIDelegate;
82 interface IWebResourceLoadDelegate;
83 interface IWebDownloadDelegate;
84 interface IWebFrameLoadDelegate;
85 interface IWebPolicyDelegate;
86 interface IWebDocumentView;
87 interface IWebDocumentRepresentation;
88 interface IWebUndoManager;
89 interface IWebViewEditingDelegate;
90
91 /*!
92     @class WebView
93     WebView manages the interaction between WebFrameViews and WebDataSources.  Modification
94     of the policies and behavior of the WebKit is largely managed by WebViews and their
95     delegates.
96     
97     <p>
98     Typical usage:
99     </p>
100     <pre>
101     WebView *webView;
102     WebFrame *mainFrame;
103     
104     webView  = [[WebView alloc] initWithFrame: NSMakeRect (0,0,640,480)];
105     mainFrame = [webView mainFrame];
106     [mainFrame loadRequest:request];
107     </pre>
108     
109     WebViews have the following delegates:  WebUIDelegate, WebResourceLoadDelegate,
110     WebFrameLoadDelegate, and WebPolicyDelegate.
111     
112     WebKit depends on the WebView's WebUIDelegate for all window
113     related management, including opening new windows and controlling the user interface
114     elements in those windows.
115     
116     WebResourceLoadDelegate is used to monitor the progress of resources as they are
117     loaded.  This delegate may be used to present users with a progress monitor.
118     
119     The WebFrameLoadDelegate receives messages when the URL in a WebFrame is
120     changed.
121     
122     WebView's WebPolicyDelegate can make determinations about how
123     content should be handled, based on the resource's URL and MIME type.
124
125     @interface WebView : NSView
126 */
127 [
128     local,
129     object,
130     uuid(174BBEFD-058E-49c7-91DF-6F110AA4AC28),
131     pointer_default(unique)
132 ]
133 interface IWebView : IUnknown
134 {
135     /*!
136         @method canShowMIMEType:
137         @abstract Checks if the WebKit can show content of a certain MIME type.
138         @param MIMEType The MIME type to check.
139         @result YES if the WebKit can show content with MIMEtype.
140         + (BOOL)canShowMIMEType:(NSString *)MIMEType;
141     */
142     HRESULT canShowMIMEType([in] BSTR mimeType, [out, retval] BOOL* canShow);
143
144     /*!
145         @method canShowMIMETypeAsHTML:
146         @abstract Checks if the the MIME type is a type that the WebKit will interpret as HTML.
147         @param MIMEType The MIME type to check.
148         @result YES if the MIMEtype in an HTML type.
149         + (BOOL)canShowMIMETypeAsHTML:(NSString *)MIMEType;
150     */
151     HRESULT canShowMIMETypeAsHTML([in] BSTR mimeType, [out, retval] BOOL* canShow);
152
153     /*!
154         @method MIMETypesShownAsHTML
155         @result Returns an array of NSStrings that describe the MIME types
156         WebKit will attempt to render as HTML.
157         + (NSArray *)MIMETypesShownAsHTML;
158     */
159     HRESULT MIMETypesShownAsHTML([out] int* count, [out, retval] BSTR** mimeTypes);
160
161     /*!
162         @method setMIMETypesShownAsHTML:
163         @discussion Sets the array of NSString MIME types that WebKit will
164         attempt to render as HTML.  Typically you will retrieve the built-in
165         array using MIMETypesShownAsHTML and add additional MIME types to that
166         array.
167         + (void)setMIMETypesShownAsHTML:(NSArray *)MIMETypes;
168     */
169     HRESULT setMIMETypesShownAsHTML([in, size_is(cMimeTypes)] BSTR* mimeTypes, [in] int cMimeTypes);
170
171     /*!
172         @method URLFromPasteboard:
173         @abstract Returns a URL from a pasteboard
174         @param pasteboard The pasteboard with a URL
175         @result A URL if the pasteboard has one. Nil if it does not.
176         @discussion This method differs than NSURL's URLFromPasteboard method in that it tries multiple pasteboard types
177         including NSURLPboardType to find a URL on the pasteboard.
178         + (NSURL *)URLFromPasteboard:(NSPasteboard *)pasteboard;
179     */
180     HRESULT URLFromPasteboard([in] IDataObject* pasteboard, [out, retval] BSTR* url);
181
182     /*!
183         @method URLTitleFromPasteboard:
184         @abstract Returns a URL title from a pasteboard
185         @param pasteboard The pasteboard with a URL title
186         @result A URL title if the pasteboard has one. Nil if it does not.
187         @discussion This method returns a title that refers a URL on the pasteboard. An example of this is the link label
188         which is the text inside the anchor tag.
189         + (NSString *)URLTitleFromPasteboard:(NSPasteboard *)pasteboard;
190     */
191     HRESULT URLTitleFromPasteboard([in] IDataObject* pasteboard, [out, retval] BSTR* urlTitle);
192
193     /*!
194         @method initWithFrame:frameName:groupName:
195         @abstract The designated initializer for WebView.
196         @discussion Initialize a WebView with the supplied parameters. This method will 
197         create a main WebFrame with the view. Passing a top level frame name is useful if you
198         handle a targetted frame navigation that would normally open a window in some other 
199         way that still ends up creating a new WebView.
200         @param frame The frame used to create the view.
201         @param frameName The name to use for the top level frame. May be nil.
202         @param groupName The name of the webView set to which this webView will be added.  May be nil.
203         @result Returns an initialized WebView.
204         - (id)initWithFrame:(NSRect)frame frameName:(NSString *)frameName groupName:(NSString *)groupName;
205     */
206     HRESULT initWithFrame([in] RECT* frame, [in] BSTR frameName, [in] BSTR groupName);
207
208     /*!
209         @method setUIDelegate:
210         @abstract Set the WebView's WebUIDelegate.
211         @param delegate The WebUIDelegate to set as the delegate.
212         - (void)setUIDelegate:(id)delegate;
213     */
214     HRESULT setUIDelegate([in] IWebUIDelegate* d);
215
216     /*!
217         @method UIDelegate
218         @abstract Return the WebView's WebUIDelegate.
219         @result The WebView's WebUIDelegate.
220         - (id)UIDelegate;
221     */
222     HRESULT uiDelegate([retval, out] IWebUIDelegate** d);
223
224     /*!
225         @method setResourceLoadDelegate:
226         @abstract Set the WebView's WebResourceLoadDelegate load delegate.
227         @param delegate The WebResourceLoadDelegate to set as the load delegate.
228         - (void)setResourceLoadDelegate:(id)delegate;
229     */
230     HRESULT setResourceLoadDelegate([in] IWebResourceLoadDelegate* d);
231
232     /*!
233         @method resourceLoadDelegate
234         @result Return the WebView's WebResourceLoadDelegate.
235         - (id)resourceLoadDelegate;
236     */    
237     HRESULT resourceLoadDelegate([retval, out] IWebResourceLoadDelegate** d);
238
239     /*!
240         @method setDownloadDelegate:
241         @abstract Set the WebView's WebDownloadDelegate.
242         @discussion The download delegate is retained by WebDownload when any downloads are in progress.
243         @param delegate The WebDownloadDelegate to set as the download delegate.
244         - (void)setDownloadDelegate:(id)delegate;
245     */
246     HRESULT setDownloadDelegate([in] IWebDownloadDelegate* d);
247
248     /*!
249         @method downloadDelegate
250         @abstract Return the WebView's WebDownloadDelegate.
251         @result The WebView's WebDownloadDelegate.
252         - (id)downloadDelegate;
253     */    
254     HRESULT downloadDelegate([retval, out] IWebDownloadDelegate** d);
255
256     /*!
257         @method setFrameLoadDelegate:
258         @abstract Set the WebView's WebFrameLoadDelegate delegate.
259         @param delegate The WebFrameLoadDelegate to set as the delegate.
260         - (void)setFrameLoadDelegate:(id)delegate;
261     */
262     HRESULT setFrameLoadDelegate([in] IWebFrameLoadDelegate* d);
263
264     /*!
265         @method frameLoadDelegate
266         @abstract Return the WebView's WebFrameLoadDelegate delegate.
267         @result The WebView's WebFrameLoadDelegate delegate.
268         - (id)frameLoadDelegate;
269     */    
270     HRESULT frameLoadDelegate([retval, out] IWebFrameLoadDelegate** d);
271
272     /*!
273         @method setPolicyDelegate:
274         @abstract Set the WebView's WebPolicyDelegate delegate.
275         @param delegate The WebPolicyDelegate to set as the delegate.
276         - (void)setPolicyDelegate:(id)delegate;
277     */    
278     HRESULT setPolicyDelegate([in] IWebPolicyDelegate* d);
279
280     /*!
281         @method policyDelegate
282         @abstract Return the WebView's WebPolicyDelegate.
283         @result The WebView's WebPolicyDelegate.
284         - (id)policyDelegate;
285     */    
286     HRESULT policyDelegate([retval, out] IWebPolicyDelegate** d);
287
288     /*!
289         @method mainFrame
290         @abstract Return the top level frame.  
291         @discussion Note that even document that are not framesets will have a
292         mainFrame.
293         @result The main frame.
294         - (WebFrame *)mainFrame;
295     */    
296     HRESULT mainFrame([retval, out] IWebFrame** frame);
297
298     /*!
299         @method backForwardList
300         @result The backforward list for this webView.
301         - (WebBackForwardList *)backForwardList;
302     */    
303     HRESULT backForwardList([retval, out] IWebBackForwardList** list);
304
305     /*!
306         @method setMaintainsBackForwardList:
307         @abstract Enable or disable the use of a backforward list for this webView.
308         @param flag Turns use of the back forward list on or off
309         - (void)setMaintainsBackForwardList:(BOOL)flag;
310     */    
311     HRESULT setMaintainsBackForwardList([in] BOOL flag);
312
313     /*!
314         @method goBack
315         @abstract Go back to the previous URL in the backforward list.
316         @result YES if able to go back in the backforward list, NO otherwise.
317         - (BOOL)goBack;
318     */
319     HRESULT goBack([out, retval] BOOL* succeeded);
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         - (BOOL)goForward;
326     */    
327     HRESULT goForward([out, retval] BOOL* succeeded);
328
329     /*!
330         @method goToBackForwardItem:
331         @abstract Go back or forward to an item in the backforward list.
332         @result YES if able to go to the item, NO otherwise.
333         - (BOOL)goToBackForwardItem:(WebHistoryItem *)item;
334     */    
335     HRESULT goToBackForwardItem([in] IWebHistoryItem* item, [out, retval] BOOL* succeeded);
336
337     /*!
338         @method setTextSizeMultiplier:
339         @abstract Change the size of the text rendering in views managed by this webView.
340         @param multiplier A fractional percentage value, 1.0 is 100%.
341         - (void)setTextSizeMultiplier:(float)multiplier;
342     */
343     HRESULT setTextSizeMultiplier([in] float multiplier);
344
345     /*!
346         @method textSizeMultiplier
347         @result The text size multipler.
348         - (float)textSizeMultiplier;
349     */    
350     HRESULT textSizeMultiplier([out, retval] float* multiplier);
351
352     /*!
353         @method setApplicationNameForUserAgent:
354         @abstract Set the application name. 
355         @discussion This name will be used in user-agent strings
356         that are chosen for best results in rendering web pages.
357         @param applicationName The application name
358         - (void)setApplicationNameForUserAgent:(NSString *)applicationName;
359     */
360     HRESULT setApplicationNameForUserAgent([in] BSTR applicationName);
361
362     /*!
363         @method applicationNameForUserAgent
364         @result The name of the application as used in the user-agent string.
365         - (NSString *)applicationNameForUserAgent;
366     */
367     HRESULT applicationNameForUserAgent([out, retval] BSTR* applicationName);
368
369     /*!
370         @method setCustomUserAgent:
371         @abstract Set the user agent. 
372         @discussion Setting this means that the webView should use this user-agent string
373         instead of constructing a user-agent string for each URL. Setting it to nil
374         causes the webView to construct the user-agent string for each URL
375         for best results rendering web pages.
376         @param userAgentString The user agent description
377         - (void)setCustomUserAgent:(NSString *)userAgentString;
378     */
379     HRESULT setCustomUserAgent([in] BSTR userAgentString);
380
381     /*!
382         @method customUserAgent
383         @result The custom user-agent string or nil if no custom user-agent string has been set.
384         - (NSString *)customUserAgent;
385     */
386     HRESULT customUserAgent([out, retval] BSTR* userAgentString);
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         - (NSString *)userAgentForURL:(NSURL *)URL;
394     */
395     HRESULT userAgentForURL([in] BSTR url, [out, retval] BSTR* userAgent);
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         - (BOOL)supportsTextEncoding;
403     */
404     HRESULT supportsTextEncoding([out, retval] BOOL* supports);
405
406     /*!
407         @method setCustomTextEncodingName:
408         @discussion Make the page display with a different text encoding; stops any load in progress.
409         The text encoding passed in overrides the normal text encoding smarts including
410         what's specified in a web page's header or HTTP response.
411         The text encoding automatically goes back to the default when the top level frame
412         changes to a new location.
413         Setting the text encoding name to nil makes the webView use default encoding rules.
414         @param encoding The text encoding name to use to display a page or nil.
415         - (void)setCustomTextEncodingName:(NSString *)encodingName;
416     */
417     HRESULT setCustomTextEncodingName([in] BSTR encodingName);
418
419     /*!
420         @method customTextEncodingName
421         @result The custom text encoding name or nil if no custom text encoding name has been set.
422         - (NSString *)customTextEncodingName;
423     */
424     HRESULT customTextEncodingName([out, retval] BSTR* encodingName);
425
426     /*!
427         @method setMediaStyle:
428         @discussion Set the media style for the WebView.  The mediaStyle will override the normal value
429         of the CSS media property.  Setting the value to nil will restore the normal value.
430         @param mediaStyle The value to use for the CSS media property.
431         - (void)setMediaStyle:(NSString *)mediaStyle;
432     */
433     HRESULT setMediaStyle([in] BSTR media);
434
435     /*!
436         @method mediaStyle
437         @result mediaStyle The value to use for the CSS media property, as set by setMediaStyle:.  It
438         will be nil unless set by that method.
439         - (NSString *)mediaStyle;
440     */
441     HRESULT mediaStyle([out, retval] BSTR* media);
442
443     /*!
444         @method stringByEvaluatingJavaScriptFromString:
445         @param script The text of the JavaScript.
446         @result The result of the script, converted to a string, or nil for failure.
447         - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
448     */
449     HRESULT stringByEvaluatingJavaScriptFromString([in] BSTR script, [out, retval] BSTR* result);
450
451     /*!
452         @method windowScriptObject
453         @discussion windowScriptObject return a WebScriptObject that represents the
454         window object from the script environment.
455         @result Returns the window object from the script environment.
456         - (WebScriptObject *)windowScriptObject;
457     */
458     HRESULT windowScriptObject([out, retval] IWebScriptObject* webScriptObject);
459
460     /*!
461         @method setPreferences:
462         @param preferences The preferences to use for the webView.
463         @abstract Override the standard setting for the webView. 
464         - (void)setPreferences: (WebPreferences *)prefs;
465     */
466     HRESULT setPreferences([in] IWebPreferences* prefs);
467
468     /*!
469         @method preferences
470         @result Returns the preferences used by this webView.
471         @discussion This method will return [WebPreferences standardPreferences] if no
472         other instance of WebPreferences has been set.
473         - (WebPreferences *)preferences;
474     */
475     HRESULT preferences([out, retval] IWebPreferences** prefs);
476
477     /*!
478         @method setPreferencesIdentifier:
479         @param anIdentifier The string to use a prefix for storing values for this WebView in the user
480         defaults database.
481         @discussion If the WebPreferences for this WebView are stored in the user defaults database, the
482         string set in this method will be used a key prefix.
483         - (void)setPreferencesIdentifier:(NSString *)anIdentifier;
484     */
485     HRESULT setPreferencesIdentifier([in] BSTR anIdentifier);
486
487     /*!
488         @method preferencesIdentifier
489         @result Returns the WebPreferences key prefix.
490         - (NSString *)preferencesIdentifier;
491     */
492     HRESULT preferencesIdentifier([out, retval] BSTR* anIdentifier);
493
494     /*!
495         @method setHostWindow:
496         @param hostWindow The host window for the web view.
497         @discussion Parts of WebKit (such as plug-ins and JavaScript) depend on a window to function
498         properly. Set a host window so these parts continue to function even when the web view is
499         not in an actual window.
500         - (void)setHostWindow:(NSWindow *)hostWindow;
501     */
502     HRESULT setHostWindow([in] HWND window);
503
504     /*!
505         @method hostWindow
506         @result The host window for the web view.
507         - (NSWindow *)hostWindow;
508     */
509     HRESULT hostWindow([out, retval] HWND* window);
510
511     /*!
512         @method searchFor:direction:caseSensitive:
513         @abstract Searches a document view for a string and highlights the string if it is found.
514         Starts the search from the current selection.  Will search across all frames.
515         @param string The string to search for.
516         @param forward YES to search forward, NO to seach backwards.
517         @param caseFlag YES to for case-sensitive search, NO for case-insensitive search.
518         @result YES if found, NO if not found.
519         - (BOOL)searchFor:(NSString *)string direction:(BOOL)forward caseSensitive:(BOOL)caseFlag wrap:(BOOL)wrapFlag;
520     */
521     HRESULT searchFor([in] BSTR str, [in] BOOL forward, [in] BOOL caseFlag, [in] BOOL wrapFlag, [out, retval] BOOL* found);
522
523     /*!
524         @method registerViewClass:representationClass:forMIMEType:
525         @discussion Register classes that implement WebDocumentView and WebDocumentRepresentation respectively.
526         A document class may register for a primary MIME type by excluding
527         a subtype, i.e. "video/" will match the document class with
528         all video types.  More specific matching takes precedence
529         over general matching.
530         @param viewClass The WebDocumentView class to use to render data for a given MIME type.
531         @param representationClass The WebDocumentRepresentation class to use to represent data of the given MIME type.
532         @param MIMEType The MIME type to represent with an object of the given class.
533         + (void)registerViewClass:(Class)viewClass representationClass:(Class)representationClass forMIMEType:(NSString *)MIMEType;
534     */
535     HRESULT registerViewClass([in] IWebDocumentView* view, [in] IWebDocumentRepresentation* representation, [in] BSTR forMIMEType);
536 }
537
538 /*
539     @interface WebView (WebIBActions) <NSUserInterfaceValidations>
540 */
541 [
542     local,
543     object,
544     uuid(8F0E3A30-B924-44f8-990A-1AE61ED6C632),
545     pointer_default(unique)
546 ]
547 interface IWebIBActions : IUnknown
548 {
549     /*
550         - (IBAction)takeStringURLFrom:(id)sender;
551     */
552     HRESULT takeStringURLFrom([in] IUnknown* sender);
553
554     /*
555         - (IBAction)stopLoading:(id)sender;
556     */
557     HRESULT stopLoading([in] IUnknown* sender);
558
559     /*
560         - (IBAction)reload:(id)sender;
561     */
562     HRESULT reload([in] IUnknown* sender);
563
564     /*
565         - (BOOL)canGoBack;
566     */
567     HRESULT canGoBack([in] IUnknown* sender, [out, retval] BOOL* result);
568
569     /*
570         - (IBAction)goBack:(id)sender;
571     */
572     HRESULT goBack([in] IUnknown* sender);
573
574     /*
575         - (BOOL)canGoForward;
576     */
577     HRESULT canGoForward([in] IUnknown* sender, [out, retval] BOOL* result);
578
579     /*
580         - (IBAction)goForward:(id)sender;
581     */
582     HRESULT goForward([in] IUnknown* sender);
583
584     /*
585         - (BOOL)canMakeTextLarger;
586     */
587     HRESULT canMakeTextLarger([in] IUnknown* sender, [out, retval] BOOL* result);
588
589     /*
590         - (IBAction)makeTextLarger:(id)sender;
591     */
592     HRESULT makeTextLarger([in] IUnknown* sender);
593
594     /*
595         - (BOOL)canMakeTextSmaller;
596     */
597     HRESULT canMakeTextSmaller([in] IUnknown* sender, [out, retval] BOOL* result);
598
599     /*
600         - (IBAction)makeTextSmaller:(id)sender;
601     */
602     HRESULT makeTextSmaller([in] IUnknown* sender);
603 }
604
605 /*
606     @interface WebView (WebViewCSS)
607 */
608 [
609     local,
610     object,
611     uuid(ADF68A8C-336F-405c-A053-3D11A9D5B092),
612     pointer_default(unique)
613 ]
614 interface IWebViewCSS : IUnknown
615 {
616     /*
617         - (DOMCSSStyleDeclaration *)computedStyleForElement:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
618     */
619     HRESULT computedStyleForElement([in] IDOMElement* element, [in] BSTR pseudoElement, [out, retval] IDOMCSSStyleDeclaration** style);
620 }
621
622 /*
623     @interface WebView (WebViewEditing)
624 */
625 [
626     local,
627     object,
628     uuid(07BDAC9A-19A1-4086-864D-BAD9E0F00D5C),
629     pointer_default(unique)
630 ]
631 interface IWebViewEditing : IUnknown
632 {
633     /*
634         - (DOMRange *)editableDOMRangeForPoint:(NSPoint)point;
635     */
636     HRESULT editableDOMRangeForPoint([in] LPPOINT point, [out, retval] IDOMRange** range);
637
638     /*
639         - (void)setSelectedDOMRange:(DOMRange *)range affinity:(NSSelectionAffinity)selectionAffinity;
640     */
641     HRESULT setSelectedDOMRange([in] IDOMRange* range, [in] WebSelectionAffinity affinity);
642
643     /*
644         - (DOMRange *)selectedDOMRange;
645     */
646     HRESULT selectedDOMRange([out, retval] IDOMRange** range);
647
648     /*
649         - (NSSelectionAffinity)selectionAffinity;
650     */
651     HRESULT selectionAffinity([out, retval] [out, retval] WebSelectionAffinity* affinity);
652
653     /*
654         - (void)setEditable:(BOOL)flag;
655     */
656     HRESULT setEditable([in] BOOL flag);
657
658     /*
659         - (BOOL)isEditable;
660     */
661     HRESULT isEditable([out, retval] BOOL* isEditable);
662
663     /*
664         - (void)setTypingStyle:(DOMCSSStyleDeclaration *)style;
665     */
666     HRESULT setTypingStyle([in] IDOMCSSStyleDeclaration* style);
667
668     /*
669         - (DOMCSSStyleDeclaration *)typingStyle;
670     */
671     HRESULT typingStyle([out, retval] IDOMCSSStyleDeclaration** style);
672
673     /*
674         - (void)setSmartInsertDeleteEnabled:(BOOL)flag;
675     */
676     HRESULT setSmartInsertDeleteEnabled([in] BOOL flag);
677
678     /*
679         - (BOOL)smartInsertDeleteEnabled;
680     */
681     HRESULT smartInsertDeleteEnabled([in] BOOL enabled);
682
683     /*
684         - (void)setContinuousSpellCheckingEnabled:(BOOL)flag;
685     */
686     HRESULT setContinuousSpellCheckingEnabled([in] BOOL flag);
687
688     /*
689         - (BOOL)isContinuousSpellCheckingEnabled;
690     */
691     HRESULT isContinuousSpellCheckingEnabled([out, retval] BOOL* enabled);
692
693     /*
694         - (WebNSInt)spellCheckerDocumentTag;
695     */
696     HRESULT spellCheckerDocumentTag([out, retval] int* tag);
697
698     /*
699         - (NSUndoManager *)undoManager;
700     */
701     HRESULT undoManager([out, retval] IWebUndoManager* manager);
702
703     /*
704         - (void)setEditingDelegate:(id)delegate;
705     */
706     HRESULT setEditingDelegate([in] IWebViewEditingDelegate* d);
707
708     /*
709         - (id)editingDelegate;
710     */
711     HRESULT editingDelegate([out, retval] IWebViewEditingDelegate** d);
712
713     /*
714         - (DOMCSSStyleDeclaration *)styleDeclarationWithText:(NSString *)text;
715     */
716     HRESULT styleDeclarationWithText([in] BSTR text, [out, retval] IDOMCSSStyleDeclaration** style);
717 }
718
719 /*
720     @interface WebView (WebViewUndoableEditing)
721 */
722 [
723     local,
724     object,
725     uuid(639E7121-13C8-4a12-BC18-6E1F3D68F3C3),
726     pointer_default(unique)
727 ]
728 interface IWebViewUndoableEditing : IUnknown
729 {
730     /*
731         - (void)replaceSelectionWithNode:(DOMNode *)node; 
732     */
733     HRESULT replaceSelectionWithNode([in] IDOMNode* node);
734
735     /*
736         - (void)replaceSelectionWithText:(NSString *)text;    
737     */
738     HRESULT replaceSelectionWithText([in] BSTR text);
739
740     /*
741         - (void)replaceSelectionWithMarkupString:(NSString *)markupString;
742     */
743     HRESULT replaceSelectionWithMarkupString([in] BSTR markupString);
744
745     /*
746         - (void)replaceSelectionWithArchive:(WebArchive *)archive;
747     */
748     HRESULT replaceSelectionWithArchive([in] IWebArchive* archive);
749
750     /*
751         - (void)deleteSelection;    
752     */
753     HRESULT deleteSelection();
754
755     /*
756         - (void)applyStyle:(DOMCSSStyleDeclaration *)style;
757     */
758     HRESULT applyStyle([in] IDOMCSSStyleDeclaration* style);
759 }
760
761 /*
762     @interface WebView (WebViewEditingActions)
763 */
764 [
765     local,
766     object,
767     uuid(7E066C42-8E81-4778-888D-D6CC93E27D4C),
768     pointer_default(unique)
769 ]
770 interface IWebViewEditingActions : IUnknown
771 {
772     /*
773         - (void)copy:(id)sender;
774     */
775     HRESULT copy([in] IUnknown* sender);
776
777     /*
778         - (void)cut:(id)sender;
779     */
780     HRESULT cut([in] IUnknown* sender);
781
782     /*
783         - (void)paste:(id)sender;
784     */
785     HRESULT paste([in] IUnknown* sender);
786
787     /*
788         - (void)copyFont:(id)sender;
789     */
790     HRESULT copyFont([in] IUnknown* sender);
791
792     /*
793         - (void)pasteFont:(id)sender;
794     */
795     HRESULT pasteFont([in] IUnknown* sender);
796
797     /*
798         - (void)delete:(id)sender;
799     */
800     HRESULT delete_([in] IUnknown* sender);
801
802     /*
803         - (void)pasteAsPlainText:(id)sender;
804     */
805     HRESULT pasteAsPlainText([in] IUnknown* sender);
806
807     /*
808         - (void)pasteAsRichText:(id)sender;
809     */
810     HRESULT pasteAsRichText([in] IUnknown* sender);
811
812
813     /*
814         - (void)changeFont:(id)sender;
815     */
816     HRESULT changeFont([in] IUnknown* sender);
817
818     /*
819         - (void)changeAttributes:(id)sender;
820     */
821     HRESULT changeAttributes([in] IUnknown* sender);
822
823     /*
824         - (void)changeDocumentBackgroundColor:(id)sender;
825     */
826     HRESULT changeDocumentBackgroundColor([in] IUnknown* sender);
827
828     /*
829         - (void)changeColor:(id)sender;
830     */
831     HRESULT changeColor([in] IUnknown* sender);
832
833
834     /*
835         - (void)alignCenter:(id)sender;
836     */
837     HRESULT alignCenter([in] IUnknown* sender);
838
839     /*
840         - (void)alignJustified:(id)sender;
841     */
842     HRESULT alignJustified([in] IUnknown* sender);
843
844     /*
845         - (void)alignLeft:(id)sender;
846     */
847     HRESULT alignLeft([in] IUnknown* sender);
848
849     /*
850         - (void)alignRight:(id)sender;
851     */
852     HRESULT alignRight([in] IUnknown* sender);
853
854
855     /*
856         - (void)checkSpelling:(id)sender;
857     */
858     HRESULT checkSpelling([in] IUnknown* sender);
859
860     /*
861         - (void)showGuessPanel:(id)sender;
862     */
863     HRESULT showGuessPanel([in] IUnknown* sender);
864
865     /*
866         - (void)performFindPanelAction:(id)sender;
867     */
868     HRESULT performFindPanelAction([in] IUnknown* sender);
869
870
871     /*
872         - (void)startSpeaking:(id)sender;
873     */
874     HRESULT startSpeaking([in] IUnknown* sender);
875
876     /*
877         - (void)stopSpeaking:(id)sender;
878     */
879     HRESULT stopSpeaking([in] IUnknown* sender);
880 }
881
882 [
883     local,
884     object,
885     uuid(74C30FE8-C2AB-4fec-A9B1-48153C8AC7D8),
886     pointer_default(unique)
887 ]
888 interface IWebViewExt : IUnknown
889 {
890     HRESULT viewWindow([out, retval] HWND* window);
891 }