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