diff -r 000000000000 -r dd21522fd290 webengine/osswebengine/WebKit/win/Interfaces/IWebView.idl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/osswebengine/WebKit/win/Interfaces/IWebView.idl Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,1160 @@ +/* + * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +cpp_quote("/*") +cpp_quote(" * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.") +cpp_quote(" *") +cpp_quote(" * Redistribution and use in source and binary forms, with or without") +cpp_quote(" * modification, are permitted provided that the following conditions") +cpp_quote(" * are met:") +cpp_quote(" * 1. Redistributions of source code must retain the above copyright") +cpp_quote(" * notice, this list of conditions and the following disclaimer.") +cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright") +cpp_quote(" * notice, this list of conditions and the following disclaimer in the") +cpp_quote(" * documentation and/or other materials provided with the distribution.") +cpp_quote(" *") +cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY") +cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE") +cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR") +cpp_quote(" * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR") +cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,") +cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,") +cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR") +cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY") +cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT") +cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE") +cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ") +cpp_quote(" */") + +cpp_quote("/* identifiers for commands that can be called by the webview's frame */") +cpp_quote("enum WebViewCmd { Cut = 100, Copy, Paste, ForwardDelete, SelectAll, Undo, Redo };") + +cpp_quote("#define WebViewProgressStartedNotification TEXT(\"WebProgressStartedNotification\")") +cpp_quote("#define WebViewProgressEstimateChangedNotification TEXT(\"WebProgressEstimateChangedNotification\")") +cpp_quote("#define WebViewProgressFinishedNotification TEXT(\"WebProgressFinishedNotification\")") + +import "oaidl.idl"; +import "ocidl.idl"; +import "IWebUIDelegate.idl"; +import "IWebURLResponse.idl"; +import "IWebResourceLoadDelegate.idl"; +import "IWebDownload.idl"; +import "IWebFrameLoadDelegate.idl"; +import "IWebPolicyDelegate.idl"; +import "IWebBackForwardList.idl"; +import "IWebHistoryItem.idl"; +import "IWebPreferences.idl"; +import "DOMCSS.idl"; +import "IWebUndoManager.idl"; +import "IWebEditingDelegate.idl"; +import "DOMRange.idl"; + +interface IDOMCSSStyleDeclaration; +interface IDOMDocument; +interface IDOMElement; +interface IDOMNode; +interface IDOMRange; + +interface IWebArchive; +interface IWebBackForwardList; +interface IWebDataSource; +interface IWebFrame; +interface IWebFrameView; +interface IWebHistoryItem; +interface IWebPreferences; +interface IWebScriptObject; + +interface IWebUIDelegate; +interface IWebResourceLoadDelegate; +interface IWebDownloadDelegate; +interface IWebEditingDelegate; +interface IWebFrameLoadDelegate; +interface IWebPolicyDelegate; +interface IWebDocumentView; +interface IWebDocumentRepresentation; +interface IWebUndoManager; + +/* These are the keys for the WebElementPropertyBag */ +const LPCOLESTR WebElementDOMNodeKey = L"WebElementDOMNodeKey"; +const LPCOLESTR WebElementFrameKey = L"WebElementFrameKey"; +const LPCOLESTR WebElementImageAltStringKey = L"WebElementImageAltStringKey"; +const LPCOLESTR WebElementImageKey = L"WebElementImageKey"; +const LPCOLESTR WebElementImageRectKey = L"WebElementImageRectKey"; +const LPCOLESTR WebElementImageURLKey = L"WebElementImageURLKey"; +const LPCOLESTR WebElementIsSelectedKey = L"WebElementIsSelectedKey"; +const LPCOLESTR WebElementSpellingToolTipKey = L"WebElementSpellingToolTipKey"; +const LPCOLESTR WebElementTitleKey = L"WebElementTitleKey"; +const LPCOLESTR WebElementLinkURLKey = L"WebElementLinkURLKey"; +const LPCOLESTR WebElementLinkTargetFrameKey = L"WebElementLinkTargetFrameKey"; +const LPCOLESTR WebElementLinkTitleKey = L"WebElementLinkTitleKey"; +const LPCOLESTR WebElementLinkLabelKey = L"WebElementLinkLabelKey"; +const LPCOLESTR WebElementIsContentEditableKey = L"WebElementIsContentEditableKey"; + +/*! + @class IEnumTextMatches +*/ +[ + object, + oleautomation, + uuid(C0CDE63A-5ED1-453f-B937-93B1A61AD3B3), + pointer_default(unique) +] +interface IEnumTextMatches : IUnknown +{ + HRESULT Next(ULONG celt, RECT* rect, ULONG* pceltFetched); + HRESULT Skip(ULONG celt); + HRESULT Reset(void); + HRESULT Clone(IEnumTextMatches** ppenum); +}; + +/*! + @class WebView + WebView manages the interaction between WebFrameViews and WebDataSources. Modification + of the policies and behavior of the WebKit is largely managed by WebViews and their + delegates. + +

+ Typical usage: +

+
+    WebView *webView;
+    WebFrame *mainFrame;
+    
+    webView  = [[WebView alloc] initWithFrame: NSMakeRect (0,0,640,480)];
+    mainFrame = [webView mainFrame];
+    [mainFrame loadRequest:request];
+    
+ + WebViews have the following delegates: WebUIDelegate, WebResourceLoadDelegate, + WebFrameLoadDelegate, and WebPolicyDelegate. + + WebKit depends on the WebView's WebUIDelegate for all window + related management, including opening new windows and controlling the user interface + elements in those windows. + + WebResourceLoadDelegate is used to monitor the progress of resources as they are + loaded. This delegate may be used to present users with a progress monitor. + + The WebFrameLoadDelegate receives messages when the URL in a WebFrame is + changed. + + WebView's WebPolicyDelegate can make determinations about how + content should be handled, based on the resource's URL and MIME type. + + @interface WebView : NSView +*/ +[ + object, + oleautomation, + hidden, + uuid(174BBEFD-058E-49c7-91DF-6F110AA4AC28), + pointer_default(unique) +] +interface IWebView : IUnknown +{ + /*! + @method canShowMIMEType: + @abstract Checks if the WebKit can show content of a certain MIME type. + @param MIMEType The MIME type to check. + @result YES if the WebKit can show content with MIMEtype. + + (BOOL)canShowMIMEType:(NSString *)MIMEType; + */ + HRESULT canShowMIMEType([in] BSTR mimeType, [out, retval] BOOL* canShow); + + /*! + @method canShowMIMETypeAsHTML: + @abstract Checks if the the MIME type is a type that the WebKit will interpret as HTML. + @param MIMEType The MIME type to check. + @result YES if the MIMEtype in an HTML type. + + (BOOL)canShowMIMETypeAsHTML:(NSString *)MIMEType; + */ + HRESULT canShowMIMETypeAsHTML([in] BSTR mimeType, [out, retval] BOOL* canShow); + + /*! + @method MIMETypesShownAsHTML + @result Returns an array of NSStrings that describe the MIME types + WebKit will attempt to render as HTML. + + (NSArray *)MIMETypesShownAsHTML; + */ + HRESULT MIMETypesShownAsHTML([out, retval] IEnumVARIANT** enumVariant); + + /*! + @method setMIMETypesShownAsHTML: + @discussion Sets the array of NSString MIME types that WebKit will + attempt to render as HTML. Typically you will retrieve the built-in + array using MIMETypesShownAsHTML and add additional MIME types to that + array. + + (void)setMIMETypesShownAsHTML:(NSArray *)MIMETypes; + */ + HRESULT setMIMETypesShownAsHTML([in, size_is(cMimeTypes)] BSTR* mimeTypes, [in] int cMimeTypes); + + /*! + @method URLFromPasteboard: + @abstract Returns a URL from a pasteboard + @param pasteboard The pasteboard with a URL + @result A URL if the pasteboard has one. Nil if it does not. + @discussion This method differs than NSURL's URLFromPasteboard method in that it tries multiple pasteboard types + including NSURLPboardType to find a URL on the pasteboard. + + (NSURL *)URLFromPasteboard:(NSPasteboard *)pasteboard; + */ + HRESULT URLFromPasteboard([in] IDataObject* pasteboard, [out, retval] BSTR* url); + + /*! + @method URLTitleFromPasteboard: + @abstract Returns a URL title from a pasteboard + @param pasteboard The pasteboard with a URL title + @result A URL title if the pasteboard has one. Nil if it does not. + @discussion This method returns a title that refers a URL on the pasteboard. An example of this is the link label + which is the text inside the anchor tag. + + (NSString *)URLTitleFromPasteboard:(NSPasteboard *)pasteboard; + */ + HRESULT URLTitleFromPasteboard([in] IDataObject* pasteboard, [out, retval] BSTR* urlTitle); + + /*! + @method initWithFrame:frameName:groupName: + @abstract The designated initializer for WebView. + @discussion Initialize a WebView with the supplied parameters. This method will + create a main WebFrame with the view. Passing a top level frame name is useful if you + handle a targetted frame navigation that would normally open a window in some other + way that still ends up creating a new WebView. + @param frame The frame used to create the view. + @param frameName The name to use for the top level frame. May be nil. + @param groupName The name of the webView set to which this webView will be added. May be nil. + @result Returns an initialized WebView. + - (id)initWithFrame:(NSRect)frame frameName:(NSString *)frameName groupName:(NSString *)groupName; + */ + HRESULT initWithFrame([in] RECT frame, [in] BSTR frameName, [in] BSTR groupName); + + /*! + @method setUIDelegate: + @abstract Set the WebView's WebUIDelegate. + @param delegate The WebUIDelegate to set as the delegate. + - (void)setUIDelegate:(id)delegate; + */ + HRESULT setUIDelegate([in] IWebUIDelegate* d); + + /*! + @method UIDelegate + @abstract Return the WebView's WebUIDelegate. + @result The WebView's WebUIDelegate. + - (id)UIDelegate; + */ + HRESULT uiDelegate([retval, out] IWebUIDelegate** d); + + /*! + @method setResourceLoadDelegate: + @abstract Set the WebView's WebResourceLoadDelegate load delegate. + @param delegate The WebResourceLoadDelegate to set as the load delegate. + - (void)setResourceLoadDelegate:(id)delegate; + */ + HRESULT setResourceLoadDelegate([in] IWebResourceLoadDelegate* d); + + /*! + @method resourceLoadDelegate + @result Return the WebView's WebResourceLoadDelegate. + - (id)resourceLoadDelegate; + */ + HRESULT resourceLoadDelegate([retval, out] IWebResourceLoadDelegate** d); + + /*! + @method setDownloadDelegate: + @abstract Set the WebView's WebDownloadDelegate. + @discussion The download delegate is retained by WebDownload when any downloads are in progress. + @param delegate The WebDownloadDelegate to set as the download delegate. + - (void)setDownloadDelegate:(id)delegate; + */ + HRESULT setDownloadDelegate([in] IWebDownloadDelegate* d); + + /*! + @method downloadDelegate + @abstract Return the WebView's WebDownloadDelegate. + @result The WebView's WebDownloadDelegate. + - (id)downloadDelegate; + */ + HRESULT downloadDelegate([retval, out] IWebDownloadDelegate** d); + + /*! + @method setFrameLoadDelegate: + @abstract Set the WebView's WebFrameLoadDelegate delegate. + @param delegate The WebFrameLoadDelegate to set as the delegate. + - (void)setFrameLoadDelegate:(id)delegate; + */ + HRESULT setFrameLoadDelegate([in] IWebFrameLoadDelegate* d); + + /*! + @method frameLoadDelegate + @abstract Return the WebView's WebFrameLoadDelegate delegate. + @result The WebView's WebFrameLoadDelegate delegate. + - (id)frameLoadDelegate; + */ + HRESULT frameLoadDelegate([retval, out] IWebFrameLoadDelegate** d); + + /*! + @method setPolicyDelegate: + @abstract Set the WebView's WebPolicyDelegate delegate. + @param delegate The WebPolicyDelegate to set as the delegate. + - (void)setPolicyDelegate:(id)delegate; + */ + HRESULT setPolicyDelegate([in] IWebPolicyDelegate* d); + + /*! + @method policyDelegate + @abstract Return the WebView's WebPolicyDelegate. + @result The WebView's WebPolicyDelegate. + - (id)policyDelegate; + */ + HRESULT policyDelegate([retval, out] IWebPolicyDelegate** d); + + /*! + @method mainFrame + @abstract Return the top level frame. + @discussion Note that even document that are not framesets will have a + mainFrame. + @result The main frame. + - (WebFrame *)mainFrame; + */ + HRESULT mainFrame([retval, out] IWebFrame** frame); + + /*! + @method focusedFrame + @abstract Return the frame that has the current focus. + */ + HRESULT focusedFrame([retval, out] IWebFrame** frame); + + /*! + @method backForwardList + @result The backforward list for this webView. + - (WebBackForwardList *)backForwardList; + */ + HRESULT backForwardList([retval, out] IWebBackForwardList** list); + + /*! + @method setMaintainsBackForwardList: + @abstract Enable or disable the use of a backforward list for this webView. + @param flag Turns use of the back forward list on or off + - (void)setMaintainsBackForwardList:(BOOL)flag; + */ + HRESULT setMaintainsBackForwardList([in] BOOL flag); + + /*! + @method goBack + @abstract Go back to the previous URL in the backforward list. + @result YES if able to go back in the backforward list, NO otherwise. + - (BOOL)goBack; + */ + HRESULT goBack([out, retval] BOOL* succeeded); + + /*! + @method goForward + @abstract Go forward to the next URL in the backforward list. + @result YES if able to go forward in the backforward list, NO otherwise. + - (BOOL)goForward; + */ + HRESULT goForward([out, retval] BOOL* succeeded); + + /*! + @method goToBackForwardItem: + @abstract Go back or forward to an item in the backforward list. + @result YES if able to go to the item, NO otherwise. + - (BOOL)goToBackForwardItem:(WebHistoryItem *)item; + */ + HRESULT goToBackForwardItem([in] IWebHistoryItem* item, [out, retval] BOOL* succeeded); + + /*! + @method setTextSizeMultiplier: + @abstract Change the size of the text rendering in views managed by this webView. + @param multiplier A fractional percentage value, 1.0 is 100%. + - (void)setTextSizeMultiplier:(float)multiplier; + */ + HRESULT setTextSizeMultiplier([in] float multiplier); + + /*! + @method textSizeMultiplier + @result The text size multipler. + - (float)textSizeMultiplier; + */ + HRESULT textSizeMultiplier([out, retval] float* multiplier); + + /*! + @method setApplicationNameForUserAgent: + @abstract Set the application name. + @discussion This name will be used in user-agent strings + that are chosen for best results in rendering web pages. + @param applicationName The application name + - (void)setApplicationNameForUserAgent:(NSString *)applicationName; + */ + HRESULT setApplicationNameForUserAgent([in] BSTR applicationName); + + /*! + @method applicationNameForUserAgent + @result The name of the application as used in the user-agent string. + - (NSString *)applicationNameForUserAgent; + */ + HRESULT applicationNameForUserAgent([out, retval] BSTR* applicationName); + + /*! + @method setCustomUserAgent: + @abstract Set the user agent. + @discussion Setting this means that the webView should use this user-agent string + instead of constructing a user-agent string for each URL. Setting it to nil + causes the webView to construct the user-agent string for each URL + for best results rendering web pages. + @param userAgentString The user agent description + - (void)setCustomUserAgent:(NSString *)userAgentString; + */ + HRESULT setCustomUserAgent([in] BSTR userAgentString); + + /*! + @method customUserAgent + @result The custom user-agent string or nil if no custom user-agent string has been set. + - (NSString *)customUserAgent; + */ + HRESULT customUserAgent([out, retval] BSTR* userAgentString); + + /*! + @method userAgentForURL: + @abstract Get the appropriate user-agent string for a particular URL. + @param URL The URL. + @result The user-agent string for the supplied URL. + - (NSString *)userAgentForURL:(NSURL *)URL; + */ + HRESULT userAgentForURL([in] BSTR url, [out, retval] BSTR* userAgent); + + /*! + @method supportsTextEncoding + @abstract Find out if the current web page supports text encodings. + @result YES if the document view of the current web page can + support different text encodings. + - (BOOL)supportsTextEncoding; + */ + HRESULT supportsTextEncoding([out, retval] BOOL* supports); + + /*! + @method setCustomTextEncodingName: + @discussion Make the page display with a different text encoding; stops any load in progress. + The text encoding passed in overrides the normal text encoding smarts including + what's specified in a web page's header or HTTP response. + The text encoding automatically goes back to the default when the top level frame + changes to a new location. + Setting the text encoding name to nil makes the webView use default encoding rules. + @param encoding The text encoding name to use to display a page or nil. + - (void)setCustomTextEncodingName:(NSString *)encodingName; + */ + HRESULT setCustomTextEncodingName([in] BSTR encodingName); + + /*! + @method customTextEncodingName + @result The custom text encoding name or nil if no custom text encoding name has been set. + - (NSString *)customTextEncodingName; + */ + HRESULT customTextEncodingName([out, retval] BSTR* encodingName); + + /*! + @method setMediaStyle: + @discussion Set the media style for the WebView. The mediaStyle will override the normal value + of the CSS media property. Setting the value to nil will restore the normal value. + @param mediaStyle The value to use for the CSS media property. + - (void)setMediaStyle:(NSString *)mediaStyle; + */ + HRESULT setMediaStyle([in] BSTR media); + + /*! + @method mediaStyle + @result mediaStyle The value to use for the CSS media property, as set by setMediaStyle:. It + will be nil unless set by that method. + - (NSString *)mediaStyle; + */ + HRESULT mediaStyle([out, retval] BSTR* media); + + /*! + @method stringByEvaluatingJavaScriptFromString: + @param script The text of the JavaScript. + @result The result of the script, converted to a string, or nil for failure. + - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script; + */ + HRESULT stringByEvaluatingJavaScriptFromString([in] BSTR script, [out, retval] BSTR* result); + + /*! + @method windowScriptObject + @discussion windowScriptObject return a WebScriptObject that represents the + window object from the script environment. + @result Returns the window object from the script environment. + - (WebScriptObject *)windowScriptObject; + */ + HRESULT windowScriptObject([out, retval] IWebScriptObject** webScriptObject); + + /*! + @method setPreferences: + @param preferences The preferences to use for the webView. + @abstract Override the standard setting for the webView. + - (void)setPreferences: (WebPreferences *)prefs; + */ + HRESULT setPreferences([in] IWebPreferences* prefs); + + /*! + @method preferences + @result Returns the preferences used by this webView. + @discussion This method will return [WebPreferences standardPreferences] if no + other instance of WebPreferences has been set. + - (WebPreferences *)preferences; + */ + HRESULT preferences([out, retval] IWebPreferences** prefs); + + /*! + @method setPreferencesIdentifier: + @param anIdentifier The string to use a prefix for storing values for this WebView in the user + defaults database. + @discussion If the WebPreferences for this WebView are stored in the user defaults database, the + string set in this method will be used a key prefix. + - (void)setPreferencesIdentifier:(NSString *)anIdentifier; + */ + HRESULT setPreferencesIdentifier([in] BSTR anIdentifier); + + /*! + @method preferencesIdentifier + @result Returns the WebPreferences key prefix. + - (NSString *)preferencesIdentifier; + */ + HRESULT preferencesIdentifier([out, retval] BSTR* anIdentifier); + + /*! + @method setHostWindow: + @param hostWindow The host window for the web view. + @discussion Parts of WebKit (such as plug-ins and JavaScript) depend on a window to function + properly. Set a host window so these parts continue to function even when the web view is + not in an actual window. + - (void)setHostWindow:(NSWindow *)hostWindow; + */ + HRESULT setHostWindow([in] OLE_HANDLE window); + + /*! + @method hostWindow + @result The host window for the web view. + - (NSWindow *)hostWindow; + */ + HRESULT hostWindow([out, retval] OLE_HANDLE* window); + + /*! + @method searchFor:direction:caseSensitive: + @abstract Searches a document view for a string and highlights the string if it is found. + Starts the search from the current selection. Will search across all frames. + @param string The string to search for. + @param forward YES to search forward, NO to seach backwards. + @param caseFlag YES to for case-sensitive search, NO for case-insensitive search. + @result YES if found, NO if not found. + - (BOOL)searchFor:(NSString *)string direction:(BOOL)forward caseSensitive:(BOOL)caseFlag wrap:(BOOL)wrapFlag; + */ + HRESULT searchFor([in] BSTR str, [in] BOOL forward, [in] BOOL caseFlag, [in] BOOL wrapFlag, [out, retval] BOOL* found); + + /*! + @method registerViewClass:representationClass:forMIMEType: + @discussion Register classes that implement WebDocumentView and WebDocumentRepresentation respectively. + A document class may register for a primary MIME type by excluding + a subtype, i.e. "video/" will match the document class with + all video types. More specific matching takes precedence + over general matching. + @param viewClass The WebDocumentView class to use to render data for a given MIME type. + @param representationClass The WebDocumentRepresentation class to use to represent data of the given MIME type. + @param MIMEType The MIME type to represent with an object of the given class. + + (void)registerViewClass:(Class)viewClass representationClass:(Class)representationClass forMIMEType:(NSString *)MIMEType; + */ + HRESULT registerViewClass([in] IWebDocumentView* view, [in] IWebDocumentRepresentation* representation, [in] BSTR forMIMEType); + + /*! + @method setGroupName: + @param groupName The name of the group for this WebView. + @discussion JavaScript may access named frames within the same group. + - (void)setGroupName:(NSString *)groupName; + */ + HRESULT setGroupName([in] BSTR groupName); + + /*! + @method groupName + @discussion The group name for this WebView. + - (NSString *)groupName; + */ + HRESULT groupName([out, retval] BSTR* groupName); + + /*! + @method estimatedProgress + @discussion An estimate of the percent complete for a document load. This + value will range from 0 to 1.0 and, once a load completes, will remain at 1.0 + until a new load starts, at which point it will be reset to 0. The value is an + estimate based on the total number of bytes expected to be received + for a document, including all it's possible subresources. For more accurate progress + indication it is recommended that you implement a WebFrameLoadDelegate and a + WebResourceLoadDelegate. + - (double)estimatedProgress; + */ + HRESULT estimatedProgress([out, retval] double* estimatedProgress); + + /*! + @method isLoading + @discussion Returns YES if there are any pending loads. + - (BOOL)isLoading; + */ + HRESULT isLoading([out, retval] BOOL* isLoading); + + /*! + @method elementAtPoint: + @param point A point in the coordinates of the WebView + @result An element dictionary describing the point + - (NSDictionary *)elementAtPoint:(NSPoint)point; + */ + HRESULT elementAtPoint([in] LPPOINT point, [out, retval] IPropertyBag** elementDictionary); + + /*! + @method pasteboardTypesForSelection + @abstract Returns the pasteboard types that WebView can use for the current selection + - (NSArray *)pasteboardTypesForSelection; + */ + HRESULT pasteboardTypesForSelection([out, retval] IEnumVARIANT** enumVariant); + + /*! + @method writeSelectionWithPasteboardTypes:toPasteboard: + @abstract Writes the current selection to the pasteboard + @param types The types that WebView will write to the pasteboard + @param pasteboard The pasteboard to write to + - (void)writeSelectionWithPasteboardTypes:(NSArray *)types toPasteboard:(NSPasteboard *)pasteboard; + */ + HRESULT writeSelectionWithPasteboardTypes([in, size_is(cTypes)] BSTR* types, [in] int cTypes, [in] IDataObject* pasteboard); + + /*! + @method pasteboardTypesForElement: + @abstract Returns the pasteboard types that WebView can use for an element + @param element The element + - (NSArray *)pasteboardTypesForElement:(NSDictionary *)element; + */ + HRESULT pasteboardTypesForElement([in] IPropertyBag* elementDictionary, [out, retval] IEnumVARIANT** enumVariant); + + /*! + @method writeElement:withPasteboardTypes:toPasteboard: + @abstract Writes an element to the pasteboard + @param element The element to write to the pasteboard + @param types The types that WebView will write to the pasteboard + @param pasteboard The pasteboard to write to + - (void)writeElement:(NSDictionary *)element withPasteboardTypes:(NSArray *)types toPasteboard:(NSPasteboard *)pasteboard; + */ + HRESULT writeElement([in] IPropertyBag* elementDictionary, [in, size_is(cWithPasteboardTypes)] BSTR* withPasteboardTypes, [in] int cWithPasteboardTypes, [in] IDataObject* pasteboard); + + /*! + @method selectedText + @abstract Returns the selection as a string + */ + HRESULT selectedText([out, retval] BSTR* text); + + /*! + @method centerSelectionInVisibleArea + @abstract Centers the selected text in the WebView + - (void)centerSelectionInVisibleArea:(id)sender; + */ + HRESULT centerSelectionInVisibleArea([in] IUnknown* sender); + + /*! + @method moveDragCaretToPoint: + @param point A point in the coordinates of the WebView + @discussion This method moves the caret that shows where something being dragged will be dropped. It may cause the WebView to scroll + to make the new position of the drag caret visible. + - (void)moveDragCaretToPoint:(NSPoint)point; + */ + HRESULT moveDragCaretToPoint([in] LPPOINT point); + + /*! + @method removeDragCaret + @abstract Removes the drag caret from the WebView + - (void)removeDragCaret; + */ + HRESULT removeDragCaret(); + + /*! + @method setDrawsBackground: + @param drawsBackround YES to cause the receiver to draw a default white background, NO otherwise. + @abstract Sets whether the receiver draws a default white background when the loaded page has no background specified. + - (void)setDrawsBackground:(BOOL)drawsBackround; + */ + HRESULT setDrawsBackground([in] BOOL drawsBackground); + + /*! + @method drawsBackground + @result Returns YES if the receiver draws a default white background, NO otherwise. + - (BOOL)drawsBackground; + */ + HRESULT drawsBackground([out, retval] BOOL* drawsBackground); + + /*! + @method setMainFrameURL: + @param URLString The URL to load in the mainFrame. + - (void)setMainFrameURL:(NSString *)URLString; + */ + HRESULT setMainFrameURL([in] BSTR urlString); + + /*! + @method mainFrameURL + @result Returns the main frame's current URL. + - (NSString *)mainFrameURL; + */ + HRESULT mainFrameURL([out, retval] BSTR* urlString); + + /*! + @method mainFrameDocument + @result Returns the main frame's DOMDocument. + - (DOMDocument *)mainFrameDocument; + */ + HRESULT mainFrameDocument([out, retval] IDOMDocument** document); + + /*! + @method mainFrameTitle + @result Returns the main frame's title if any, otherwise an empty string. + - (NSString *)mainFrameTitle; + */ + HRESULT mainFrameTitle([out, retval] BSTR* title); + + /*! + @method mainFrameIcon + @discussion The methods returns the site icon for the current page loaded in the mainFrame. + @result Returns the main frame's icon if any, otherwise nil. + - (NSImage *)mainFrameIcon; + */ + HRESULT mainFrameIcon([out, retval] OLE_HANDLE* hBitmap); +} + +/* + @interface WebView (WebIBActions) +*/ +[ + object, + oleautomation, + uuid(8F0E3A30-B924-44f8-990A-1AE61ED6C632), + pointer_default(unique) +] +interface IWebIBActions : IUnknown +{ + /* + - (IBAction)takeStringURLFrom:(id)sender; + */ + HRESULT takeStringURLFrom([in] IUnknown* sender); + + /* + - (IBAction)stopLoading:(id)sender; + */ + HRESULT stopLoading([in] IUnknown* sender); + + /* + - (IBAction)reload:(id)sender; + */ + HRESULT reload([in] IUnknown* sender); + + /* + - (BOOL)canGoBack; + */ + HRESULT canGoBack([in] IUnknown* sender, [out, retval] BOOL* result); + + /* + - (IBAction)goBack:(id)sender; + */ + HRESULT goBack([in] IUnknown* sender); + + /* + - (BOOL)canGoForward; + */ + HRESULT canGoForward([in] IUnknown* sender, [out, retval] BOOL* result); + + /* + - (IBAction)goForward:(id)sender; + */ + HRESULT goForward([in] IUnknown* sender); + + /* + - (BOOL)canMakeTextLarger; + */ + HRESULT canMakeTextLarger([in] IUnknown* sender, [out, retval] BOOL* result); + + /* + - (IBAction)makeTextLarger:(id)sender; + */ + HRESULT makeTextLarger([in] IUnknown* sender); + + /* + - (BOOL)canMakeTextSmaller; + */ + HRESULT canMakeTextSmaller([in] IUnknown* sender, [out, retval] BOOL* result); + + /* + - (IBAction)makeTextSmaller:(id)sender; + */ + HRESULT makeTextSmaller([in] IUnknown* sender); + + /* + - (BOOL)canMakeTextStandardSize; + */ + HRESULT canMakeTextStandardSize([in] IUnknown* sender, [out, retval] BOOL* result); + + /* + - (IBAction)makeTextStandardSize:(id)sender; + */ + HRESULT makeTextStandardSize([in] IUnknown* sender); + + /* + - (IBAction)toggleContinuousSpellChecking:(id)sender; + */ + HRESULT toggleContinuousSpellChecking([in] IUnknown* sender); + + /* + - (IBAction)toggleSmartInsertDelete:(id)sender; + */ + HRESULT toggleSmartInsertDelete([in] IUnknown* sender); + + /* + - (void)toggleGrammarChecking:(id)sender + */ + HRESULT toggleGrammarChecking([in] IUnknown* sender); +} + +/* + @interface WebView (WebViewCSS) +*/ +[ + object, + oleautomation, + uuid(ADF68A8C-336F-405c-A053-3D11A9D5B092), + pointer_default(unique) +] +interface IWebViewCSS : IUnknown +{ + /* + - (DOMCSSStyleDeclaration *)computedStyleForElement:(DOMElement *)element pseudoElement:(NSString *)pseudoElement; + */ + HRESULT computedStyleForElement([in] IDOMElement* element, [in] BSTR pseudoElement, [out, retval] IDOMCSSStyleDeclaration** style); +} + +/* + @interface WebView (WebViewEditing) +*/ +[ + object, + oleautomation, + uuid(07BDAC9A-19A1-4086-864D-BAD9E0F00D5C), + pointer_default(unique) +] +interface IWebViewEditing : IUnknown +{ + /* + - (DOMRange *)editableDOMRangeForPoint:(NSPoint)point; + */ + HRESULT editableDOMRangeForPoint([in] LPPOINT point, [out, retval] IDOMRange** range); + + /* + - (void)setSelectedDOMRange:(DOMRange *)range affinity:(NSSelectionAffinity)selectionAffinity; + */ + HRESULT setSelectedDOMRange([in] IDOMRange* range, [in] WebSelectionAffinity affinity); + + /* + - (DOMRange *)selectedDOMRange; + */ + HRESULT selectedDOMRange([out, retval] IDOMRange** range); + + /* + - (NSSelectionAffinity)selectionAffinity; + */ + HRESULT selectionAffinity([out, retval] [out, retval] WebSelectionAffinity* affinity); + + /* + - (void)setEditable:(BOOL)flag; + */ + HRESULT setEditable([in] BOOL flag); + + /* + - (BOOL)isEditable; + */ + HRESULT isEditable([out, retval] BOOL* isEditable); + + /* + - (void)setTypingStyle:(DOMCSSStyleDeclaration *)style; + */ + HRESULT setTypingStyle([in] IDOMCSSStyleDeclaration* style); + + /* + - (DOMCSSStyleDeclaration *)typingStyle; + */ + HRESULT typingStyle([out, retval] IDOMCSSStyleDeclaration** style); + + /* + - (void)setSmartInsertDeleteEnabled:(BOOL)flag; + */ + HRESULT setSmartInsertDeleteEnabled([in] BOOL flag); + + /* + - (BOOL)smartInsertDeleteEnabled; + */ + HRESULT smartInsertDeleteEnabled([out, retval] BOOL* enabled); + + /* + - (void)setContinuousSpellCheckingEnabled:(BOOL)flag; + */ + HRESULT setContinuousSpellCheckingEnabled([in] BOOL flag); + + /* + - (BOOL)isContinuousSpellCheckingEnabled; + */ + HRESULT isContinuousSpellCheckingEnabled([out, retval] BOOL* enabled); + + /* + - (WebNSInt)spellCheckerDocumentTag; + */ + HRESULT spellCheckerDocumentTag([out, retval] int* tag); + + /* + - (NSUndoManager *)undoManager; + */ + HRESULT undoManager([out, retval] IWebUndoManager** manager); + + /* + - (void)setEditingDelegate:(id)delegate; + */ + HRESULT setEditingDelegate([in] IWebEditingDelegate* d); + + /* + - (id)editingDelegate; + */ + HRESULT editingDelegate([out, retval] IWebEditingDelegate** d); + + /* + - (DOMCSSStyleDeclaration *)styleDeclarationWithText:(NSString *)text; + */ + HRESULT styleDeclarationWithText([in] BSTR text, [out, retval] IDOMCSSStyleDeclaration** style); + + /* + - (BOOL)hasSelectedRange; + */ + HRESULT hasSelectedRange([out, retval] BOOL* hasSelectedRange); + + /* + - (BOOL)cutEnabled; + */ + HRESULT cutEnabled([out, retval] BOOL* enabled); + + /* + - (BOOL)copyEnabled; + */ + HRESULT copyEnabled([out, retval] BOOL* enabled); + + /* + - (BOOL)pasteEnabled; + */ + HRESULT pasteEnabled([out, retval] BOOL* enabled); + + /* + - (BOOL)deleteEnabled; + */ + HRESULT deleteEnabled([out, retval] BOOL* enabled); + + /* + - (BOOL)editingEnabled; + */ + HRESULT editingEnabled([out, retval] BOOL* enabled); + + /* + - (BOOL)isGrammarCheckingEnabled + */ + HRESULT isGrammarCheckingEnabled([out, retval] BOOL* enabled); + + /* + - (void)setGrammarCheckingEnabled:(BOOL)flag + */ + HRESULT setGrammarCheckingEnabled(BOOL enabled); +} + +/* + @interface WebView (WebViewUndoableEditing) +*/ +[ + object, + oleautomation, + uuid(639E7121-13C8-4a12-BC18-6E1F3D68F3C3), + pointer_default(unique) +] +interface IWebViewUndoableEditing : IUnknown +{ + /* + - (void)replaceSelectionWithNode:(DOMNode *)node; + */ + HRESULT replaceSelectionWithNode([in] IDOMNode* node); + + /* + - (void)replaceSelectionWithText:(NSString *)text; + */ + HRESULT replaceSelectionWithText([in] BSTR text); + + /* + - (void)replaceSelectionWithMarkupString:(NSString *)markupString; + */ + HRESULT replaceSelectionWithMarkupString([in] BSTR markupString); + + /* + - (void)replaceSelectionWithArchive:(WebArchive *)archive; + */ + HRESULT replaceSelectionWithArchive([in] IWebArchive* archive); + + /* + - (void)deleteSelection; + */ + HRESULT deleteSelection(); + + /* + - (void)clearSelection; + */ + HRESULT clearSelection(); + + /* + - (void)applyStyle:(DOMCSSStyleDeclaration *)style; + */ + HRESULT applyStyle([in] IDOMCSSStyleDeclaration* style); +} + +/* + @interface WebView (WebViewEditingActions) +*/ +[ + object, + oleautomation, + uuid(7E066C42-8E81-4778-888D-D6CC93E27D4C), + pointer_default(unique) +] +interface IWebViewEditingActions : IUnknown +{ + /* + - (void)copy:(id)sender; + */ + HRESULT copy([in] IUnknown* sender); + + /* + - (void)cut:(id)sender; + */ + HRESULT cut([in] IUnknown* sender); + + /* + - (void)paste:(id)sender; + */ + HRESULT paste([in] IUnknown* sender); + + /* + - (void)copyURL:(id)sender; + */ + HRESULT copyURL([in] BSTR url); + + /* + - (void)copyFont:(id)sender; + */ + HRESULT copyFont([in] IUnknown* sender); + + /* + - (void)pasteFont:(id)sender; + */ + HRESULT pasteFont([in] IUnknown* sender); + + /* + - (void)delete:(id)sender; + */ + HRESULT delete_([in] IUnknown* sender); + + /* + - (void)pasteAsPlainText:(id)sender; + */ + HRESULT pasteAsPlainText([in] IUnknown* sender); + + /* + - (void)pasteAsRichText:(id)sender; + */ + HRESULT pasteAsRichText([in] IUnknown* sender); + + + /* + - (void)changeFont:(id)sender; + */ + HRESULT changeFont([in] IUnknown* sender); + + /* + - (void)changeAttributes:(id)sender; + */ + HRESULT changeAttributes([in] IUnknown* sender); + + /* + - (void)changeDocumentBackgroundColor:(id)sender; + */ + HRESULT changeDocumentBackgroundColor([in] IUnknown* sender); + + /* + - (void)changeColor:(id)sender; + */ + HRESULT changeColor([in] IUnknown* sender); + + + /* + - (void)alignCenter:(id)sender; + */ + HRESULT alignCenter([in] IUnknown* sender); + + /* + - (void)alignJustified:(id)sender; + */ + HRESULT alignJustified([in] IUnknown* sender); + + /* + - (void)alignLeft:(id)sender; + */ + HRESULT alignLeft([in] IUnknown* sender); + + /* + - (void)alignRight:(id)sender; + */ + HRESULT alignRight([in] IUnknown* sender); + + + /* + - (void)checkSpelling:(id)sender; + */ + HRESULT checkSpelling([in] IUnknown* sender); + + /* + - (void)showGuessPanel:(id)sender; + */ + HRESULT showGuessPanel([in] IUnknown* sender); + + /* + - (void)performFindPanelAction:(id)sender; + */ + HRESULT performFindPanelAction([in] IUnknown* sender); + + + /* + - (void)startSpeaking:(id)sender; + */ + HRESULT startSpeaking([in] IUnknown* sender); + + /* + - (void)stopSpeaking:(id)sender; + */ + HRESULT stopSpeaking([in] IUnknown* sender); +}