[Win] Expose missing editing features through WebView interface
[WebKit-https.git] / Source / WebKit / win / Interfaces / IWebView.idl
1 /*
2  * Copyright (C) 2006, 2007, 2008 Apple 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 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 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("/* identifiers for commands that can be called by the webview's frame */")
27 cpp_quote("enum WebViewCmd { Cut = 100, Copy, Paste, ForwardDelete, SelectAll, Undo, Redo };")
28
29 cpp_quote("#define WebViewProgressStartedNotification TEXT(\"WebProgressStartedNotification\")")
30 cpp_quote("#define WebViewProgressEstimateChangedNotification TEXT(\"WebProgressEstimateChangedNotification\")")
31 cpp_quote("#define WebViewProgressFinishedNotification TEXT(\"WebProgressFinishedNotification\")")
32 cpp_quote("#define WebViewDidChangeSelectionNotification TEXT(\"WebViewDidChangeSelectionNotification\")")
33 cpp_quote("#define WebViewDidBeginEditingNotification TEXT(\"WebViewDidBeginEditingNotification\")")
34 cpp_quote("#define WebViewDidEndEditingNotification TEXT(\"WebViewDidEndEditingNotification\")")
35 cpp_quote("#define WebViewDidChangeTypingStyleNotification TEXT(\"WebViewDidChangeTypingStyleNotification\")")
36 cpp_quote("#define WebViewDidChangeNotification TEXT(\"WebViewDidChangeNotification\")")
37
38 #ifndef DO_NO_IMPORTS
39 import "oaidl.idl";
40 import "ocidl.idl";
41 import "IWebUIDelegate.idl";
42 import "IWebURLResponse.idl";
43 import "IWebResourceLoadDelegate.idl";
44 import "IWebDownload.idl";
45 import "IWebFrameLoadDelegate.idl";
46 import "IWebPolicyDelegate.idl";
47 import "IWebBackForwardList.idl";
48 import "IWebHistoryItem.idl";
49 import "IWebPreferences.idl";
50 import "DOMCSS.idl";
51 import "IWebUndoManager.idl";
52 import "IWebEditingDelegate.idl";
53 import "DOMRange.idl";
54 import "AccessibilityDelegate.idl";
55 #endif
56
57 interface IDOMCSSStyleDeclaration;
58 interface IDOMDocument;
59 interface IDOMElement;
60 interface IDOMNode;
61 interface IDOMRange;
62
63 interface IWebArchive;
64 interface IWebBackForwardList;
65 interface IWebDataSource;
66 interface IWebFrame;
67 interface IWebFrameView;
68 interface IWebHistoryItem;
69 interface IWebPreferences;
70 interface IWebScriptObject;
71
72 interface IWebUIDelegate;
73 interface IWebResourceLoadDelegate;
74 interface IWebDownloadDelegate;
75 interface IWebEditingDelegate;
76 interface IWebFrameLoadDelegate;
77 interface IWebPolicyDelegate;
78 interface IWebDocumentView;
79 interface IWebDocumentRepresentation;
80 interface IWebUndoManager;
81
82 interface IAccessibilityDelegate;
83
84 /* These are the keys for the WebElementPropertyBag */
85 const LPCOLESTR WebElementDOMNodeKey = L"WebElementDOMNodeKey";
86 const LPCOLESTR WebElementFrameKey = L"WebElementFrameKey";
87 const LPCOLESTR WebElementImageAltStringKey = L"WebElementImageAltStringKey";
88 const LPCOLESTR WebElementImageKey = L"WebElementImageKey";
89 const LPCOLESTR WebElementImageRectKey = L"WebElementImageRectKey";
90 const LPCOLESTR WebElementImageURLKey = L"WebElementImageURLKey";
91 const LPCOLESTR WebElementIsSelectedKey = L"WebElementIsSelectedKey";
92 const LPCOLESTR WebElementMediaURLKey = L"WebElementMediaURLKey";
93 const LPCOLESTR WebElementSpellingToolTipKey = L"WebElementSpellingToolTipKey";
94 const LPCOLESTR WebElementTitleKey = L"WebElementTitleKey";
95 const LPCOLESTR WebElementLinkURLKey = L"WebElementLinkURLKey";
96 const LPCOLESTR WebElementLinkTargetFrameKey = L"WebElementLinkTargetFrameKey";
97 const LPCOLESTR WebElementLinkTitleKey = L"WebElementLinkTitleKey";
98 const LPCOLESTR WebElementLinkLabelKey = L"WebElementLinkLabelKey";
99 const LPCOLESTR WebElementIsContentEditableKey = L"WebElementIsContentEditableKey";
100
101 /*!
102     @class IEnumTextMatches
103 */
104 [
105     object,
106     oleautomation,
107     uuid(C0CDE63A-5ED1-453f-B937-93B1A61AD3B3),
108     pointer_default(unique)
109 ]
110 interface IEnumTextMatches : IUnknown
111 {
112     HRESULT Next(ULONG celt, RECT* rect, ULONG* pceltFetched);
113     HRESULT Skip(ULONG celt);
114     HRESULT Reset(void);
115     HRESULT Clone(IEnumTextMatches** ppenum);
116 };
117
118 /*!
119     @class WebView
120     WebView manages the interaction between WebFrameViews and WebDataSources.  Modification
121     of the policies and behavior of the WebKit is largely managed by WebViews and their
122     delegates.
123     
124     <p>
125     Typical usage:
126     </p>
127     <pre>
128     WebView *webView;
129     WebFrame *mainFrame;
130     
131     webView  = [[WebView alloc] initWithFrame: NSMakeRect (0,0,640,480)];
132     mainFrame = [webView mainFrame];
133     [mainFrame loadRequest:request];
134     </pre>
135     
136     WebViews have the following delegates:  WebUIDelegate, WebResourceLoadDelegate,
137     WebFrameLoadDelegate, and WebPolicyDelegate.
138     
139     WebKit depends on the WebView's WebUIDelegate for all window
140     related management, including opening new windows and controlling the user interface
141     elements in those windows.
142     
143     WebResourceLoadDelegate is used to monitor the progress of resources as they are
144     loaded.  This delegate may be used to present users with a progress monitor.
145     
146     The WebFrameLoadDelegate receives messages when the URL in a WebFrame is
147     changed.
148     
149     WebView's WebPolicyDelegate can make determinations about how
150     content should be handled, based on the resource's URL and MIME type.
151
152     @interface WebView : NSView
153 */
154 [
155     object,
156     oleautomation,
157     hidden,
158     uuid(174BBEFD-058E-49c7-91DF-6F110AA4AC28),
159     pointer_default(unique)
160 ]
161 interface IWebView : IUnknown
162 {
163     /*!
164         @method canShowMIMEType:
165         @abstract Checks if the WebKit can show content of a certain MIME type.
166         @param MIMEType The MIME type to check.
167         @result YES if the WebKit can show content with MIMEtype.
168         + (BOOL)canShowMIMEType:(NSString *)MIMEType;
169     */
170     HRESULT canShowMIMEType([in] BSTR mimeType, [out, retval] BOOL* canShow);
171
172     /*!
173         @method canShowMIMETypeAsHTML:
174         @abstract Checks if the the MIME type is a type that the WebKit will interpret as HTML.
175         @param MIMEType The MIME type to check.
176         @result YES if the MIMEtype in an HTML type.
177         + (BOOL)canShowMIMETypeAsHTML:(NSString *)MIMEType;
178     */
179     HRESULT canShowMIMETypeAsHTML([in] BSTR mimeType, [out, retval] BOOL* canShow);
180
181     /*!
182         @method MIMETypesShownAsHTML
183         @result Returns an array of NSStrings that describe the MIME types
184         WebKit will attempt to render as HTML.
185         + (NSArray *)MIMETypesShownAsHTML;
186     */
187     HRESULT MIMETypesShownAsHTML([out, retval] IEnumVARIANT** enumVariant);
188
189     /*!
190         @method setMIMETypesShownAsHTML:
191         @discussion Sets the array of NSString MIME types that WebKit will
192         attempt to render as HTML.  Typically you will retrieve the built-in
193         array using MIMETypesShownAsHTML and add additional MIME types to that
194         array.
195         + (void)setMIMETypesShownAsHTML:(NSArray *)MIMETypes;
196     */
197     HRESULT setMIMETypesShownAsHTML([in, size_is(cMimeTypes)] BSTR* mimeTypes, [in] int cMimeTypes);
198
199     /*!
200         @method URLFromPasteboard:
201         @abstract Returns a URL from a pasteboard
202         @param pasteboard The pasteboard with a URL
203         @result A URL if the pasteboard has one. Nil if it does not.
204         @discussion This method differs than NSURL's URLFromPasteboard method in that it tries multiple pasteboard types
205         including NSURLPboardType to find a URL on the pasteboard.
206         + (NSURL *)URLFromPasteboard:(NSPasteboard *)pasteboard;
207     */
208     HRESULT URLFromPasteboard([in] IDataObject* pasteboard, [out, retval] BSTR* url);
209
210     /*!
211         @method URLTitleFromPasteboard:
212         @abstract Returns a URL title from a pasteboard
213         @param pasteboard The pasteboard with a URL title
214         @result A URL title if the pasteboard has one. Nil if it does not.
215         @discussion This method returns a title that refers a URL on the pasteboard. An example of this is the link label
216         which is the text inside the anchor tag.
217         + (NSString *)URLTitleFromPasteboard:(NSPasteboard *)pasteboard;
218     */
219     HRESULT URLTitleFromPasteboard([in] IDataObject* pasteboard, [out, retval] BSTR* urlTitle);
220
221     /*!
222         @method initWithFrame:frameName:groupName:
223         @abstract The designated initializer for WebView.
224         @discussion Initialize a WebView with the supplied parameters. This method will 
225         create a main WebFrame with the view. Passing a top level frame name is useful if you
226         handle a targetted frame navigation that would normally open a window in some other 
227         way that still ends up creating a new WebView.
228         @param frame The frame used to create the view.
229         @param frameName The name to use for the top level frame. May be nil.
230         @param groupName The name of the webView set to which this webView will be added.  May be nil.
231         @result Returns an initialized WebView.
232         - (id)initWithFrame:(NSRect)frame frameName:(NSString *)frameName groupName:(NSString *)groupName;
233     */
234     HRESULT initWithFrame([in] RECT frame, [in] BSTR frameName, [in] BSTR groupName);
235
236     /*!
237         @method accessibilityDelegate:
238         @abstract Return the WebView's accessibilityDelegate.
239         @param delegate The WebUIDelegate to set as the delegate.
240         - (void)setUIDelegate:(id)delegate;
241     */
242     HRESULT setAccessibilityDelegate([in] IAccessibilityDelegate *d);
243
244     /*!
245         @method setAccessibilityDelegate:
246         @abstract Set the WebView's accessibilityDelegate.
247         @result The WebView's WebUIDelegate.
248         - (id)UIDelegate;
249     */
250     HRESULT accessibilityDelegate([out][retval] IAccessibilityDelegate **d);
251
252     /*!
253         @method setUIDelegate:
254         @abstract Set the WebView's WebUIDelegate.
255         @param delegate The WebUIDelegate to set as the delegate.
256         - (void)setUIDelegate:(id)delegate;
257     */
258     HRESULT setUIDelegate([in] IWebUIDelegate* d);
259
260     /*!
261         @method UIDelegate
262         @abstract Return the WebView's WebUIDelegate.
263         @result The WebView's WebUIDelegate.
264         - (id)UIDelegate;
265     */
266     HRESULT uiDelegate([retval, out] IWebUIDelegate** d);
267
268     /*!
269         @method setResourceLoadDelegate:
270         @abstract Set the WebView's WebResourceLoadDelegate load delegate.
271         @param delegate The WebResourceLoadDelegate to set as the load delegate.
272         - (void)setResourceLoadDelegate:(id)delegate;
273     */
274     HRESULT setResourceLoadDelegate([in] IWebResourceLoadDelegate* d);
275
276     /*!
277         @method resourceLoadDelegate
278         @result Return the WebView's WebResourceLoadDelegate.
279         - (id)resourceLoadDelegate;
280     */    
281     HRESULT resourceLoadDelegate([retval, out] IWebResourceLoadDelegate** d);
282
283     /*!
284         @method setDownloadDelegate:
285         @abstract Set the WebView's WebDownloadDelegate.
286         @discussion The download delegate is retained by WebDownload when any downloads are in progress.
287         @param delegate The WebDownloadDelegate to set as the download delegate.
288         - (void)setDownloadDelegate:(id)delegate;
289     */
290     HRESULT setDownloadDelegate([in] IWebDownloadDelegate* d);
291
292     /*!
293         @method downloadDelegate
294         @abstract Return the WebView's WebDownloadDelegate.
295         @result The WebView's WebDownloadDelegate.
296         - (id)downloadDelegate;
297     */    
298     HRESULT downloadDelegate([retval, out] IWebDownloadDelegate** d);
299
300     /*!
301         @method setFrameLoadDelegate:
302         @abstract Set the WebView's WebFrameLoadDelegate delegate.
303         @param delegate The WebFrameLoadDelegate to set as the delegate.
304         - (void)setFrameLoadDelegate:(id)delegate;
305     */
306     HRESULT setFrameLoadDelegate([in] IWebFrameLoadDelegate* d);
307
308     /*!
309         @method frameLoadDelegate
310         @abstract Return the WebView's WebFrameLoadDelegate delegate.
311         @result The WebView's WebFrameLoadDelegate delegate.
312         - (id)frameLoadDelegate;
313     */    
314     HRESULT frameLoadDelegate([retval, out] IWebFrameLoadDelegate** d);
315
316     /*!
317         @method setPolicyDelegate:
318         @abstract Set the WebView's WebPolicyDelegate delegate.
319         @param delegate The WebPolicyDelegate to set as the delegate.
320         - (void)setPolicyDelegate:(id)delegate;
321     */    
322     HRESULT setPolicyDelegate([in] IWebPolicyDelegate* d);
323
324     /*!
325         @method policyDelegate
326         @abstract Return the WebView's WebPolicyDelegate.
327         @result The WebView's WebPolicyDelegate.
328         - (id)policyDelegate;
329     */    
330     HRESULT policyDelegate([retval, out] IWebPolicyDelegate** d);
331
332     /*!
333         @method mainFrame
334         @abstract Return the top level frame.  
335         @discussion Note that even document that are not framesets will have a
336         mainFrame.
337         @result The main frame.
338         - (WebFrame *)mainFrame;
339     */    
340     HRESULT mainFrame([retval, out] IWebFrame** frame);
341
342     /*!
343         @method focusedFrame
344     @abstract Return the frame that has the current focus.  
345     */
346     HRESULT focusedFrame([retval, out] IWebFrame** frame);
347
348     /*!
349         @method backForwardList
350         @result The backforward list for this webView.
351         - (WebBackForwardList *)backForwardList;
352     */    
353     HRESULT backForwardList([retval, out] IWebBackForwardList** list);
354
355     /*!
356         @method setMaintainsBackForwardList:
357         @abstract Enable or disable the use of a backforward list for this webView.
358         @param flag Turns use of the back forward list on or off
359         - (void)setMaintainsBackForwardList:(BOOL)flag;
360     */    
361     HRESULT setMaintainsBackForwardList([in] BOOL flag);
362
363     /*!
364         @method goBack
365         @abstract Go back to the previous URL in the backforward list.
366         @result YES if able to go back in the backforward list, NO otherwise.
367         - (BOOL)goBack;
368     */
369     HRESULT goBack([out, retval] BOOL* succeeded);
370
371     /*!
372         @method goForward
373         @abstract Go forward to the next URL in the backforward list.
374         @result YES if able to go forward in the backforward list, NO otherwise.
375         - (BOOL)goForward;
376     */    
377     HRESULT goForward([out, retval] BOOL* succeeded);
378
379     /*!
380         @method goToBackForwardItem:
381         @abstract Go back or forward to an item in the backforward list.
382         @result YES if able to go to the item, NO otherwise.
383         - (BOOL)goToBackForwardItem:(WebHistoryItem *)item;
384     */    
385     HRESULT goToBackForwardItem([in] IWebHistoryItem* item, [out, retval] BOOL* succeeded);
386
387     /*!
388         @method setTextSizeMultiplier:
389         @abstract Change the size of the text rendering in views managed by this webView.
390         @param multiplier A fractional percentage value, 1.0 is 100%.
391         - (void)setTextSizeMultiplier:(float)multiplier;
392     */
393     HRESULT setTextSizeMultiplier([in] float multiplier);
394
395     /*!
396         @method textSizeMultiplier
397         @result The text size multipler.
398         - (float)textSizeMultiplier;
399     */    
400     HRESULT textSizeMultiplier([out, retval] float* multiplier);
401
402     /*!
403         @method setApplicationNameForUserAgent:
404         @abstract Set the application name. 
405         @discussion This name will be used in user-agent strings
406         that are chosen for best results in rendering web pages.
407         @param applicationName The application name
408         - (void)setApplicationNameForUserAgent:(NSString *)applicationName;
409     */
410     HRESULT setApplicationNameForUserAgent([in] BSTR applicationName);
411
412     /*!
413         @method applicationNameForUserAgent
414         @result The name of the application as used in the user-agent string.
415         - (NSString *)applicationNameForUserAgent;
416     */
417     HRESULT applicationNameForUserAgent([out, retval] BSTR* applicationName);
418
419     /*!
420         @method setCustomUserAgent:
421         @abstract Set the user agent. 
422         @discussion Setting this means that the webView should use this user-agent string
423         instead of constructing a user-agent string for each URL. Setting it to nil
424         causes the webView to construct the user-agent string for each URL
425         for best results rendering web pages.
426         @param userAgentString The user agent description
427         - (void)setCustomUserAgent:(NSString *)userAgentString;
428     */
429     HRESULT setCustomUserAgent([in] BSTR userAgentString);
430
431     /*!
432         @method customUserAgent
433         @result The custom user-agent string or nil if no custom user-agent string has been set.
434         - (NSString *)customUserAgent;
435     */
436     HRESULT customUserAgent([out, retval] BSTR* userAgentString);
437
438     /*!
439         @method userAgentForURL:
440         @abstract Get the appropriate user-agent string for a particular URL.
441         @param URL The URL.
442         @result The user-agent string for the supplied URL.
443         - (NSString *)userAgentForURL:(NSURL *)URL;
444     */
445     HRESULT userAgentForURL([in] BSTR url, [out, retval] BSTR* userAgent);
446
447     /*!
448         @method supportsTextEncoding
449         @abstract Find out if the current web page supports text encodings.
450         @result YES if the document view of the current web page can
451         support different text encodings.
452         - (BOOL)supportsTextEncoding;
453     */
454     HRESULT supportsTextEncoding([out, retval] BOOL* supports);
455
456     /*!
457         @method setCustomTextEncodingName:
458         @discussion Make the page display with a different text encoding; stops any load in progress.
459         The text encoding passed in overrides the normal text encoding smarts including
460         what's specified in a web page's header or HTTP response.
461         The text encoding automatically goes back to the default when the top level frame
462         changes to a new location.
463         Setting the text encoding name to nil makes the webView use default encoding rules.
464         @param encoding The text encoding name to use to display a page or nil.
465         - (void)setCustomTextEncodingName:(NSString *)encodingName;
466     */
467     HRESULT setCustomTextEncodingName([in] BSTR encodingName);
468
469     /*!
470         @method customTextEncodingName
471         @result The custom text encoding name or nil if no custom text encoding name has been set.
472         - (NSString *)customTextEncodingName;
473     */
474     HRESULT customTextEncodingName([out, retval] BSTR* encodingName);
475
476     /*!
477         @method setMediaStyle:
478         @discussion Set the media style for the WebView.  The mediaStyle will override the normal value
479         of the CSS media property.  Setting the value to nil will restore the normal value.
480         @param mediaStyle The value to use for the CSS media property.
481         - (void)setMediaStyle:(NSString *)mediaStyle;
482     */
483     HRESULT setMediaStyle([in] BSTR media);
484
485     /*!
486         @method mediaStyle
487         @result mediaStyle The value to use for the CSS media property, as set by setMediaStyle:.  It
488         will be nil unless set by that method.
489         - (NSString *)mediaStyle;
490     */
491     HRESULT mediaStyle([out, retval] BSTR* media);
492
493     /*!
494         @method stringByEvaluatingJavaScriptFromString:
495         @param script The text of the JavaScript.
496         @result The result of the script, converted to a string, or nil for failure.
497         - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
498     */
499     HRESULT stringByEvaluatingJavaScriptFromString([in] BSTR script, [out, retval] BSTR* result);
500
501     /*!
502         @method windowScriptObject
503         @discussion windowScriptObject return a WebScriptObject that represents the
504         window object from the script environment.
505         @result Returns the window object from the script environment.
506         - (WebScriptObject *)windowScriptObject;
507     */
508     HRESULT windowScriptObject([out, retval] IWebScriptObject** webScriptObject);
509
510     /*!
511         @method setPreferences:
512         @param preferences The preferences to use for the webView.
513         @abstract Override the standard setting for the webView. 
514         - (void)setPreferences: (WebPreferences *)prefs;
515     */
516     HRESULT setPreferences([in] IWebPreferences* prefs);
517
518     /*!
519         @method preferences
520         @result Returns the preferences used by this webView.
521         @discussion This method will return [WebPreferences standardPreferences] if no
522         other instance of WebPreferences has been set.
523         - (WebPreferences *)preferences;
524     */
525     HRESULT preferences([out, retval] IWebPreferences** prefs);
526
527     /*!
528         @method setPreferencesIdentifier:
529         @param anIdentifier The string to use a prefix for storing values for this WebView in the user
530         defaults database.
531         @discussion If the WebPreferences for this WebView are stored in the user defaults database, the
532         string set in this method will be used a key prefix.
533         - (void)setPreferencesIdentifier:(NSString *)anIdentifier;
534     */
535     HRESULT setPreferencesIdentifier([in] BSTR anIdentifier);
536
537     /*!
538         @method preferencesIdentifier
539         @result Returns the WebPreferences key prefix.
540         - (NSString *)preferencesIdentifier;
541     */
542     HRESULT preferencesIdentifier([out, retval] BSTR* anIdentifier);
543
544     /*!
545         @method setHostWindow:
546         @param hostWindow The host window for the web view.
547         @discussion Parts of WebKit (such as plug-ins and JavaScript) depend on a window to function
548         properly. Set a host window so these parts continue to function even when the web view is
549         not in an actual window.
550         - (void)setHostWindow:(NSWindow *)hostWindow;
551     */
552     HRESULT setHostWindow([in] HWND window);
553
554     /*!
555         @method hostWindow
556         @result The host window for the web view.
557         - (NSWindow *)hostWindow;
558     */
559     HRESULT hostWindow([out, retval] HWND* window);
560
561     /*!
562         @method searchFor:direction:caseSensitive:
563         @abstract Searches a document view for a string and highlights the string if it is found.
564         Starts the search from the current selection.  Will search across all frames.
565         @param string The string to search for.
566         @param forward YES to search forward, NO to seach backwards.
567         @param caseFlag YES to for case-sensitive search, NO for case-insensitive search.
568         @result YES if found, NO if not found.
569         - (BOOL)searchFor:(NSString *)string direction:(BOOL)forward caseSensitive:(BOOL)caseFlag wrap:(BOOL)wrapFlag;
570     */
571     HRESULT searchFor([in] BSTR str, [in] BOOL forward, [in] BOOL caseFlag, [in] BOOL wrapFlag, [out, retval] BOOL* found);
572
573     /*!
574         @method registerViewClass:representationClass:forMIMEType:
575         @discussion Register classes that implement WebDocumentView and WebDocumentRepresentation respectively.
576         A document class may register for a primary MIME type by excluding
577         a subtype, i.e. "video/" will match the document class with
578         all video types.  More specific matching takes precedence
579         over general matching.
580         @param viewClass The WebDocumentView class to use to render data for a given MIME type.
581         @param representationClass The WebDocumentRepresentation class to use to represent data of the given MIME type.
582         @param MIMEType The MIME type to represent with an object of the given class.
583         + (void)registerViewClass:(Class)viewClass representationClass:(Class)representationClass forMIMEType:(NSString *)MIMEType;
584     */
585     HRESULT registerViewClass([in] IWebDocumentView* view, [in] IWebDocumentRepresentation* representation, [in] BSTR forMIMEType);
586
587     /*!
588         @method setGroupName:
589         @param groupName The name of the group for this WebView.
590         @discussion JavaScript may access named frames within the same group. 
591         - (void)setGroupName:(NSString *)groupName;
592     */
593     HRESULT setGroupName([in] BSTR groupName);
594
595     /*!
596         @method groupName
597         @discussion The group name for this WebView.
598         - (NSString *)groupName;
599     */
600     HRESULT groupName([out, retval] BSTR* groupName);
601
602     /*!
603         @method estimatedProgress
604         @discussion An estimate of the percent complete for a document load.  This
605         value will range from 0 to 1.0 and, once a load completes, will remain at 1.0 
606         until a new load starts, at which point it will be reset to 0.  The value is an
607         estimate based on the total number of bytes expected to be received
608         for a document, including all it's possible subresources.  For more accurate progress
609         indication it is recommended that you implement a WebFrameLoadDelegate and a
610         WebResourceLoadDelegate.
611         - (double)estimatedProgress;
612     */
613     HRESULT estimatedProgress([out, retval] double* estimatedProgress);
614
615     /*!
616         @method isLoading
617         @discussion Returns YES if there are any pending loads.
618         - (BOOL)isLoading;
619     */
620     HRESULT isLoading([out, retval] BOOL* isLoading);
621
622     /*!
623         @method elementAtPoint:
624         @param point A point in the coordinates of the WebView
625         @result An element dictionary describing the point
626         - (NSDictionary *)elementAtPoint:(NSPoint)point;
627     */
628     HRESULT elementAtPoint([in] LPPOINT point, [out, retval] IPropertyBag** elementDictionary);
629
630     /*!
631         @method pasteboardTypesForSelection
632         @abstract Returns the pasteboard types that WebView can use for the current selection
633         - (NSArray *)pasteboardTypesForSelection;
634     */
635     HRESULT pasteboardTypesForSelection([out, retval] IEnumVARIANT** enumVariant);
636
637     /*!
638         @method writeSelectionWithPasteboardTypes:toPasteboard:
639         @abstract Writes the current selection to the pasteboard
640         @param types The types that WebView will write to the pasteboard
641         @param pasteboard The pasteboard to write to
642         - (void)writeSelectionWithPasteboardTypes:(NSArray *)types toPasteboard:(NSPasteboard *)pasteboard;
643     */
644     HRESULT writeSelectionWithPasteboardTypes([in, size_is(cTypes)] BSTR* types, [in] int cTypes, [in] IDataObject* pasteboard);
645
646     /*!
647         @method pasteboardTypesForElement:
648         @abstract Returns the pasteboard types that WebView can use for an element
649         @param element The element
650         - (NSArray *)pasteboardTypesForElement:(NSDictionary *)element;
651     */
652     HRESULT pasteboardTypesForElement([in] IPropertyBag* elementDictionary, [out, retval] IEnumVARIANT** enumVariant);
653
654     /*!
655         @method writeElement:withPasteboardTypes:toPasteboard:
656         @abstract Writes an element to the pasteboard
657         @param element The element to write to the pasteboard
658         @param types The types that WebView will write to the pasteboard
659         @param pasteboard The pasteboard to write to
660         - (void)writeElement:(NSDictionary *)element withPasteboardTypes:(NSArray *)types toPasteboard:(NSPasteboard *)pasteboard;
661     */
662     HRESULT writeElement([in] IPropertyBag* elementDictionary, [in, size_is(cWithPasteboardTypes)] BSTR* withPasteboardTypes, [in] int cWithPasteboardTypes, [in] IDataObject* pasteboard);
663
664     /*!
665         @method selectedText
666         @abstract Returns the selection as a string
667     */
668     HRESULT selectedText([out, retval] BSTR* text);
669
670     /*!
671         @method centerSelectionInVisibleArea
672         @abstract Centers the selected text in the WebView
673         - (void)centerSelectionInVisibleArea:(id)sender;
674     */
675     HRESULT centerSelectionInVisibleArea([in] IUnknown* sender);
676
677     /*!
678         @method moveDragCaretToPoint:
679         @param point A point in the coordinates of the WebView
680         @discussion This method moves the caret that shows where something being dragged will be dropped. It may cause the WebView to scroll
681         to make the new position of the drag caret visible.
682         - (void)moveDragCaretToPoint:(NSPoint)point;
683     */
684     HRESULT moveDragCaretToPoint([in] LPPOINT point);
685
686     /*!
687         @method removeDragCaret
688         @abstract Removes the drag caret from the WebView
689         - (void)removeDragCaret;
690     */
691     HRESULT removeDragCaret();
692
693     /*!
694         @method setDrawsBackground:
695         @param drawsBackround YES to cause the receiver to draw a default white background, NO otherwise.
696         @abstract Sets whether the receiver draws a default white background when the loaded page has no background specified.
697         - (void)setDrawsBackground:(BOOL)drawsBackround;
698     */
699     HRESULT setDrawsBackground([in] BOOL drawsBackground);
700
701     /*!
702         @method drawsBackground
703         @result Returns YES if the receiver draws a default white background, NO otherwise.
704         - (BOOL)drawsBackground;
705     */
706     HRESULT drawsBackground([out, retval] BOOL* drawsBackground);
707
708     /*!
709         @method setMainFrameURL:
710         @param URLString The URL to load in the mainFrame.
711         - (void)setMainFrameURL:(NSString *)URLString;
712     */
713     HRESULT setMainFrameURL([in] BSTR urlString);
714
715     /*!
716         @method mainFrameURL
717         @result Returns the main frame's current URL.
718         - (NSString *)mainFrameURL;
719     */
720     HRESULT mainFrameURL([out, retval] BSTR* urlString);
721
722     /*!
723         @method mainFrameDocument
724         @result Returns the main frame's DOMDocument.
725         - (DOMDocument *)mainFrameDocument;
726     */
727     HRESULT mainFrameDocument([out, retval] IDOMDocument** document);
728
729     /*!
730         @method mainFrameTitle
731         @result Returns the main frame's title if any, otherwise an empty string.
732         - (NSString *)mainFrameTitle;
733     */
734     HRESULT mainFrameTitle([out, retval] BSTR* title);
735
736     /*!
737         @method mainFrameIcon
738         @discussion The methods returns the site icon for the current page loaded in the mainFrame.
739         @result Returns the main frame's icon if any, otherwise nil.
740         - (NSImage *)mainFrameIcon;
741     */
742     HRESULT mainFrameIcon([out, retval] HBITMAP* hBitmap);
743
744     /*!
745         @method registerURLSchemeAsLocal
746         @discussion Adds the scheme to the list of schemes to be treated as local.
747         @param scheme The scheme to register.
748         + (void)registerURLSchemeAsLocal:(NSString *)scheme;
749     */
750     HRESULT registerURLSchemeAsLocal([in] BSTR scheme);
751
752     /*!
753         @method close
754         @abstract Closes the receiver, unloading its web page and canceling any pending loads.
755         Once the receiver has closed, it will no longer respond to requests or fire delegate methods.
756         (However, the -close method itself may fire delegate methods.)
757         @discussion A garbage collected application is required to call close when the receiver is no longer needed.
758         The close method will be called automatically when the window or hostWindow closes and shouldCloseWithWindow returns YES.
759         A non-garbage collected application can still call close, providing a convenient way to prevent receiver
760         from doing any more loading and firing any future delegate methods.
761     */
762     HRESULT close();
763 }
764
765 /*
766     @interface WebView (WebIBActions) <NSUserInterfaceValidations>
767 */
768 [
769     object,
770     oleautomation,
771     uuid(8F0E3A30-B924-44f8-990A-1AE61ED6C632),
772     pointer_default(unique)
773 ]
774 interface IWebIBActions : IUnknown
775 {
776     /*
777         - (IBAction)takeStringURLFrom:(id)sender;
778     */
779     HRESULT takeStringURLFrom([in] IUnknown* sender);
780
781     /*
782         - (IBAction)stopLoading:(id)sender;
783     */
784     HRESULT stopLoading([in] IUnknown* sender);
785
786     /*
787         - (IBAction)reload:(id)sender;
788     */
789     HRESULT reload([in] IUnknown* sender);
790
791     /*
792         - (BOOL)canGoBack;
793     */
794     HRESULT canGoBack([in] IUnknown* sender, [out, retval] BOOL* result);
795
796     /*
797         - (IBAction)goBack:(id)sender;
798     */
799     HRESULT goBack([in] IUnknown* sender);
800
801     /*
802         - (BOOL)canGoForward;
803     */
804     HRESULT canGoForward([in] IUnknown* sender, [out, retval] BOOL* result);
805
806     /*
807         - (IBAction)goForward:(id)sender;
808     */
809     HRESULT goForward([in] IUnknown* sender);
810
811     /*
812         - (BOOL)canMakeTextLarger;
813     */
814     HRESULT canMakeTextLarger([in] IUnknown* sender, [out, retval] BOOL* result);
815
816     /*
817         - (IBAction)makeTextLarger:(id)sender;
818     */
819     HRESULT makeTextLarger([in] IUnknown* sender);
820
821     /*
822         - (BOOL)canMakeTextSmaller;
823     */
824     HRESULT canMakeTextSmaller([in] IUnknown* sender, [out, retval] BOOL* result);
825
826     /*
827         - (IBAction)makeTextSmaller:(id)sender;
828     */
829     HRESULT makeTextSmaller([in] IUnknown* sender);
830
831     /*
832         - (BOOL)canMakeTextStandardSize;
833     */
834     HRESULT canMakeTextStandardSize([in] IUnknown* sender, [out, retval] BOOL* result);
835
836     /*
837         - (IBAction)makeTextStandardSize:(id)sender;
838     */
839     HRESULT makeTextStandardSize([in] IUnknown* sender);
840
841     /*
842         - (IBAction)toggleContinuousSpellChecking:(id)sender;
843     */
844     HRESULT toggleContinuousSpellChecking([in] IUnknown* sender);
845
846     /*
847         - (IBAction)toggleSmartInsertDelete:(id)sender;
848     */
849     HRESULT toggleSmartInsertDelete([in] IUnknown* sender);
850
851     /*
852         - (void)toggleGrammarChecking:(id)sender
853     */
854     HRESULT toggleGrammarChecking([in] IUnknown* sender);
855
856        /*!
857         @method setPageSizeMultiplier:
858         @abstract Set a zoom factor for all views managed by this webView.
859         @param multiplier A fractional percentage value, 1.0 is 100%.
860         - (void)setPageSizeMultiplier:(float)multiplier;
861     */
862     HRESULT setPageSizeMultiplier([in] float multiplier);
863
864     /*!
865         @method pageSizeMultiplier
866         @result The page size multipler.
867         - (float)pageSizeMultiplier;
868     */    
869     HRESULT pageSizeMultiplier([out, retval] float* multiplier);
870
871     /*
872         - (BOOL)canZoomPageIn;
873     */
874     HRESULT canZoomPageIn([in] IUnknown* sender, [out, retval] BOOL* result);
875
876     /*
877         - (IBAction)zoomPageIn:(id)sender;
878     */
879     HRESULT zoomPageIn([in] IUnknown* sender);
880
881     /*
882         - (BOOL)canZoomPageOut;
883     */
884     HRESULT canZoomPageOut([in] IUnknown* sender, [out, retval] BOOL* result);
885
886     /*
887         - (IBAction)zoomPageOut:(id)sender;
888     */
889     HRESULT zoomPageOut([in] IUnknown* sender);
890
891     /*
892         - (BOOL)canResetPageZoom;
893     */
894     HRESULT canResetPageZoom([in] IUnknown* sender, [out, retval] BOOL* result);
895
896     /*
897         - (IBAction)resetPageZoom:(id)sender;
898     */
899     HRESULT resetPageZoom([in] IUnknown* sender);
900
901     /*
902         - (IBAction)reloadFromOrigin:(id)sender;
903     */
904     HRESULT reloadFromOrigin([in] IUnknown* sender);
905 }
906
907 /*
908     @interface WebView (WebViewCSS)
909 */
910 [
911     object,
912     oleautomation,
913     uuid(ADF68A8C-336F-405c-A053-3D11A9D5B092),
914     pointer_default(unique)
915 ]
916 interface IWebViewCSS : IUnknown
917 {
918     /*
919         - (DOMCSSStyleDeclaration *)computedStyleForElement:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
920     */
921     HRESULT computedStyleForElement([in] IDOMElement* element, [in] BSTR pseudoElement, [out, retval] IDOMCSSStyleDeclaration** style);
922 }
923
924 /*
925     @interface WebView (WebViewEditing)
926 */
927 [
928     object,
929     oleautomation,
930     uuid(07BDAC9A-19A1-4086-864D-BAD9E0F00D5C),
931     pointer_default(unique)
932 ]
933 interface IWebViewEditing : IUnknown
934 {
935     /*
936         - (DOMRange *)editableDOMRangeForPoint:(NSPoint)point;
937     */
938     HRESULT editableDOMRangeForPoint([in] LPPOINT point, [out, retval] IDOMRange** range);
939
940     /*
941         - (void)setSelectedDOMRange:(DOMRange *)range affinity:(NSSelectionAffinity)selectionAffinity;
942     */
943     HRESULT setSelectedDOMRange([in] IDOMRange* range, [in] WebSelectionAffinity affinity);
944
945     /*
946         - (DOMRange *)selectedDOMRange;
947     */
948     HRESULT selectedDOMRange([out, retval] IDOMRange** range);
949
950     /*
951         - (NSSelectionAffinity)selectionAffinity;
952     */
953     HRESULT selectionAffinity([out, retval] [out, retval] WebSelectionAffinity* affinity);
954
955     /*
956         - (void)setEditable:(BOOL)flag;
957     */
958     HRESULT setEditable([in] BOOL flag);
959
960     /*
961         - (BOOL)isEditable;
962     */
963     HRESULT isEditable([out, retval] BOOL* isEditable);
964
965     /*
966         - (void)setTypingStyle:(DOMCSSStyleDeclaration *)style;
967     */
968     HRESULT setTypingStyle([in] IDOMCSSStyleDeclaration* style);
969
970     /*
971         - (DOMCSSStyleDeclaration *)typingStyle;
972     */
973     HRESULT typingStyle([out, retval] IDOMCSSStyleDeclaration** style);
974
975     /*
976         - (void)setSmartInsertDeleteEnabled:(BOOL)flag;
977     */
978     HRESULT setSmartInsertDeleteEnabled([in] BOOL flag);
979
980     /*
981         - (BOOL)smartInsertDeleteEnabled;
982     */
983     HRESULT smartInsertDeleteEnabled([out, retval] BOOL* enabled);
984
985     /*
986         - (void)setContinuousSpellCheckingEnabled:(BOOL)flag;
987     */
988     HRESULT setContinuousSpellCheckingEnabled([in] BOOL flag);
989
990     /*
991         - (BOOL)isContinuousSpellCheckingEnabled;
992     */
993     HRESULT isContinuousSpellCheckingEnabled([out, retval] BOOL* enabled);
994
995     /*
996         - (WebNSInt)spellCheckerDocumentTag;
997     */
998     HRESULT spellCheckerDocumentTag([out, retval] int* tag);
999
1000     /*
1001         - (NSUndoManager *)undoManager;
1002     */
1003     HRESULT undoManager([out, retval] IWebUndoManager** manager);
1004
1005     /*
1006         - (void)setEditingDelegate:(id)delegate;
1007     */
1008     HRESULT setEditingDelegate([in] IWebEditingDelegate* d);
1009
1010     /*
1011         - (id)editingDelegate;
1012     */
1013     HRESULT editingDelegate([out, retval] IWebEditingDelegate** d);
1014
1015     /*
1016         - (DOMCSSStyleDeclaration *)styleDeclarationWithText:(NSString *)text;
1017     */
1018     HRESULT styleDeclarationWithText([in] BSTR text, [out, retval] IDOMCSSStyleDeclaration** style);
1019
1020     /*
1021         - (BOOL)hasSelectedRange;
1022     */
1023     HRESULT hasSelectedRange([out, retval] BOOL* hasSelectedRange);
1024
1025     /*
1026         - (BOOL)cutEnabled;
1027     */
1028     HRESULT cutEnabled([out, retval] BOOL* enabled);
1029
1030     /*
1031         - (BOOL)copyEnabled;
1032     */
1033     HRESULT copyEnabled([out, retval] BOOL* enabled);
1034
1035     /*
1036         - (BOOL)pasteEnabled;
1037     */
1038     HRESULT pasteEnabled([out, retval] BOOL* enabled);
1039
1040     /*
1041         - (BOOL)deleteEnabled;
1042     */
1043     HRESULT deleteEnabled([out, retval] BOOL* enabled);
1044
1045     /*
1046         - (BOOL)editingEnabled;
1047     */
1048     HRESULT editingEnabled([out, retval] BOOL* enabled);
1049
1050     /*
1051         - (BOOL)isGrammarCheckingEnabled
1052     */
1053     HRESULT isGrammarCheckingEnabled([out, retval] BOOL* enabled);
1054
1055     /*
1056         - (void)setGrammarCheckingEnabled:(BOOL)flag
1057     */
1058     HRESULT setGrammarCheckingEnabled(BOOL enabled);
1059
1060     /*
1061         - (void)setSelectTrailingWhitespaceEnabled:(BOOL)flag;
1062     */
1063     HRESULT setSelectTrailingWhitespaceEnabled([in] BOOL flag);
1064
1065     /*
1066         - (BOOL)selectTrailingWhitespaceEnabled;
1067     */
1068     HRESULT isSelectTrailingWhitespaceEnabled([out, retval] BOOL* enabled);
1069 }
1070
1071 /*
1072     @interface WebView (WebViewUndoableEditing)
1073 */
1074 [
1075     object,
1076     oleautomation,
1077     uuid(639E7121-13C8-4a12-BC18-6E1F3D68F3C3),
1078     pointer_default(unique)
1079 ]
1080 interface IWebViewUndoableEditing : IUnknown
1081 {
1082     /*
1083         - (void)replaceSelectionWithNode:(DOMNode *)node; 
1084     */
1085     HRESULT replaceSelectionWithNode([in] IDOMNode* node);
1086
1087     /*
1088         - (void)replaceSelectionWithText:(NSString *)text;    
1089     */
1090     HRESULT replaceSelectionWithText([in] BSTR text);
1091
1092     /*
1093         - (void)replaceSelectionWithMarkupString:(NSString *)markupString;
1094     */
1095     HRESULT replaceSelectionWithMarkupString([in] BSTR markupString);
1096
1097     /*
1098         - (void)replaceSelectionWithArchive:(WebArchive *)archive;
1099     */
1100     HRESULT replaceSelectionWithArchive([in] IWebArchive* archive);
1101
1102     /*
1103         - (void)deleteSelection;    
1104     */
1105     HRESULT deleteSelection();
1106
1107     /*
1108         - (void)clearSelection;    
1109     */
1110     HRESULT clearSelection();
1111
1112     /*
1113         - (void)applyStyle:(DOMCSSStyleDeclaration *)style;
1114     */
1115     HRESULT applyStyle([in] IDOMCSSStyleDeclaration* style);
1116 }
1117
1118 /*
1119     @interface WebView (WebViewEditingActions)
1120 */
1121 [
1122     object,
1123     oleautomation,
1124     uuid(7E066C42-8E81-4778-888D-D6CC93E27D4C),
1125     pointer_default(unique)
1126 ]
1127 interface IWebViewEditingActions : IUnknown
1128 {
1129     /*
1130         - (void)copy:(id)sender;
1131     */
1132     HRESULT copy([in] IUnknown* sender);
1133
1134     /*
1135         - (void)cut:(id)sender;
1136     */
1137     HRESULT cut([in] IUnknown* sender);
1138
1139     /*
1140         - (void)paste:(id)sender;
1141     */
1142     HRESULT paste([in] IUnknown* sender);
1143
1144     /*
1145         - (void)copyURL:(id)sender;
1146     */
1147     HRESULT copyURL([in] BSTR url);
1148
1149     /*
1150         - (void)copyFont:(id)sender;
1151     */
1152     HRESULT copyFont([in] IUnknown* sender);
1153
1154     /*
1155         - (void)pasteFont:(id)sender;
1156     */
1157     HRESULT pasteFont([in] IUnknown* sender);
1158
1159     /*
1160         - (void)delete:(id)sender;
1161     */
1162     HRESULT delete_([in] IUnknown* sender);
1163
1164     /*
1165         - (void)pasteAsPlainText:(id)sender;
1166     */
1167     HRESULT pasteAsPlainText([in] IUnknown* sender);
1168
1169     /*
1170         - (void)pasteAsRichText:(id)sender;
1171     */
1172     HRESULT pasteAsRichText([in] IUnknown* sender);
1173
1174
1175     /*
1176         - (void)changeFont:(id)sender;
1177     */
1178     HRESULT changeFont([in] IUnknown* sender);
1179
1180     /*
1181         - (void)changeAttributes:(id)sender;
1182     */
1183     HRESULT changeAttributes([in] IUnknown* sender);
1184
1185     /*
1186         - (void)changeDocumentBackgroundColor:(id)sender;
1187     */
1188     HRESULT changeDocumentBackgroundColor([in] IUnknown* sender);
1189
1190     /*
1191         - (void)changeColor:(id)sender;
1192     */
1193     HRESULT changeColor([in] IUnknown* sender);
1194
1195
1196     /*
1197         - (void)alignCenter:(id)sender;
1198     */
1199     HRESULT alignCenter([in] IUnknown* sender);
1200
1201     /*
1202         - (void)alignJustified:(id)sender;
1203     */
1204     HRESULT alignJustified([in] IUnknown* sender);
1205
1206     /*
1207         - (void)alignLeft:(id)sender;
1208     */
1209     HRESULT alignLeft([in] IUnknown* sender);
1210
1211     /*
1212         - (void)alignRight:(id)sender;
1213     */
1214     HRESULT alignRight([in] IUnknown* sender);
1215
1216
1217     /*
1218         - (void)checkSpelling:(id)sender;
1219     */
1220     HRESULT checkSpelling([in] IUnknown* sender);
1221
1222     /*
1223         - (void)showGuessPanel:(id)sender;
1224     */
1225     HRESULT showGuessPanel([in] IUnknown* sender);
1226
1227     /*
1228         - (void)performFindPanelAction:(id)sender;
1229     */
1230     HRESULT performFindPanelAction([in] IUnknown* sender);
1231
1232
1233     /*
1234         - (void)startSpeaking:(id)sender;
1235     */
1236     HRESULT startSpeaking([in] IUnknown* sender);
1237
1238     /*
1239         - (void)stopSpeaking:(id)sender;
1240     */
1241     HRESULT stopSpeaking([in] IUnknown* sender);
1242 }
1243
1244
1245