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