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