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