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