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