1/* 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2014 Apple Inc. All rights reserved. 3 * Copyright (C) 2009, 2010, 2011 Appcelerator, Inc. All rights reserved. 4 * Copyright (C) 2011 Brent Fulgham. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 16 * EXPRESS OR IMPLIED WARRANTIES, INCfLUDING, BUT NOT LIMITED TO, THE 17 * IMPLIED WARRANTIES OF MERCHANTABIuLITY AND FITNESS FOR A PARTICULAR 18 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 19 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 20 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 23 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28#ifndef WebView_H 29#define WebView_H 30 31#include "WebKit.h" 32#include "WebFrame.h" 33#include "WebPreferences.h" 34#include <WebCore/CACFLayerTreeHostClient.h> 35#include <WebCore/COMPtr.h> 36#include <WebCore/DragActions.h> 37#include <WebCore/GraphicsLayer.h> 38#include <WebCore/GraphicsLayerClient.h> 39#include <WebCore/IntRect.h> 40#include <WebCore/SharedGDIObject.h> 41#include <WebCore/SuspendableTimer.h> 42#include <WebCore/WindowMessageListener.h> 43#include <wtf/HashSet.h> 44#include <wtf/RefPtr.h> 45 46#if ENABLE(FULLSCREEN_API) 47#include <WebCore/FullScreenControllerClient.h> 48#endif 49 50namespace WebCore { 51#if USE(CA) 52 class CACFLayerTreeHost; 53#endif 54 class FullScreenController; 55#if PLATFORM(WIN) && USE(AVFOUNDATION) 56 struct GraphicsDeviceAdapter; 57#endif 58} 59 60namespace WebCore { 61 class HistoryItem; 62} 63 64class FullscreenVideoController; 65class WebBackForwardList; 66class WebFrame; 67class WebInspector; 68class WebInspectorClient; 69 70WebView* kit(WebCore::Page*); 71WebCore::Page* core(IWebView*); 72 73interface IDropTargetHelper; 74 75class WebView 76 : public IWebView 77 , public IWebViewPrivate 78 , public IWebIBActions 79 , public IWebViewCSS 80 , public IWebViewEditing 81 , public IWebViewUndoableEditing 82 , public IWebViewEditingActions 83 , public IWebNotificationObserver 84 , public IDropTarget 85 , WebCore::WindowMessageListener 86 , WebCore::GraphicsLayerClient 87 , WebCore::CACFLayerTreeHostClient 88#if ENABLE(FULLSCREEN_API) 89 , WebCore::FullScreenControllerClient 90#endif 91{ 92public: 93 static WebView* createInstance(); 94protected: 95 WebView(); 96 ~WebView(); 97 98public: 99 // IUnknown 100 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject); 101 virtual ULONG STDMETHODCALLTYPE AddRef(void); 102 virtual ULONG STDMETHODCALLTYPE Release(void); 103 104 // IWebView 105 106 virtual HRESULT STDMETHODCALLTYPE canShowMIMEType( 107 /* [in] */ BSTR mimeType, 108 /* [retval][out] */ BOOL *canShow); 109 110 virtual HRESULT STDMETHODCALLTYPE canShowMIMETypeAsHTML( 111 /* [in] */ BSTR mimeType, 112 /* [retval][out] */ BOOL *canShow); 113 114 virtual HRESULT STDMETHODCALLTYPE MIMETypesShownAsHTML( 115 /* [retval][out] */ IEnumVARIANT **enumVariant); 116 117 virtual HRESULT STDMETHODCALLTYPE setMIMETypesShownAsHTML( 118 /* [size_is][in] */ BSTR *mimeTypes, 119 /* [in] */ int cMimeTypes); 120 121 virtual HRESULT STDMETHODCALLTYPE URLFromPasteboard( 122 /* [in] */ IDataObject *pasteboard, 123 /* [retval][out] */ BSTR *url); 124 125 virtual HRESULT STDMETHODCALLTYPE URLTitleFromPasteboard( 126 /* [in] */ IDataObject *pasteboard, 127 /* [retval][out] */ BSTR *urlTitle); 128 129 virtual HRESULT STDMETHODCALLTYPE initWithFrame( 130 /* [in] */ RECT frame, 131 /* [in] */ BSTR frameName, 132 /* [in] */ BSTR groupName); 133 134 virtual HRESULT STDMETHODCALLTYPE setAccessibilityDelegate( 135 /* [in] */ IAccessibilityDelegate *d); 136 137 virtual HRESULT STDMETHODCALLTYPE accessibilityDelegate( 138 /* [out][retval] */ IAccessibilityDelegate **d); 139 140 virtual HRESULT STDMETHODCALLTYPE setUIDelegate( 141 /* [in] */ IWebUIDelegate *d); 142 143 virtual HRESULT STDMETHODCALLTYPE uiDelegate( 144 /* [out][retval] */ IWebUIDelegate **d); 145 146 virtual HRESULT STDMETHODCALLTYPE setResourceLoadDelegate( 147 /* [in] */ IWebResourceLoadDelegate *d); 148 149 virtual HRESULT STDMETHODCALLTYPE resourceLoadDelegate( 150 /* [out][retval] */ IWebResourceLoadDelegate **d); 151 152 virtual HRESULT STDMETHODCALLTYPE setDownloadDelegate( 153 /* [in] */ IWebDownloadDelegate *d); 154 155 virtual HRESULT STDMETHODCALLTYPE downloadDelegate( 156 /* [out][retval] */ IWebDownloadDelegate **d); 157 158 virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegate( 159 /* [in] */ IWebFrameLoadDelegate *d); 160 161 virtual HRESULT STDMETHODCALLTYPE frameLoadDelegate( 162 /* [out][retval] */ IWebFrameLoadDelegate **d); 163 164 virtual HRESULT STDMETHODCALLTYPE setPolicyDelegate( 165 /* [in] */ IWebPolicyDelegate *d); 166 167 virtual HRESULT STDMETHODCALLTYPE policyDelegate( 168 /* [out][retval] */ IWebPolicyDelegate **d); 169 170 virtual HRESULT STDMETHODCALLTYPE mainFrame( 171 /* [out][retval] */ IWebFrame **frame); 172 173 virtual HRESULT STDMETHODCALLTYPE focusedFrame( 174 /* [out][retval] */ IWebFrame **frame); 175 176 virtual HRESULT STDMETHODCALLTYPE backForwardList( 177 /* [out][retval] */ IWebBackForwardList **list); 178 179 virtual HRESULT STDMETHODCALLTYPE setMaintainsBackForwardList( 180 /* [in] */ BOOL flag); 181 182 virtual HRESULT STDMETHODCALLTYPE goBack( 183 /* [retval][out] */ BOOL *succeeded); 184 185 virtual HRESULT STDMETHODCALLTYPE goForward( 186 /* [retval][out] */ BOOL *succeeded); 187 188 virtual HRESULT STDMETHODCALLTYPE goToBackForwardItem( 189 /* [in] */ IWebHistoryItem *item, 190 /* [retval][out] */ BOOL *succeeded); 191 192 virtual HRESULT STDMETHODCALLTYPE setTextSizeMultiplier( 193 /* [in] */ float multiplier); 194 195 virtual HRESULT STDMETHODCALLTYPE textSizeMultiplier( 196 /* [retval][out] */ float *multiplier); 197 198 virtual HRESULT STDMETHODCALLTYPE setApplicationNameForUserAgent( 199 /* [in] */ BSTR applicationName); 200 201 virtual HRESULT STDMETHODCALLTYPE applicationNameForUserAgent( 202 /* [retval][out] */ BSTR *applicationName); 203 204 virtual HRESULT STDMETHODCALLTYPE setCustomUserAgent( 205 /* [in] */ BSTR userAgentString); 206 207 virtual HRESULT STDMETHODCALLTYPE customUserAgent( 208 /* [retval][out] */ BSTR *userAgentString); 209 210 virtual HRESULT STDMETHODCALLTYPE userAgentForURL( 211 /* [in] */ BSTR url, 212 /* [retval][out] */ BSTR *userAgent); 213 214 virtual HRESULT STDMETHODCALLTYPE supportsTextEncoding( 215 /* [retval][out] */ BOOL *supports); 216 217 virtual HRESULT STDMETHODCALLTYPE setCustomTextEncodingName( 218 /* [in] */ BSTR encodingName); 219 220 virtual HRESULT STDMETHODCALLTYPE customTextEncodingName( 221 /* [retval][out] */ BSTR *encodingName); 222 223 virtual HRESULT STDMETHODCALLTYPE setMediaStyle( 224 /* [in] */ BSTR media); 225 226 virtual HRESULT STDMETHODCALLTYPE mediaStyle( 227 /* [retval][out] */ BSTR *media); 228 229 virtual HRESULT STDMETHODCALLTYPE stringByEvaluatingJavaScriptFromString( 230 /* [in] */ BSTR script, 231 /* [retval][out] */ BSTR *result); 232 233 virtual HRESULT STDMETHODCALLTYPE windowScriptObject( 234 /* [retval][out] */ IWebScriptObject **webScriptObject); 235 236 virtual HRESULT STDMETHODCALLTYPE setPreferences( 237 /* [in] */ IWebPreferences *prefs); 238 239 virtual HRESULT STDMETHODCALLTYPE preferences( 240 /* [retval][out] */ IWebPreferences **prefs); 241 242 virtual HRESULT STDMETHODCALLTYPE setPreferencesIdentifier( 243 /* [in] */ BSTR anIdentifier); 244 245 virtual HRESULT STDMETHODCALLTYPE preferencesIdentifier( 246 /* [retval][out] */ BSTR *anIdentifier); 247 248 virtual HRESULT STDMETHODCALLTYPE setHostWindow(HWND); 249 250 virtual HRESULT STDMETHODCALLTYPE hostWindow(HWND*); 251 252 virtual HRESULT STDMETHODCALLTYPE searchFor( 253 /* [in] */ BSTR str, 254 /* [in] */ BOOL forward, 255 /* [in] */ BOOL caseFlag, 256 /* [in] */ BOOL wrapFlag, 257 /* [retval][out] */ BOOL *found); 258 259 virtual HRESULT STDMETHODCALLTYPE registerViewClass( 260 /* [in] */ IWebDocumentView *view, 261 /* [in] */ IWebDocumentRepresentation *representation, 262 /* [in] */ BSTR forMIMEType); 263 264 virtual HRESULT STDMETHODCALLTYPE setGroupName( 265 /* [in] */ BSTR groupName); 266 267 virtual HRESULT STDMETHODCALLTYPE groupName( 268 /* [retval][out] */ BSTR *groupName); 269 270 virtual HRESULT STDMETHODCALLTYPE estimatedProgress( 271 /* [retval][out] */ double *estimatedProgress); 272 273 virtual HRESULT STDMETHODCALLTYPE isLoading( 274 /* [retval][out] */ BOOL *isLoading); 275 276 virtual HRESULT STDMETHODCALLTYPE elementAtPoint( 277 /* [in] */ LPPOINT point, 278 /* [retval][out] */ IPropertyBag **elementDictionary); 279 280 virtual HRESULT STDMETHODCALLTYPE pasteboardTypesForSelection( 281 /* [retval][out] */ IEnumVARIANT **enumVariant); 282 283 virtual HRESULT STDMETHODCALLTYPE writeSelectionWithPasteboardTypes( 284 /* [size_is][in] */ BSTR *types, 285 /* [in] */ int cTypes, 286 /* [in] */ IDataObject *pasteboard); 287 288 virtual HRESULT STDMETHODCALLTYPE pasteboardTypesForElement( 289 /* [in] */ IPropertyBag *elementDictionary, 290 /* [retval][out] */ IEnumVARIANT **enumVariant); 291 292 virtual HRESULT STDMETHODCALLTYPE writeElement( 293 /* [in] */ IPropertyBag *elementDictionary, 294 /* [size_is][in] */ BSTR *withPasteboardTypes, 295 /* [in] */ int cWithPasteboardTypes, 296 /* [in] */ IDataObject *pasteboard); 297 298 virtual HRESULT STDMETHODCALLTYPE selectedText( 299 /* [out, retval] */ BSTR* str); 300 301 virtual HRESULT STDMETHODCALLTYPE centerSelectionInVisibleArea( 302 /* [in] */ IUnknown* sender); 303 304 virtual HRESULT STDMETHODCALLTYPE moveDragCaretToPoint( 305 /* [in] */ LPPOINT point); 306 307 virtual HRESULT STDMETHODCALLTYPE removeDragCaret( void); 308 309 virtual HRESULT STDMETHODCALLTYPE setDrawsBackground( 310 /* [in] */ BOOL drawsBackground); 311 312 virtual HRESULT STDMETHODCALLTYPE drawsBackground( 313 /* [retval][out] */ BOOL *drawsBackground); 314 315 virtual HRESULT STDMETHODCALLTYPE setMainFrameURL( 316 /* [in] */ BSTR urlString); 317 318 virtual HRESULT STDMETHODCALLTYPE mainFrameURL( 319 /* [retval][out] */ BSTR *urlString); 320 321 virtual HRESULT STDMETHODCALLTYPE mainFrameDocument( 322 /* [retval][out] */ IDOMDocument **document); 323 324 virtual HRESULT STDMETHODCALLTYPE mainFrameTitle( 325 /* [retval][out] */ BSTR *title); 326 327 virtual HRESULT STDMETHODCALLTYPE mainFrameIcon(/* [retval][out] */ HBITMAP* hBitmap); 328 329 virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsLocal( 330 /* [in] */ BSTR scheme); 331 332 virtual HRESULT STDMETHODCALLTYPE close(); 333 334 // IWebIBActions 335 336 virtual HRESULT STDMETHODCALLTYPE takeStringURLFrom( 337 /* [in] */ IUnknown *sender); 338 339 virtual HRESULT STDMETHODCALLTYPE stopLoading( 340 /* [in] */ IUnknown *sender); 341 342 virtual HRESULT STDMETHODCALLTYPE reload( 343 /* [in] */ IUnknown *sender); 344 345 virtual HRESULT STDMETHODCALLTYPE canGoBack( 346 /* [in] */ IUnknown *sender, 347 /* [retval][out] */ BOOL *result); 348 349 virtual HRESULT STDMETHODCALLTYPE goBack( 350 /* [in] */ IUnknown *sender); 351 352 virtual HRESULT STDMETHODCALLTYPE canGoForward( 353 /* [in] */ IUnknown *sender, 354 /* [retval][out] */ BOOL *result); 355 356 virtual HRESULT STDMETHODCALLTYPE goForward( 357 /* [in] */ IUnknown *sender); 358 359 virtual HRESULT STDMETHODCALLTYPE canMakeTextLarger( 360 /* [in] */ IUnknown *sender, 361 /* [retval][out] */ BOOL *result); 362 363 virtual HRESULT STDMETHODCALLTYPE makeTextLarger( 364 /* [in] */ IUnknown *sender); 365 366 virtual HRESULT STDMETHODCALLTYPE canMakeTextSmaller( 367 /* [in] */ IUnknown *sender, 368 /* [retval][out] */ BOOL *result); 369 370 virtual HRESULT STDMETHODCALLTYPE makeTextSmaller( 371 /* [in] */ IUnknown *sender); 372 373 virtual HRESULT STDMETHODCALLTYPE canMakeTextStandardSize( 374 /* [in] */ IUnknown *sender, 375 /* [retval][out] */ BOOL *result); 376 377 virtual HRESULT STDMETHODCALLTYPE makeTextStandardSize( 378 /* [in] */ IUnknown *sender); 379 380 virtual HRESULT STDMETHODCALLTYPE toggleContinuousSpellChecking( 381 /* [in] */ IUnknown *sender); 382 383 virtual HRESULT STDMETHODCALLTYPE toggleSmartInsertDelete( 384 /* [in] */ IUnknown *sender); 385 386 virtual HRESULT STDMETHODCALLTYPE toggleGrammarChecking( 387 /* [in] */ IUnknown *sender); 388 389 virtual HRESULT STDMETHODCALLTYPE reloadFromOrigin( 390 /* [in] */ IUnknown *sender); 391 392 // IWebViewCSS 393 394 virtual HRESULT STDMETHODCALLTYPE computedStyleForElement( 395 /* [in] */ IDOMElement *element, 396 /* [in] */ BSTR pseudoElement, 397 /* [retval][out] */ IDOMCSSStyleDeclaration **style); 398 399 // IWebViewEditing 400 401 virtual HRESULT STDMETHODCALLTYPE editableDOMRangeForPoint( 402 /* [in] */ LPPOINT point, 403 /* [retval][out] */ IDOMRange **range); 404 405 virtual HRESULT STDMETHODCALLTYPE setSelectedDOMRange( 406 /* [in] */ IDOMRange *range, 407 /* [in] */ WebSelectionAffinity affinity); 408 409 virtual HRESULT STDMETHODCALLTYPE selectedDOMRange( 410 /* [retval][out] */ IDOMRange **range); 411 412 virtual HRESULT STDMETHODCALLTYPE selectionAffinity( 413 /* [retval][out][retval][out] */ WebSelectionAffinity *affinity); 414 415 virtual HRESULT STDMETHODCALLTYPE setEditable( 416 /* [in] */ BOOL flag); 417 418 virtual HRESULT STDMETHODCALLTYPE isEditable( 419 /* [retval][out] */ BOOL *isEditable); 420 421 virtual HRESULT STDMETHODCALLTYPE setTypingStyle( 422 /* [in] */ IDOMCSSStyleDeclaration *style); 423 424 virtual HRESULT STDMETHODCALLTYPE typingStyle( 425 /* [retval][out] */ IDOMCSSStyleDeclaration **style); 426 427 virtual HRESULT STDMETHODCALLTYPE setSmartInsertDeleteEnabled( 428 /* [in] */ BOOL flag); 429 430 virtual HRESULT STDMETHODCALLTYPE smartInsertDeleteEnabled( 431 /* [in] */ BOOL *enabled); 432 433 virtual HRESULT STDMETHODCALLTYPE setSelectTrailingWhitespaceEnabled( 434 /* [in] */ BOOL flag); 435 436 virtual HRESULT STDMETHODCALLTYPE isSelectTrailingWhitespaceEnabled( 437 /* [in] */ BOOL *enabled); 438 439 virtual HRESULT STDMETHODCALLTYPE setContinuousSpellCheckingEnabled( 440 /* [in] */ BOOL flag); 441 442 virtual HRESULT STDMETHODCALLTYPE isContinuousSpellCheckingEnabled( 443 /* [retval][out] */ BOOL *enabled); 444 445 virtual HRESULT STDMETHODCALLTYPE spellCheckerDocumentTag( 446 /* [retval][out] */ int *tag); 447 448 virtual HRESULT STDMETHODCALLTYPE undoManager( 449 /* [retval][out] */ IWebUndoManager **manager); 450 451 virtual HRESULT STDMETHODCALLTYPE setEditingDelegate( 452 /* [in] */ IWebEditingDelegate *d); 453 454 virtual HRESULT STDMETHODCALLTYPE editingDelegate( 455 /* [retval][out] */ IWebEditingDelegate **d); 456 457 virtual HRESULT STDMETHODCALLTYPE styleDeclarationWithText( 458 /* [in] */ BSTR text, 459 /* [retval][out] */ IDOMCSSStyleDeclaration **style); 460 461 virtual HRESULT STDMETHODCALLTYPE hasSelectedRange( 462 /* [retval][out] */ BOOL *hasSelectedRange); 463 464 virtual HRESULT STDMETHODCALLTYPE cutEnabled( 465 /* [retval][out] */ BOOL *enabled); 466 467 virtual HRESULT STDMETHODCALLTYPE copyEnabled( 468 /* [retval][out] */ BOOL *enabled); 469 470 virtual HRESULT STDMETHODCALLTYPE pasteEnabled( 471 /* [retval][out] */ BOOL *enabled); 472 473 virtual HRESULT STDMETHODCALLTYPE deleteEnabled( 474 /* [retval][out] */ BOOL *enabled); 475 476 virtual HRESULT STDMETHODCALLTYPE editingEnabled( 477 /* [retval][out] */ BOOL *enabled); 478 479 virtual HRESULT STDMETHODCALLTYPE isGrammarCheckingEnabled( 480 /* [retval][out] */ BOOL *enabled); 481 482 virtual HRESULT STDMETHODCALLTYPE setGrammarCheckingEnabled( 483 BOOL enabled); 484 485 virtual HRESULT STDMETHODCALLTYPE setPageSizeMultiplier( 486 /* [in] */ float multiplier); 487 488 virtual HRESULT STDMETHODCALLTYPE pageSizeMultiplier( 489 /* [retval][out] */ float *multiplier); 490 491 virtual HRESULT STDMETHODCALLTYPE canZoomPageIn( 492 /* [in] */ IUnknown *sender, 493 /* [retval][out] */ BOOL *result); 494 495 virtual HRESULT STDMETHODCALLTYPE zoomPageIn( 496 /* [in] */ IUnknown *sender); 497 498 virtual HRESULT STDMETHODCALLTYPE canZoomPageOut( 499 /* [in] */ IUnknown *sender, 500 /* [retval][out] */ BOOL *result); 501 502 virtual HRESULT STDMETHODCALLTYPE zoomPageOut( 503 /* [in] */ IUnknown *sender); 504 505 virtual HRESULT STDMETHODCALLTYPE canResetPageZoom( 506 /* [in] */ IUnknown *sender, 507 /* [retval][out] */ BOOL *result); 508 509 virtual HRESULT STDMETHODCALLTYPE resetPageZoom( 510 /* [in] */ IUnknown *sender); 511 512 // IWebViewUndoableEditing 513 514 virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithNode( 515 /* [in] */ IDOMNode *node); 516 517 virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithText( 518 /* [in] */ BSTR text); 519 520 virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithMarkupString( 521 /* [in] */ BSTR markupString); 522 523 virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithArchive( 524 /* [in] */ IWebArchive *archive); 525 526 virtual HRESULT STDMETHODCALLTYPE deleteSelection( void); 527 528 virtual HRESULT STDMETHODCALLTYPE clearSelection(void); 529 530 virtual HRESULT STDMETHODCALLTYPE applyStyle( 531 /* [in] */ IDOMCSSStyleDeclaration *style); 532 533 // IWebViewEditingActions 534 535 virtual HRESULT STDMETHODCALLTYPE copy( 536 /* [in] */ IUnknown *sender); 537 538 virtual HRESULT STDMETHODCALLTYPE cut( 539 /* [in] */ IUnknown *sender); 540 541 virtual HRESULT STDMETHODCALLTYPE paste( 542 /* [in] */ IUnknown *sender); 543 544 virtual HRESULT STDMETHODCALLTYPE copyURL( 545 /* [in] */ BSTR url); 546 547 virtual HRESULT STDMETHODCALLTYPE copyFont( 548 /* [in] */ IUnknown *sender); 549 550 virtual HRESULT STDMETHODCALLTYPE pasteFont( 551 /* [in] */ IUnknown *sender); 552 553 virtual HRESULT STDMETHODCALLTYPE delete_( 554 /* [in] */ IUnknown *sender); 555 556 virtual HRESULT STDMETHODCALLTYPE pasteAsPlainText( 557 /* [in] */ IUnknown *sender); 558 559 virtual HRESULT STDMETHODCALLTYPE pasteAsRichText( 560 /* [in] */ IUnknown *sender); 561 562 virtual HRESULT STDMETHODCALLTYPE changeFont( 563 /* [in] */ IUnknown *sender); 564 565 virtual HRESULT STDMETHODCALLTYPE changeAttributes( 566 /* [in] */ IUnknown *sender); 567 568 virtual HRESULT STDMETHODCALLTYPE changeDocumentBackgroundColor( 569 /* [in] */ IUnknown *sender); 570 571 virtual HRESULT STDMETHODCALLTYPE changeColor( 572 /* [in] */ IUnknown *sender); 573 574 virtual HRESULT STDMETHODCALLTYPE alignCenter( 575 /* [in] */ IUnknown *sender); 576 577 virtual HRESULT STDMETHODCALLTYPE alignJustified( 578 /* [in] */ IUnknown *sender); 579 580 virtual HRESULT STDMETHODCALLTYPE alignLeft( 581 /* [in] */ IUnknown *sender); 582 583 virtual HRESULT STDMETHODCALLTYPE alignRight( 584 /* [in] */ IUnknown *sender); 585 586 virtual HRESULT STDMETHODCALLTYPE checkSpelling( 587 /* [in] */ IUnknown *sender); 588 589 virtual HRESULT STDMETHODCALLTYPE showGuessPanel( 590 /* [in] */ IUnknown *sender); 591 592 virtual HRESULT STDMETHODCALLTYPE performFindPanelAction( 593 /* [in] */ IUnknown *sender); 594 595 virtual HRESULT STDMETHODCALLTYPE startSpeaking( 596 /* [in] */ IUnknown *sender); 597 598 virtual HRESULT STDMETHODCALLTYPE stopSpeaking( 599 /* [in] */ IUnknown *sender); 600 601 // IWebNotificationObserver 602 603 virtual HRESULT STDMETHODCALLTYPE onNotify( 604 /* [in] */ IWebNotification *notification); 605 606 // IWebViewPrivate 607 608 virtual HRESULT STDMETHODCALLTYPE MIMETypeForExtension( 609 /* [in] */ BSTR extension, 610 /* [retval][out] */ BSTR *mimeType); 611 612 virtual HRESULT STDMETHODCALLTYPE setCustomDropTarget( 613 /* [in] */ IDropTarget* dt); 614 615 virtual HRESULT STDMETHODCALLTYPE removeCustomDropTarget(); 616 617 virtual HRESULT STDMETHODCALLTYPE setInViewSourceMode( 618 /* [in] */ BOOL flag); 619 620 virtual HRESULT STDMETHODCALLTYPE inViewSourceMode( 621 /* [retval][out] */ BOOL* flag); 622 623 virtual HRESULT STDMETHODCALLTYPE viewWindow(/* [retval][out] */ HWND* window); 624 625 virtual HRESULT STDMETHODCALLTYPE setFormDelegate( 626 /* [in] */ IWebFormDelegate *formDelegate); 627 628 virtual HRESULT STDMETHODCALLTYPE formDelegate( 629 /* [retval][out] */ IWebFormDelegate **formDelegate); 630 631 virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegatePrivate( 632 /* [in] */ IWebFrameLoadDelegatePrivate *frameLoadDelegatePrivate); 633 634 virtual HRESULT STDMETHODCALLTYPE frameLoadDelegatePrivate( 635 /* [retval][out] */ IWebFrameLoadDelegatePrivate **frameLoadDelegatePrivate); 636 637 virtual HRESULT STDMETHODCALLTYPE scrollOffset( 638 /* [retval][out] */ LPPOINT offset); 639 640 virtual HRESULT STDMETHODCALLTYPE scrollBy( 641 /* [in] */ LPPOINT offset); 642 643 virtual HRESULT STDMETHODCALLTYPE visibleContentRect( 644 /* [retval][out] */ LPRECT rect); 645 646 virtual HRESULT STDMETHODCALLTYPE updateFocusedAndActiveState(); 647 648 virtual HRESULT STDMETHODCALLTYPE executeCoreCommandByName(BSTR name, BSTR value); 649 650 virtual HRESULT STDMETHODCALLTYPE clearMainFrameName(); 651 652 virtual HRESULT STDMETHODCALLTYPE markAllMatchesForText( 653 BSTR search, BOOL caseSensitive, BOOL highlight, UINT limit, UINT* matches); 654 655 virtual HRESULT STDMETHODCALLTYPE unmarkAllTextMatches(); 656 657 virtual HRESULT STDMETHODCALLTYPE rectsForTextMatches( 658 IEnumTextMatches** pmatches); 659 660 virtual HRESULT STDMETHODCALLTYPE generateSelectionImage(BOOL forceWhiteText, HBITMAP* hBitmap); 661 662 virtual HRESULT STDMETHODCALLTYPE selectionRect( 663 RECT* rc); 664 665 virtual HRESULT STDMETHODCALLTYPE DragEnter( 666 IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect); 667 668 virtual HRESULT STDMETHODCALLTYPE DragOver( 669 DWORD grfKeyState, POINTL pt, DWORD* pdwEffect); 670 671 virtual HRESULT STDMETHODCALLTYPE DragLeave(); 672 673 virtual HRESULT STDMETHODCALLTYPE Drop( 674 IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect); 675 676 virtual HRESULT STDMETHODCALLTYPE canHandleRequest( 677 IWebURLRequest *request, 678 BOOL *result); 679 680 virtual HRESULT STDMETHODCALLTYPE standardUserAgentWithApplicationName( 681 /* [in] */ BSTR applicationName, 682 /* [retval][out] */ BSTR *groupName); 683 684 virtual HRESULT STDMETHODCALLTYPE clearFocusNode(); 685 686 virtual HRESULT STDMETHODCALLTYPE setInitialFocus( 687 /* [in] */ BOOL forward); 688 689 virtual HRESULT STDMETHODCALLTYPE setTabKeyCyclesThroughElements( 690 /* [in] */ BOOL cycles); 691 692 virtual HRESULT STDMETHODCALLTYPE tabKeyCyclesThroughElements( 693 /* [retval][out] */ BOOL *result); 694 695 virtual HRESULT STDMETHODCALLTYPE setAllowSiteSpecificHacks( 696 /* [in] */ BOOL allows); 697 698 virtual HRESULT STDMETHODCALLTYPE addAdditionalPluginDirectory( 699 /* [in] */ BSTR directory); 700 701 virtual HRESULT STDMETHODCALLTYPE loadBackForwardListFromOtherView( 702 /* [in] */ IWebView *otherView); 703 704 virtual HRESULT STDMETHODCALLTYPE inspector( 705 /* [retval][out] */ IWebInspector**); 706 707 virtual HRESULT STDMETHODCALLTYPE clearUndoRedoOperations( void); 708 virtual HRESULT STDMETHODCALLTYPE shouldClose( 709 /* [retval][out] */ BOOL* result); 710 711 virtual HRESULT STDMETHODCALLTYPE setProhibitsMainFrameScrolling(BOOL); 712 virtual HRESULT STDMETHODCALLTYPE setShouldApplyMacFontAscentHack(BOOL); 713 714 virtual HRESULT STDMETHODCALLTYPE windowAncestryDidChange(); 715 716 virtual HRESULT STDMETHODCALLTYPE paintDocumentRectToContext(RECT, HDC); 717 718 virtual HRESULT STDMETHODCALLTYPE paintScrollViewRectToContextAtPoint(RECT, POINT, HDC); 719 720 virtual HRESULT STDMETHODCALLTYPE reportException( 721 /* [in] */ JSContextRef context, 722 /* [in] */ JSValueRef exception); 723 724 virtual HRESULT STDMETHODCALLTYPE elementFromJS( 725 /* [in] */ JSContextRef context, 726 /* [in] */ JSValueRef nodeObject, 727 /* [retval][out] */ IDOMElement **element); 728 729 virtual HRESULT STDMETHODCALLTYPE setCustomHTMLTokenizerTimeDelay( 730 /* [in] */ double timeDelay); 731 732 virtual HRESULT STDMETHODCALLTYPE setCustomHTMLTokenizerChunkSize( 733 /* [in] */ int chunkSize); 734 735 virtual HRESULT STDMETHODCALLTYPE backingStore(/* [out, retval] */ HBITMAP* hBitmap); 736 737 virtual HRESULT STDMETHODCALLTYPE setTransparent( 738 /* [in] */ BOOL transparent); 739 740 virtual HRESULT STDMETHODCALLTYPE transparent( 741 /* [out, retval] */ BOOL* transparent); 742 743 virtual HRESULT STDMETHODCALLTYPE setDefersCallbacks( 744 /* [in] */ BOOL defersCallbacks); 745 746 virtual HRESULT STDMETHODCALLTYPE defersCallbacks( 747 /* [out, retval] */ BOOL* defersCallbacks); 748 749 virtual HRESULT STDMETHODCALLTYPE globalHistoryItem( 750 /* [out, retval] */ IWebHistoryItem** item); 751 752 virtual HRESULT STDMETHODCALLTYPE setAlwaysUsesComplexTextCodePath( 753 /* [in] */ BOOL complex); 754 755 virtual HRESULT STDMETHODCALLTYPE alwaysUsesComplexTextCodePath( 756 /* [out, retval] */ BOOL* complex); 757 758 virtual HRESULT STDMETHODCALLTYPE setCookieEnabled( 759 /* [in] */ BOOL enable); 760 761 virtual HRESULT STDMETHODCALLTYPE cookieEnabled( 762 /* [out, retval] */ BOOL* enabled); 763 764 virtual HRESULT STDMETHODCALLTYPE setMediaVolume( 765 /* [in] */ float volume); 766 767 virtual HRESULT STDMETHODCALLTYPE mediaVolume( 768 /* [out, retval] */ float* volume); 769 770 virtual HRESULT STDMETHODCALLTYPE registerEmbeddedViewMIMEType( 771 /* [in] */ BSTR mimeType); 772 773 virtual HRESULT STDMETHODCALLTYPE setMemoryCacheDelegateCallsEnabled( 774 /* [in] */ BOOL enabled); 775 776 virtual HRESULT STDMETHODCALLTYPE setJavaScriptURLsAreAllowed( 777 /* [in] */ BOOL areAllowed); 778 779 virtual HRESULT STDMETHODCALLTYPE setCanStartPlugins( 780 /* [in] */ BOOL canStartPlugins); 781 782 virtual HRESULT STDMETHODCALLTYPE addUserScriptToGroup(BSTR groupName, IWebScriptWorld*, BSTR source, BSTR url, 783 unsigned whitelistCount, BSTR* whitelist, 784 unsigned blacklistCount, BSTR* blacklist, 785 WebUserScriptInjectionTime); 786 virtual HRESULT STDMETHODCALLTYPE addUserStyleSheetToGroup(BSTR groupName, IWebScriptWorld*, BSTR source, BSTR url, 787 unsigned whitelistCount, BSTR* whitelist, 788 unsigned blacklistCount, BSTR* blacklist); 789 virtual HRESULT STDMETHODCALLTYPE removeUserScriptFromGroup(BSTR groupName, IWebScriptWorld*, BSTR url); 790 virtual HRESULT STDMETHODCALLTYPE removeUserStyleSheetFromGroup(BSTR groupName, IWebScriptWorld*, BSTR url); 791 virtual HRESULT STDMETHODCALLTYPE removeUserScriptsFromGroup(BSTR groupName, IWebScriptWorld*); 792 virtual HRESULT STDMETHODCALLTYPE removeUserStyleSheetsFromGroup(BSTR groupName, IWebScriptWorld*); 793 virtual HRESULT STDMETHODCALLTYPE removeAllUserContentFromGroup(BSTR groupName); 794 795 virtual HRESULT STDMETHODCALLTYPE unused1(); 796 virtual HRESULT STDMETHODCALLTYPE unused2(); 797 798 virtual HRESULT STDMETHODCALLTYPE invalidateBackingStore(const RECT*); 799 800 virtual HRESULT STDMETHODCALLTYPE addOriginAccessWhitelistEntry(BSTR sourceOrigin, BSTR destinationProtocol, BSTR destinationHost, BOOL allowDestinationSubdomains); 801 virtual HRESULT STDMETHODCALLTYPE removeOriginAccessWhitelistEntry(BSTR sourceOrigin, BSTR destinationProtocol, BSTR destinationHost, BOOL allowDestinationSubdomains); 802 virtual HRESULT STDMETHODCALLTYPE resetOriginAccessWhitelists(); 803 804 virtual HRESULT STDMETHODCALLTYPE setHistoryDelegate(IWebHistoryDelegate* historyDelegate); 805 virtual HRESULT STDMETHODCALLTYPE historyDelegate(IWebHistoryDelegate** historyDelegate); 806 virtual HRESULT STDMETHODCALLTYPE addVisitedLinks(BSTR* visitedURLs, unsigned visitedURLCount); 807 808 virtual HRESULT STDMETHODCALLTYPE unused3(); 809 virtual HRESULT STDMETHODCALLTYPE unused4(); 810 virtual HRESULT STDMETHODCALLTYPE unused5(); 811 812 virtual HRESULT STDMETHODCALLTYPE setGeolocationProvider(IWebGeolocationProvider* locationProvider); 813 virtual HRESULT STDMETHODCALLTYPE geolocationProvider(IWebGeolocationProvider** locationProvider); 814 virtual HRESULT STDMETHODCALLTYPE geolocationDidChangePosition(IWebGeolocationPosition* position); 815 virtual HRESULT STDMETHODCALLTYPE geolocationDidFailWithError(IWebError* error); 816 817 virtual HRESULT STDMETHODCALLTYPE setDomainRelaxationForbiddenForURLScheme(BOOL forbidden, BSTR scheme); 818 virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsSecure(BSTR); 819 virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsAllowingLocalStorageAccessInPrivateBrowsing(BSTR); 820 virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsAllowingDatabaseAccessInPrivateBrowsing(BSTR); 821 822 virtual HRESULT STDMETHODCALLTYPE nextDisplayIsSynchronous(); 823 824 virtual HRESULT STDMETHODCALLTYPE defaultMinimumTimerInterval( 825 /* [retval][out] */ double *interval); 826 827 virtual HRESULT STDMETHODCALLTYPE setMinimumTimerInterval( 828 /* [in] */ double); 829 830 virtual HRESULT STDMETHODCALLTYPE httpPipeliningEnabled( 831 /* [out, retval] */ BOOL* enabled); 832 833 virtual HRESULT STDMETHODCALLTYPE setHTTPPipeliningEnabled( 834 /* [in] */ BOOL); 835 836 virtual HRESULT STDMETHODCALLTYPE setUsesLayeredWindow(BOOL); 837 virtual HRESULT STDMETHODCALLTYPE usesLayeredWindow(BOOL*); 838 839 // WebView 840 bool shouldUseEmbeddedView(const WTF::String& mimeType) const; 841 842 WebCore::Page* page(); 843 bool handleMouseEvent(UINT, WPARAM, LPARAM); 844 void setMouseActivated(bool flag) { m_mouseActivated = flag; } 845 bool handleContextMenuEvent(WPARAM, LPARAM); 846 bool onMeasureItem(WPARAM, LPARAM); 847 bool onDrawItem(WPARAM, LPARAM); 848 bool onInitMenuPopup(WPARAM, LPARAM); 849 bool onUninitMenuPopup(WPARAM, LPARAM); 850 void performContextMenuAction(WPARAM, LPARAM, bool byPosition); 851 bool mouseWheel(WPARAM, LPARAM, bool isMouseHWheel); 852 bool verticalScroll(WPARAM, LPARAM); 853 bool horizontalScroll(WPARAM, LPARAM); 854 bool gesture(WPARAM, LPARAM); 855 bool gestureNotify(WPARAM, LPARAM); 856 bool execCommand(WPARAM wParam, LPARAM lParam); 857 bool keyDown(WPARAM, LPARAM, bool systemKeyDown = false); 858 bool keyUp(WPARAM, LPARAM, bool systemKeyDown = false); 859 bool keyPress(WPARAM, LPARAM, bool systemKeyDown = false); 860 void paint(HDC, LPARAM); 861 void paintIntoWindow(HDC bitmapDC, HDC windowDC, const WebCore::IntRect& dirtyRect); 862 bool ensureBackingStore(); 863 void addToDirtyRegion(const WebCore::IntRect&); 864 void addToDirtyRegion(GDIObject<HRGN>); 865 void scrollBackingStore(WebCore::FrameView*, int dx, int dy, const WebCore::IntRect& scrollViewRect, const WebCore::IntRect& clipRect); 866 void deleteBackingStore(); 867 void repaint(const WebCore::IntRect&, bool contentChanged, bool immediate = false, bool repaintContentOnly = false); 868 void frameRect(RECT* rect); 869 void closeWindow(); 870 void closeWindowSoon(); 871 void closeWindowTimerFired(); 872 bool didClose() const { return m_didClose; } 873 874 bool transparent() const { return m_transparent; } 875 bool usesLayeredWindow() const { return m_usesLayeredWindow; } 876 bool needsDisplay() const { return m_needsDisplay; } 877 878 bool onIMEStartComposition(); 879 bool onIMEComposition(LPARAM); 880 bool onIMEEndComposition(); 881 bool onIMEChar(WPARAM, LPARAM); 882 bool onIMENotify(WPARAM, LPARAM, LRESULT*); 883 LRESULT onIMERequest(WPARAM, LPARAM); 884 bool onIMESelect(WPARAM, LPARAM); 885 bool onIMESetContext(WPARAM, LPARAM); 886 void selectionChanged(); 887 void resetIME(WebCore::Frame*); 888 void setInputMethodState(bool); 889 890 HRESULT registerDragDrop(); 891 HRESULT revokeDragDrop(); 892 893 // Convenient to be able to violate the rules of COM here for easy movement to the frame. 894 WebFrame* topLevelFrame() const { return m_mainFrame; } 895 const WTF::String& userAgentForKURL(const WebCore::URL& url); 896 897 static bool canHandleRequest(const WebCore::ResourceRequest&); 898 899 static WTF::String standardUserAgentWithApplicationName(const WTF::String&); 900 901 void setIsBeingDestroyed(); 902 bool isBeingDestroyed() const { return m_isBeingDestroyed; } 903 904 const char* interpretKeyEvent(const WebCore::KeyboardEvent*); 905 bool handleEditingKeyboardEvent(WebCore::KeyboardEvent*); 906 907 bool isPainting() const { return m_paintCount > 0; } 908 909 void setToolTip(const WTF::String&); 910 911 void registerForIconNotification(bool listen); 912 void dispatchDidReceiveIconFromWebFrame(WebFrame*); 913 914 HRESULT notifyDidAddIcon(IWebNotification*); 915 HRESULT notifyPreferencesChanged(IWebNotification*); 916 917 static void setCacheModel(WebCacheModel); 918 static WebCacheModel cacheModel(); 919 static bool didSetCacheModel(); 920 static WebCacheModel maxCacheModelInAnyInstance(); 921 922 void updateActiveStateSoon() const; 923 void deleteBackingStoreSoon(); 924 void cancelDeleteBackingStoreSoon(); 925 926 HWND topLevelParent() const { return m_topLevelParent; } 927 HWND viewWindow() const { return m_viewWindow; } 928 929 void updateActiveState(); 930 931 bool onGetObject(WPARAM, LPARAM, LRESULT&) const; 932 static STDMETHODIMP AccessibleObjectFromWindow(HWND, DWORD objectID, REFIID, void** ppObject); 933 934 void downloadURL(const WebCore::URL&); 935 936 void flushPendingGraphicsLayerChangesSoon(); 937 void setRootChildLayer(WebCore::GraphicsLayer*); 938 939#if PLATFORM(WIN) && USE(AVFOUNDATION) 940 WebCore::GraphicsDeviceAdapter* graphicsDeviceAdapter() const; 941#endif 942 943 void enterFullscreenForNode(WebCore::Node*); 944 void exitFullscreen(); 945 946 void setLastCursor(HCURSOR cursor) { m_lastSetCursor = cursor; } 947 948 void setGlobalHistoryItem(WebCore::HistoryItem*); 949 950#if ENABLE(FULLSCREEN_API) 951 bool supportsFullScreenForElement(const WebCore::Element*, bool withKeyboard) const; 952 bool isFullScreen() const; 953 WebCore::FullScreenController* fullScreenController(); 954 void setFullScreenElement(PassRefPtr<WebCore::Element>); 955 WebCore::Element* fullScreenElement() const { return m_fullScreenElement.get(); } 956#endif 957 958 bool canShowMIMEType(const String& mimeType); 959 bool canShowMIMETypeAsHTML(const String& mimeType); 960 961 // Used by TextInputController in DumpRenderTree 962 963 HRESULT STDMETHODCALLTYPE setCompositionForTesting( 964 /* [in] */ BSTR composition, 965 /* [in] */ UINT from, 966 /* [in] */ UINT length); 967 968 HRESULT STDMETHODCALLTYPE hasCompositionForTesting(/* [out, retval] */ BOOL* result); 969 970 HRESULT STDMETHODCALLTYPE confirmCompositionForTesting(/* [in] */ BSTR composition); 971 972 HRESULT STDMETHODCALLTYPE compositionRangeForTesting(/* [out] */ UINT* startPosition, /* [out] */ UINT* length); 973 974 HRESULT STDMETHODCALLTYPE firstRectForCharacterRangeForTesting( 975 /* [in] */ UINT location, 976 /* [in] */ UINT length, 977 /* [out, retval] */ RECT* resultRect); 978 979 HRESULT STDMETHODCALLTYPE selectedRangeForTesting(/* [out] */ UINT* location, /* [out] */ UINT* length); 980private: 981 void setZoomMultiplier(float multiplier, bool isTextOnly); 982 float zoomMultiplier(bool isTextOnly); 983 bool canZoomIn(bool isTextOnly); 984 HRESULT zoomIn(bool isTextOnly); 985 bool canZoomOut(bool isTextOnly); 986 HRESULT zoomOut(bool isTextOnly); 987 bool canResetZoom(bool isTextOnly); 988 HRESULT resetZoom(bool isTextOnly); 989 bool active(); 990 991 void sizeChanged(const WebCore::IntSize&); 992 993 enum WindowsToPaint { PaintWebViewOnly, PaintWebViewAndChildren }; 994 void paintIntoBackingStore(WebCore::FrameView*, HDC bitmapDC, const WebCore::IntRect& dirtyRect, WindowsToPaint); 995 void updateBackingStore(WebCore::FrameView*, HDC = 0, bool backingStoreCompletelyDirty = false, WindowsToPaint = PaintWebViewOnly); 996 997 void performLayeredWindowUpdate(); 998 999 WebCore::DragOperation keyStateToDragOperation(DWORD grfKeyState) const; 1000 1001 // FIXME: This variable is part of a workaround. The drop effect (pdwEffect) passed to Drop is incorrect. 1002 // We set this variable in DragEnter and DragOver so that it can be used in Drop to set the correct drop effect. 1003 // Thus, on return from DoDragDrop we have the correct pdwEffect for the drag-and-drop operation. 1004 // (see https://bugs.webkit.org/show_bug.cgi?id=29264) 1005 DWORD m_lastDropEffect; 1006 1007 // GraphicsLayerClient 1008 virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double time); 1009 virtual void notifyFlushRequired(const WebCore::GraphicsLayer*); 1010 virtual void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::FloatRect& inClip); 1011 1012 // CACFLayerTreeHostClient 1013 virtual void flushPendingGraphicsLayerChanges(); 1014 1015 bool m_shouldInvertColors; 1016 void setShouldInvertColors(bool); 1017 1018protected: 1019 static bool registerWebViewWindowClass(); 1020 static LRESULT CALLBACK WebViewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); 1021 1022 HIMC getIMMContext(); 1023 void releaseIMMContext(HIMC); 1024 static bool allowSiteSpecificHacks() { return s_allowSiteSpecificHacks; } 1025 void preflightSpellChecker(); 1026 bool continuousCheckingAllowed(); 1027 void initializeToolTipWindow(); 1028 void prepareCandidateWindow(WebCore::Frame*, HIMC); 1029 void updateSelectionForIME(); 1030 LRESULT onIMERequestCharPosition(WebCore::Frame*, IMECHARPOSITION*); 1031 LRESULT onIMERequestReconvertString(WebCore::Frame*, RECONVERTSTRING*); 1032 bool developerExtrasEnabled() const; 1033 1034 bool shouldInitializeTrackPointHack(); 1035 1036 // AllWebViewSet functions 1037 void addToAllWebViewsSet(); 1038 void removeFromAllWebViewsSet(); 1039 1040 virtual void windowReceivedMessage(HWND, UINT message, WPARAM, LPARAM); 1041 1042#if ENABLE(FULLSCREEN_API) 1043 virtual HWND fullScreenClientWindow() const; 1044 virtual HWND fullScreenClientParentWindow() const; 1045 virtual void fullScreenClientSetParentWindow(HWND); 1046 virtual void fullScreenClientWillEnterFullScreen(); 1047 virtual void fullScreenClientDidEnterFullScreen(); 1048 virtual void fullScreenClientWillExitFullScreen(); 1049 virtual void fullScreenClientDidExitFullScreen(); 1050 virtual void fullScreenClientForceRepaint(); 1051 virtual void fullScreenClientSaveScrollPosition(); 1052 virtual void fullScreenClientRestoreScrollPosition(); 1053#endif 1054 1055 ULONG m_refCount; 1056#if !ASSERT_DISABLED 1057 bool m_deletionHasBegun; 1058#endif 1059 HWND m_hostWindow; 1060 HWND m_viewWindow; 1061 WebFrame* m_mainFrame; 1062 WebCore::Page* m_page; 1063#if ENABLE(INSPECTOR) 1064 WebInspectorClient* m_inspectorClient; 1065#endif // ENABLE(INSPECTOR) 1066 1067 RefPtr<WebCore::SharedGDIObject<HBITMAP>> m_backingStoreBitmap; 1068 SIZE m_backingStoreSize; 1069 RefPtr<WebCore::SharedGDIObject<HRGN>> m_backingStoreDirtyRegion; 1070 1071 COMPtr<IAccessibilityDelegate> m_accessibilityDelegate; 1072 COMPtr<IWebEditingDelegate> m_editingDelegate; 1073 COMPtr<IWebFrameLoadDelegate> m_frameLoadDelegate; 1074 COMPtr<IWebFrameLoadDelegatePrivate> m_frameLoadDelegatePrivate; 1075 COMPtr<IWebUIDelegate> m_uiDelegate; 1076 COMPtr<IWebUIDelegatePrivate> m_uiDelegatePrivate; 1077 COMPtr<IWebFormDelegate> m_formDelegate; 1078 COMPtr<IWebPolicyDelegate> m_policyDelegate; 1079 COMPtr<IWebResourceLoadDelegate> m_resourceLoadDelegate; 1080 COMPtr<IWebDownloadDelegate> m_downloadDelegate; 1081 COMPtr<IWebHistoryDelegate> m_historyDelegate; 1082 COMPtr<WebPreferences> m_preferences; 1083#if ENABLE(INSPECTOR) 1084 COMPtr<WebInspector> m_webInspector; 1085#endif // ENABLE(INSPECTOR) 1086 COMPtr<IWebGeolocationProvider> m_geolocationProvider; 1087 1088 bool m_userAgentOverridden; 1089 bool m_useBackForwardList; 1090 WTF::String m_userAgentCustom; 1091 WTF::String m_userAgentStandard; 1092 float m_zoomMultiplier; 1093 bool m_zoomsTextOnly; 1094 WTF::String m_overrideEncoding; 1095 WTF::String m_applicationName; 1096 bool m_mouseActivated; 1097 // WebCore dragging logic needs to be able to inspect the drag data 1098 // this is updated in DragEnter/Leave/Drop 1099 COMPtr<IDataObject> m_dragData; 1100 COMPtr<IDropTargetHelper> m_dropTargetHelper; 1101 UChar m_currentCharacterCode; 1102 bool m_isBeingDestroyed; 1103 unsigned m_paintCount; 1104 bool m_hasSpellCheckerDocumentTag; 1105 bool m_didClose; 1106 bool m_hasCustomDropTarget; 1107 unsigned m_inIMEComposition; 1108 HWND m_toolTipHwnd; 1109 WTF::String m_toolTip; 1110 bool m_deleteBackingStoreTimerActive; 1111 1112 bool m_transparent; 1113 1114 static bool s_allowSiteSpecificHacks; 1115 1116 WebCore::SuspendableTimer* m_closeWindowTimer; 1117 std::unique_ptr<TRACKMOUSEEVENT> m_mouseOutTracker; 1118 1119 HWND m_topLevelParent; 1120 1121 std::unique_ptr<HashSet<WTF::String>> m_embeddedViewMIMETypes; 1122 1123 //Variables needed to store gesture information 1124 RefPtr<WebCore::Node> m_gestureTargetNode; 1125 long m_lastPanX; 1126 long m_lastPanY; 1127 long m_xOverpan; 1128 long m_yOverpan; 1129 1130#if ENABLE(VIDEO) 1131 std::unique_ptr<FullscreenVideoController> m_fullScreenVideoController; 1132#endif 1133 1134 bool isAcceleratedCompositing() const { return m_isAcceleratedCompositing; } 1135 void setAcceleratedCompositing(bool); 1136#if USE(CA) 1137 RefPtr<WebCore::CACFLayerTreeHost> m_layerTreeHost; 1138#endif 1139 std::unique_ptr<WebCore::GraphicsLayer> m_backingLayer; 1140 bool m_isAcceleratedCompositing; 1141 1142 bool m_nextDisplayIsSynchronous; 1143 bool m_usesLayeredWindow; 1144 bool m_needsDisplay; 1145 1146 HCURSOR m_lastSetCursor; 1147 1148 RefPtr<WebCore::HistoryItem> m_globalHistoryItem; 1149 1150#if ENABLE(FULLSCREEN_API) 1151 RefPtr<WebCore::Element> m_fullScreenElement; 1152 std::unique_ptr<WebCore::FullScreenController> m_fullscreenController; 1153 WebCore::IntPoint m_scrollPosition; 1154#endif 1155}; 1156 1157#endif 1158