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