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