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