6b79fcec21c239fe57e17ee0c1bc5271b2db2780
[WebKit-https.git] / Source / WebKit / win / WebView.h
1 /*
2  * Copyright (C) 2006-2012, 2014-2015 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 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 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/CACFLayerTreeHostClient.h>
35 #include <WebCore/COMPtr.h>
36 #include <WebCore/DragActions.h>
37 #include <WebCore/GraphicsLayer.h>
38 #include <WebCore/GraphicsLayerClient.h>
39 #include <WebCore/IntRect.h>
40 #include <WebCore/SharedGDIObject.h>
41 #include <WebCore/SuspendableTimer.h>
42 #include <WebCore/WindowMessageListener.h>
43 #include <wtf/HashSet.h>
44 #include <wtf/RefPtr.h>
45
46 #if ENABLE(FULLSCREEN_API)
47 #include <WebCore/FullScreenControllerClient.h>
48 #endif
49
50 namespace WebCore {
51 #if USE(CA)
52     class CACFLayerTreeHost;
53 #endif
54     class FullScreenController;
55 #if PLATFORM(WIN) && USE(AVFOUNDATION)
56     struct GraphicsDeviceAdapter;
57 #endif
58     class HTMLVideoElement;
59 }
60
61 namespace WebCore {
62     class HistoryItem;
63 }
64
65 class FullscreenVideoController;
66 class WebBackForwardList;
67 class WebFrame;
68 class WebInspector;
69 class WebInspectorClient;
70 #if USE(TEXTURE_MAPPER_GL)
71 class AcceleratedCompositingContext;
72 #endif
73 class WebViewGroup;
74
75 WebView* kit(WebCore::Page*);
76 WebCore::Page* core(IWebView*);
77
78 interface IDropTargetHelper;
79
80 class WebView 
81     : public IWebView
82     , public IWebViewPrivate2
83     , public IWebIBActions
84     , public IWebViewCSS
85     , public IWebViewEditing
86     , public IWebViewUndoableEditing
87     , public IWebViewEditingActions
88     , public IWebNotificationObserver
89     , public IDropTarget
90     , WebCore::WindowMessageListener
91     , WebCore::GraphicsLayerClient
92     , WebCore::CACFLayerTreeHostClient
93 #if ENABLE(FULLSCREEN_API)
94     , WebCore::FullScreenControllerClient
95 #endif
96 {
97 public:
98     static WebView* createInstance();
99 protected:
100     WebView();
101     ~WebView();
102
103 public:
104     // IUnknown
105     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
106     virtual ULONG STDMETHODCALLTYPE AddRef(void);
107     virtual ULONG STDMETHODCALLTYPE Release(void);
108
109     // IWebView
110
111     virtual HRESULT STDMETHODCALLTYPE canShowMIMEType( 
112         /* [in] */ BSTR mimeType,
113         /* [retval][out] */ BOOL *canShow);
114
115     virtual HRESULT STDMETHODCALLTYPE canShowMIMETypeAsHTML( 
116         /* [in] */ BSTR mimeType,
117         /* [retval][out] */ BOOL *canShow);
118
119     virtual HRESULT STDMETHODCALLTYPE MIMETypesShownAsHTML( 
120         /* [retval][out] */ IEnumVARIANT **enumVariant);
121     
122     virtual HRESULT STDMETHODCALLTYPE setMIMETypesShownAsHTML( 
123         /* [size_is][in] */ BSTR *mimeTypes,
124         /* [in] */ int cMimeTypes);
125     
126     virtual HRESULT STDMETHODCALLTYPE URLFromPasteboard( 
127         /* [in] */ IDataObject *pasteboard,
128         /* [retval][out] */ BSTR *url);
129     
130     virtual HRESULT STDMETHODCALLTYPE URLTitleFromPasteboard( 
131         /* [in] */ IDataObject *pasteboard,
132         /* [retval][out] */ BSTR *urlTitle);
133     
134     virtual HRESULT STDMETHODCALLTYPE initWithFrame( 
135         /* [in] */ RECT frame,
136         /* [in] */ BSTR frameName,
137         /* [in] */ BSTR groupName);
138
139     virtual HRESULT STDMETHODCALLTYPE setAccessibilityDelegate(
140         /* [in] */ IAccessibilityDelegate *d);
141
142     virtual HRESULT STDMETHODCALLTYPE accessibilityDelegate(
143         /* [out][retval] */ IAccessibilityDelegate **d);
144
145     virtual HRESULT STDMETHODCALLTYPE setUIDelegate( 
146         /* [in] */ IWebUIDelegate *d);
147     
148     virtual HRESULT STDMETHODCALLTYPE uiDelegate( 
149         /* [out][retval] */ IWebUIDelegate **d);
150     
151     virtual HRESULT STDMETHODCALLTYPE setResourceLoadDelegate( 
152         /* [in] */ IWebResourceLoadDelegate *d);
153     
154     virtual HRESULT STDMETHODCALLTYPE resourceLoadDelegate( 
155         /* [out][retval] */ IWebResourceLoadDelegate **d);
156     
157     virtual HRESULT STDMETHODCALLTYPE setDownloadDelegate( 
158         /* [in] */ IWebDownloadDelegate *d);
159     
160     virtual HRESULT STDMETHODCALLTYPE downloadDelegate( 
161         /* [out][retval] */ IWebDownloadDelegate **d);
162     
163     virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegate( 
164         /* [in] */ IWebFrameLoadDelegate *d);
165     
166     virtual HRESULT STDMETHODCALLTYPE frameLoadDelegate( 
167         /* [out][retval] */ IWebFrameLoadDelegate **d);
168     
169     virtual HRESULT STDMETHODCALLTYPE setPolicyDelegate( 
170         /* [in] */ IWebPolicyDelegate *d);
171     
172     virtual HRESULT STDMETHODCALLTYPE policyDelegate( 
173         /* [out][retval] */ IWebPolicyDelegate **d);
174     
175     virtual HRESULT STDMETHODCALLTYPE mainFrame( 
176         /* [out][retval] */ IWebFrame **frame);
177
178     virtual HRESULT STDMETHODCALLTYPE focusedFrame( 
179         /* [out][retval] */ IWebFrame **frame);
180     
181     virtual HRESULT STDMETHODCALLTYPE backForwardList( 
182         /* [out][retval] */ IWebBackForwardList **list);
183     
184     virtual HRESULT STDMETHODCALLTYPE setMaintainsBackForwardList( 
185         /* [in] */ BOOL flag);
186     
187     virtual HRESULT STDMETHODCALLTYPE goBack( 
188         /* [retval][out] */ BOOL *succeeded);
189     
190     virtual HRESULT STDMETHODCALLTYPE goForward( 
191         /* [retval][out] */ BOOL *succeeded);
192     
193     virtual HRESULT STDMETHODCALLTYPE goToBackForwardItem( 
194         /* [in] */ IWebHistoryItem *item,
195         /* [retval][out] */ BOOL *succeeded);
196     
197     virtual HRESULT STDMETHODCALLTYPE setTextSizeMultiplier( 
198         /* [in] */ float multiplier);
199     
200     virtual HRESULT STDMETHODCALLTYPE textSizeMultiplier( 
201         /* [retval][out] */ float *multiplier);
202     
203     virtual HRESULT STDMETHODCALLTYPE setApplicationNameForUserAgent( 
204         /* [in] */ BSTR applicationName);
205     
206     virtual HRESULT STDMETHODCALLTYPE applicationNameForUserAgent( 
207         /* [retval][out] */ BSTR *applicationName);
208     
209     virtual HRESULT STDMETHODCALLTYPE setCustomUserAgent( 
210         /* [in] */ BSTR userAgentString);
211     
212     virtual HRESULT STDMETHODCALLTYPE customUserAgent( 
213         /* [retval][out] */ BSTR *userAgentString);
214     
215     virtual HRESULT STDMETHODCALLTYPE userAgentForURL( 
216         /* [in] */ BSTR url,
217         /* [retval][out] */ BSTR *userAgent);
218     
219     virtual HRESULT STDMETHODCALLTYPE supportsTextEncoding( 
220         /* [retval][out] */ BOOL *supports);
221     
222     virtual HRESULT STDMETHODCALLTYPE setCustomTextEncodingName( 
223         /* [in] */ BSTR encodingName);
224     
225     virtual HRESULT STDMETHODCALLTYPE customTextEncodingName( 
226         /* [retval][out] */ BSTR *encodingName);
227     
228     virtual HRESULT STDMETHODCALLTYPE setMediaStyle( 
229         /* [in] */ BSTR media);
230     
231     virtual HRESULT STDMETHODCALLTYPE mediaStyle( 
232         /* [retval][out] */ BSTR *media);
233     
234     virtual HRESULT STDMETHODCALLTYPE stringByEvaluatingJavaScriptFromString( 
235         /* [in] */ BSTR script,
236         /* [retval][out] */ BSTR *result);
237     
238     virtual HRESULT STDMETHODCALLTYPE windowScriptObject( 
239         /* [retval][out] */ IWebScriptObject **webScriptObject);
240     
241     virtual HRESULT STDMETHODCALLTYPE setPreferences( 
242         /* [in] */ IWebPreferences *prefs);
243     
244     virtual HRESULT STDMETHODCALLTYPE preferences( 
245         /* [retval][out] */ IWebPreferences **prefs);
246     
247     virtual HRESULT STDMETHODCALLTYPE setPreferencesIdentifier( 
248         /* [in] */ BSTR anIdentifier);
249     
250     virtual HRESULT STDMETHODCALLTYPE preferencesIdentifier( 
251         /* [retval][out] */ BSTR *anIdentifier);
252     
253     virtual HRESULT STDMETHODCALLTYPE setHostWindow(HWND);
254     
255     virtual HRESULT STDMETHODCALLTYPE hostWindow(HWND*);
256     
257     virtual HRESULT STDMETHODCALLTYPE searchFor( 
258         /* [in] */ BSTR str,
259         /* [in] */ BOOL forward,
260         /* [in] */ BOOL caseFlag,
261         /* [in] */ BOOL wrapFlag,
262         /* [retval][out] */ BOOL *found);
263     
264     virtual HRESULT STDMETHODCALLTYPE registerViewClass( 
265         /* [in] */ IWebDocumentView *view,
266         /* [in] */ IWebDocumentRepresentation *representation,
267         /* [in] */ BSTR forMIMEType);
268
269     virtual HRESULT STDMETHODCALLTYPE setGroupName( 
270         /* [in] */ BSTR groupName);
271     
272     virtual HRESULT STDMETHODCALLTYPE groupName( 
273         /* [retval][out] */ BSTR *groupName);
274     
275     virtual HRESULT STDMETHODCALLTYPE estimatedProgress( 
276         /* [retval][out] */ double *estimatedProgress);
277     
278     virtual HRESULT STDMETHODCALLTYPE isLoading( 
279         /* [retval][out] */ BOOL *isLoading);
280     
281     virtual HRESULT STDMETHODCALLTYPE elementAtPoint( 
282         /* [in] */ LPPOINT point,
283         /* [retval][out] */ IPropertyBag **elementDictionary);
284     
285     virtual HRESULT STDMETHODCALLTYPE pasteboardTypesForSelection( 
286         /* [retval][out] */ IEnumVARIANT **enumVariant);
287     
288     virtual HRESULT STDMETHODCALLTYPE writeSelectionWithPasteboardTypes( 
289         /* [size_is][in] */ BSTR *types,
290         /* [in] */ int cTypes,
291         /* [in] */ IDataObject *pasteboard);
292     
293     virtual HRESULT STDMETHODCALLTYPE pasteboardTypesForElement( 
294         /* [in] */ IPropertyBag *elementDictionary,
295         /* [retval][out] */ IEnumVARIANT **enumVariant);
296     
297     virtual HRESULT STDMETHODCALLTYPE writeElement( 
298         /* [in] */ IPropertyBag *elementDictionary,
299         /* [size_is][in] */ BSTR *withPasteboardTypes,
300         /* [in] */ int cWithPasteboardTypes,
301         /* [in] */ IDataObject *pasteboard);
302     
303     virtual HRESULT STDMETHODCALLTYPE selectedText(
304         /* [out, retval] */ BSTR* str);
305
306     virtual HRESULT STDMETHODCALLTYPE centerSelectionInVisibleArea(
307         /* [in] */ IUnknown* sender);
308
309     virtual HRESULT STDMETHODCALLTYPE moveDragCaretToPoint( 
310         /* [in] */ LPPOINT point);
311     
312     virtual HRESULT STDMETHODCALLTYPE removeDragCaret( void);
313     
314     virtual HRESULT STDMETHODCALLTYPE setDrawsBackground( 
315         /* [in] */ BOOL drawsBackground);
316     
317     virtual HRESULT STDMETHODCALLTYPE drawsBackground( 
318         /* [retval][out] */ BOOL *drawsBackground);
319     
320     virtual HRESULT STDMETHODCALLTYPE setMainFrameURL( 
321         /* [in] */ BSTR urlString);
322     
323     virtual HRESULT STDMETHODCALLTYPE mainFrameURL( 
324         /* [retval][out] */ BSTR *urlString);
325     
326     virtual HRESULT STDMETHODCALLTYPE mainFrameDocument( 
327         /* [retval][out] */ IDOMDocument **document);
328     
329     virtual HRESULT STDMETHODCALLTYPE mainFrameTitle( 
330         /* [retval][out] */ BSTR *title);
331     
332     virtual HRESULT STDMETHODCALLTYPE mainFrameIcon(/* [retval][out] */ HBITMAP* 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     virtual HRESULT STDMETHODCALLTYPE MIMETypeForExtension(
613         /* [in] */ BSTR extension,
614         /* [retval][out] */ BSTR *mimeType);
615
616     virtual HRESULT STDMETHODCALLTYPE setCustomDropTarget(
617         /* [in] */ IDropTarget* dt);
618
619     virtual HRESULT STDMETHODCALLTYPE removeCustomDropTarget();
620
621     virtual HRESULT STDMETHODCALLTYPE setInViewSourceMode( 
622         /* [in] */ BOOL flag);
623     
624     virtual HRESULT STDMETHODCALLTYPE inViewSourceMode( 
625         /* [retval][out] */ BOOL* flag);
626
627     virtual HRESULT STDMETHODCALLTYPE viewWindow(/* [retval][out] */ HWND* window);
628
629     virtual HRESULT STDMETHODCALLTYPE setFormDelegate( 
630         /* [in] */ IWebFormDelegate *formDelegate);
631
632     virtual HRESULT STDMETHODCALLTYPE formDelegate( 
633         /* [retval][out] */ IWebFormDelegate **formDelegate);
634
635     virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegatePrivate( 
636         /* [in] */ IWebFrameLoadDelegatePrivate *frameLoadDelegatePrivate);
637
638     virtual HRESULT STDMETHODCALLTYPE frameLoadDelegatePrivate( 
639         /* [retval][out] */ IWebFrameLoadDelegatePrivate **frameLoadDelegatePrivate);
640
641     virtual HRESULT STDMETHODCALLTYPE scrollOffset( 
642         /* [retval][out] */ LPPOINT offset);
643
644     virtual HRESULT STDMETHODCALLTYPE scrollBy( 
645         /* [in] */ LPPOINT offset);
646
647     virtual HRESULT STDMETHODCALLTYPE visibleContentRect( 
648         /* [retval][out] */ LPRECT rect);
649
650     virtual HRESULT STDMETHODCALLTYPE updateFocusedAndActiveState();
651
652     virtual HRESULT STDMETHODCALLTYPE executeCoreCommandByName(BSTR name, BSTR value);
653
654     virtual HRESULT STDMETHODCALLTYPE clearMainFrameName();
655
656     virtual HRESULT STDMETHODCALLTYPE markAllMatchesForText(
657         BSTR search, BOOL caseSensitive, BOOL highlight, UINT limit, UINT* matches);
658
659     virtual HRESULT STDMETHODCALLTYPE unmarkAllTextMatches();
660
661     virtual HRESULT STDMETHODCALLTYPE rectsForTextMatches(
662         IEnumTextMatches** pmatches);
663
664     virtual HRESULT STDMETHODCALLTYPE generateSelectionImage(BOOL forceWhiteText, HBITMAP* hBitmap);
665
666     virtual HRESULT STDMETHODCALLTYPE selectionRect(
667         RECT* rc);
668     
669     virtual HRESULT STDMETHODCALLTYPE DragEnter(
670         IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
671
672     virtual HRESULT STDMETHODCALLTYPE DragOver(
673         DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
674     
675     virtual HRESULT STDMETHODCALLTYPE DragLeave();
676     
677     virtual HRESULT STDMETHODCALLTYPE Drop(
678         IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
679
680     virtual HRESULT STDMETHODCALLTYPE canHandleRequest( 
681         IWebURLRequest *request,
682         BOOL *result);
683
684     virtual HRESULT STDMETHODCALLTYPE standardUserAgentWithApplicationName( 
685         /* [in] */ BSTR applicationName,
686         /* [retval][out] */ BSTR *groupName);
687
688     virtual HRESULT STDMETHODCALLTYPE clearFocusNode();
689
690     virtual HRESULT STDMETHODCALLTYPE setInitialFocus(
691         /* [in] */ BOOL forward);
692     
693     virtual HRESULT STDMETHODCALLTYPE setTabKeyCyclesThroughElements( 
694         /* [in] */ BOOL cycles);
695     
696     virtual HRESULT STDMETHODCALLTYPE tabKeyCyclesThroughElements( 
697         /* [retval][out] */ BOOL *result);
698
699     virtual HRESULT STDMETHODCALLTYPE setAllowSiteSpecificHacks(
700         /* [in] */ BOOL allows);
701
702     virtual HRESULT STDMETHODCALLTYPE addAdditionalPluginDirectory( 
703         /* [in] */ BSTR directory);    
704
705     virtual HRESULT STDMETHODCALLTYPE loadBackForwardListFromOtherView( 
706         /* [in] */ IWebView *otherView);
707         
708     virtual HRESULT STDMETHODCALLTYPE inspector(
709         /* [retval][out] */ IWebInspector**);
710
711     virtual HRESULT STDMETHODCALLTYPE clearUndoRedoOperations( void);
712     virtual HRESULT STDMETHODCALLTYPE shouldClose( 
713         /* [retval][out] */ BOOL* result);
714
715     virtual HRESULT STDMETHODCALLTYPE setProhibitsMainFrameScrolling(BOOL);
716     virtual HRESULT STDMETHODCALLTYPE setShouldApplyMacFontAscentHack(BOOL);
717
718     virtual HRESULT STDMETHODCALLTYPE windowAncestryDidChange();
719
720     virtual HRESULT STDMETHODCALLTYPE paintDocumentRectToContext(RECT, HDC);
721
722     virtual HRESULT STDMETHODCALLTYPE paintScrollViewRectToContextAtPoint(RECT, POINT, HDC);
723
724     virtual HRESULT STDMETHODCALLTYPE reportException(
725         /* [in] */ JSContextRef context,
726         /* [in] */ JSValueRef exception);
727
728     virtual HRESULT STDMETHODCALLTYPE elementFromJS(
729         /* [in] */ JSContextRef context,
730         /* [in] */ JSValueRef nodeObject,
731         /* [retval][out] */ IDOMElement **element);
732
733     virtual HRESULT STDMETHODCALLTYPE setCustomHTMLTokenizerTimeDelay(
734         /* [in] */ double timeDelay);
735
736     virtual HRESULT STDMETHODCALLTYPE setCustomHTMLTokenizerChunkSize(
737         /* [in] */ int chunkSize);
738
739     virtual HRESULT STDMETHODCALLTYPE backingStore(/* [out, retval] */ HBITMAP* hBitmap);
740
741     virtual HRESULT STDMETHODCALLTYPE setTransparent(
742         /* [in] */ BOOL transparent);
743
744     virtual HRESULT STDMETHODCALLTYPE transparent(
745         /* [out, retval] */ BOOL* transparent);
746
747     virtual HRESULT STDMETHODCALLTYPE setDefersCallbacks(
748         /* [in] */ BOOL defersCallbacks);
749
750     virtual HRESULT STDMETHODCALLTYPE defersCallbacks(
751         /* [out, retval] */ BOOL* defersCallbacks);
752
753     virtual HRESULT STDMETHODCALLTYPE globalHistoryItem(
754         /* [out, retval] */ IWebHistoryItem** item);
755
756     virtual HRESULT STDMETHODCALLTYPE setAlwaysUsesComplexTextCodePath(
757         /* [in] */ BOOL complex);
758
759     virtual HRESULT STDMETHODCALLTYPE alwaysUsesComplexTextCodePath(
760         /* [out, retval] */ BOOL* complex);
761
762     virtual HRESULT STDMETHODCALLTYPE setCookieEnabled(
763         /* [in] */ BOOL enable);
764
765     virtual HRESULT STDMETHODCALLTYPE cookieEnabled(
766         /* [out, retval] */ BOOL* enabled);
767
768     virtual HRESULT STDMETHODCALLTYPE setMediaVolume(
769         /* [in] */ float volume);
770
771     virtual HRESULT STDMETHODCALLTYPE mediaVolume(
772         /* [out, retval] */ float* volume);
773
774     virtual HRESULT STDMETHODCALLTYPE registerEmbeddedViewMIMEType( 
775         /* [in] */ BSTR mimeType);
776
777     virtual HRESULT STDMETHODCALLTYPE setMemoryCacheDelegateCallsEnabled( 
778         /* [in] */ BOOL enabled);
779
780     virtual HRESULT STDMETHODCALLTYPE setJavaScriptURLsAreAllowed(
781         /* [in] */ BOOL areAllowed);
782
783     virtual HRESULT STDMETHODCALLTYPE setCanStartPlugins(
784         /* [in] */ BOOL canStartPlugins);
785
786     virtual HRESULT STDMETHODCALLTYPE addUserScriptToGroup(BSTR groupName, IWebScriptWorld*, BSTR source, BSTR url,
787                                                            unsigned whitelistCount, BSTR* whitelist, 
788                                                            unsigned blacklistCount, BSTR* blacklist,
789                                                            WebUserScriptInjectionTime);
790     virtual HRESULT STDMETHODCALLTYPE addUserStyleSheetToGroup(BSTR groupName, IWebScriptWorld*, BSTR source, BSTR url,
791                                                                unsigned whitelistCount, BSTR* whitelist, 
792                                                                unsigned blacklistCount, BSTR* blacklist);
793     virtual HRESULT STDMETHODCALLTYPE removeUserScriptFromGroup(BSTR groupName, IWebScriptWorld*, BSTR url);
794     virtual HRESULT STDMETHODCALLTYPE removeUserStyleSheetFromGroup(BSTR groupName, IWebScriptWorld*, BSTR url);
795     virtual HRESULT STDMETHODCALLTYPE removeUserScriptsFromGroup(BSTR groupName, IWebScriptWorld*);
796     virtual HRESULT STDMETHODCALLTYPE removeUserStyleSheetsFromGroup(BSTR groupName, IWebScriptWorld*);
797     virtual HRESULT STDMETHODCALLTYPE removeAllUserContentFromGroup(BSTR groupName);
798
799     virtual HRESULT STDMETHODCALLTYPE unused1();
800     virtual HRESULT STDMETHODCALLTYPE unused2();
801
802     virtual HRESULT STDMETHODCALLTYPE invalidateBackingStore(const RECT*);
803
804     virtual HRESULT STDMETHODCALLTYPE addOriginAccessWhitelistEntry(BSTR sourceOrigin, BSTR destinationProtocol, BSTR destinationHost, BOOL allowDestinationSubdomains);
805     virtual HRESULT STDMETHODCALLTYPE removeOriginAccessWhitelistEntry(BSTR sourceOrigin, BSTR destinationProtocol, BSTR destinationHost, BOOL allowDestinationSubdomains);
806     virtual HRESULT STDMETHODCALLTYPE resetOriginAccessWhitelists();
807
808     virtual HRESULT STDMETHODCALLTYPE setHistoryDelegate(IWebHistoryDelegate* historyDelegate);
809     virtual HRESULT STDMETHODCALLTYPE historyDelegate(IWebHistoryDelegate** historyDelegate);
810     virtual HRESULT STDMETHODCALLTYPE addVisitedLinks(BSTR* visitedURLs, unsigned visitedURLCount);
811
812     virtual HRESULT STDMETHODCALLTYPE unused3();
813     virtual HRESULT STDMETHODCALLTYPE unused4();
814     virtual HRESULT STDMETHODCALLTYPE unused5();
815
816     virtual HRESULT STDMETHODCALLTYPE setGeolocationProvider(IWebGeolocationProvider* locationProvider);
817     virtual HRESULT STDMETHODCALLTYPE geolocationProvider(IWebGeolocationProvider** locationProvider);
818     virtual HRESULT STDMETHODCALLTYPE geolocationDidChangePosition(IWebGeolocationPosition* position);
819     virtual HRESULT STDMETHODCALLTYPE geolocationDidFailWithError(IWebError* error);
820
821     virtual HRESULT STDMETHODCALLTYPE setDomainRelaxationForbiddenForURLScheme(BOOL forbidden, BSTR scheme);
822     virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsSecure(BSTR);
823     virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsAllowingLocalStorageAccessInPrivateBrowsing(BSTR);
824     virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsAllowingDatabaseAccessInPrivateBrowsing(BSTR);
825
826     virtual HRESULT STDMETHODCALLTYPE nextDisplayIsSynchronous();
827
828     virtual HRESULT STDMETHODCALLTYPE defaultMinimumTimerInterval(
829         /* [retval][out] */ double *interval);
830
831     virtual HRESULT STDMETHODCALLTYPE setMinimumTimerInterval(
832         /* [in] */ double);
833
834     virtual HRESULT STDMETHODCALLTYPE httpPipeliningEnabled(
835         /* [out, retval] */ BOOL* enabled);
836
837     virtual HRESULT STDMETHODCALLTYPE setHTTPPipeliningEnabled(
838         /* [in] */ BOOL);
839
840     virtual HRESULT STDMETHODCALLTYPE setUsesLayeredWindow(BOOL);
841     virtual HRESULT STDMETHODCALLTYPE usesLayeredWindow(BOOL*);
842
843     // IWebViewPrivate2
844     HRESULT STDMETHODCALLTYPE setLoadResourcesSerially(BOOL);
845     HRESULT STDMETHODCALLTYPE scaleWebView(double scale, POINT origin);
846     HRESULT STDMETHODCALLTYPE dispatchPendingLoadRequests();
847     virtual HRESULT STDMETHODCALLTYPE setCustomBackingScaleFactor(double);
848     virtual HRESULT STDMETHODCALLTYPE backingScaleFactor(double*);
849     virtual HRESULT STDMETHODCALLTYPE addUserScriptToGroup(BSTR groupName, IWebScriptWorld*, BSTR source, BSTR url,
850         unsigned whitelistCount, BSTR* whitelist, unsigned blacklistCount, BSTR* blacklist, WebUserScriptInjectionTime, WebUserContentInjectedFrames);
851     virtual HRESULT STDMETHODCALLTYPE addUserStyleSheetToGroup(BSTR groupName, IWebScriptWorld*, BSTR source, BSTR url,
852         unsigned whitelistCount, BSTR* whitelist, unsigned blacklistCount, BSTR* blacklist, WebUserContentInjectedFrames);
853
854     // WebView
855     bool shouldUseEmbeddedView(const WTF::String& mimeType) const;
856
857     WebCore::Page* page();
858     bool handleMouseEvent(UINT, WPARAM, LPARAM);
859     void setMouseActivated(bool flag) { m_mouseActivated = flag; }
860     bool handleContextMenuEvent(WPARAM, LPARAM);
861     bool onMeasureItem(WPARAM, LPARAM);
862     bool onDrawItem(WPARAM, LPARAM);
863     bool onInitMenuPopup(WPARAM, LPARAM);
864     bool onUninitMenuPopup(WPARAM, LPARAM);
865     void performContextMenuAction(WPARAM, LPARAM, bool byPosition);
866     bool mouseWheel(WPARAM, LPARAM, bool isMouseHWheel);
867     bool verticalScroll(WPARAM, LPARAM);
868     bool horizontalScroll(WPARAM, LPARAM);
869     bool gesture(WPARAM, LPARAM);
870     bool gestureNotify(WPARAM, LPARAM);
871     bool execCommand(WPARAM wParam, LPARAM lParam);
872     bool keyDown(WPARAM, LPARAM, bool systemKeyDown = false);
873     bool keyUp(WPARAM, LPARAM, bool systemKeyDown = false);
874     bool keyPress(WPARAM, LPARAM, bool systemKeyDown = false);
875     void paint(HDC, LPARAM);
876     void paintIntoWindow(HDC bitmapDC, HDC windowDC, const WebCore::IntRect& dirtyRect);
877     bool ensureBackingStore();
878     void addToDirtyRegion(const WebCore::IntRect&);
879     void addToDirtyRegion(GDIObject<HRGN>);
880     void scrollBackingStore(WebCore::FrameView*, int dx, int dy, const WebCore::IntRect& scrollViewRect, const WebCore::IntRect& clipRect);
881     void deleteBackingStore();
882     void repaint(const WebCore::IntRect&, bool contentChanged, bool immediate = false, bool repaintContentOnly = false);
883     void frameRect(RECT* rect);
884     void closeWindow();
885     void closeWindowSoon();
886     void closeWindowTimerFired();
887     bool didClose() const { return m_didClose; }
888
889     bool transparent() const { return m_transparent; }
890     bool usesLayeredWindow() const { return m_usesLayeredWindow; }
891     bool needsDisplay() const { return m_needsDisplay; }
892
893     bool onIMEStartComposition();
894     bool onIMEComposition(LPARAM);
895     bool onIMEEndComposition();
896     bool onIMEChar(WPARAM, LPARAM);
897     bool onIMENotify(WPARAM, LPARAM, LRESULT*);
898     LRESULT onIMERequest(WPARAM, LPARAM);
899     bool onIMESelect(WPARAM, LPARAM);
900     bool onIMESetContext(WPARAM, LPARAM);
901     void selectionChanged();
902     void resetIME(WebCore::Frame*);
903     void setInputMethodState(bool);
904
905     HRESULT registerDragDrop();
906     HRESULT revokeDragDrop();
907
908     // Convenient to be able to violate the rules of COM here for easy movement to the frame.
909     WebFrame* topLevelFrame() const { return m_mainFrame; }
910     const WTF::String& userAgentForKURL(const WebCore::URL& url);
911
912     static bool canHandleRequest(const WebCore::ResourceRequest&);
913
914     static WTF::String standardUserAgentWithApplicationName(const WTF::String&);
915
916     void setIsBeingDestroyed();
917     bool isBeingDestroyed() const { return m_isBeingDestroyed; }
918
919     const char* interpretKeyEvent(const WebCore::KeyboardEvent*);
920     bool handleEditingKeyboardEvent(WebCore::KeyboardEvent*);
921
922     bool isPainting() const { return m_paintCount > 0; }
923
924     void setToolTip(const WTF::String&);
925
926     void registerForIconNotification(bool listen);
927     void dispatchDidReceiveIconFromWebFrame(WebFrame*);
928
929     HRESULT notifyDidAddIcon(IWebNotification*);
930     HRESULT notifyPreferencesChanged(IWebNotification*);
931
932     static void setCacheModel(WebCacheModel);
933     static WebCacheModel cacheModel();
934     static bool didSetCacheModel();
935     static WebCacheModel maxCacheModelInAnyInstance();
936
937     void updateActiveStateSoon() const;
938     void deleteBackingStoreSoon();
939     void cancelDeleteBackingStoreSoon();
940
941     HWND topLevelParent() const { return m_topLevelParent; }
942     HWND viewWindow() const { return m_viewWindow; }
943
944     void updateActiveState();
945
946     bool onGetObject(WPARAM, LPARAM, LRESULT&) const;
947     static STDMETHODIMP AccessibleObjectFromWindow(HWND, DWORD objectID, REFIID, void** ppObject);
948
949     void downloadURL(const WebCore::URL&);
950
951     void flushPendingGraphicsLayerChangesSoon();
952     void setRootChildLayer(WebCore::GraphicsLayer*);
953
954 #if PLATFORM(WIN) && USE(AVFOUNDATION)
955     WebCore::GraphicsDeviceAdapter* graphicsDeviceAdapter() const;
956 #endif
957
958     void enterVideoFullscreenForVideoElement(WebCore::HTMLVideoElement&);
959     void exitVideoFullscreenForVideoElement(WebCore::HTMLVideoElement&);
960
961     void setLastCursor(HCURSOR cursor) { m_lastSetCursor = cursor; }
962
963     void setGlobalHistoryItem(WebCore::HistoryItem*);
964
965 #if ENABLE(FULLSCREEN_API)
966     bool supportsFullScreenForElement(const WebCore::Element*, bool withKeyboard) const;
967     bool isFullScreen() const;
968     WebCore::FullScreenController* fullScreenController();
969     void setFullScreenElement(PassRefPtr<WebCore::Element>);
970     WebCore::Element* fullScreenElement() const { return m_fullScreenElement.get(); }
971 #endif
972
973     bool canShowMIMEType(const String& mimeType);
974     bool canShowMIMETypeAsHTML(const String& mimeType);
975
976     // Used by TextInputController in DumpRenderTree
977
978     HRESULT STDMETHODCALLTYPE setCompositionForTesting(
979         /* [in] */ BSTR composition, 
980         /* [in] */ UINT from, 
981         /* [in] */ UINT length);
982
983     HRESULT STDMETHODCALLTYPE hasCompositionForTesting(/* [out, retval] */ BOOL* result);
984
985     HRESULT STDMETHODCALLTYPE confirmCompositionForTesting(/* [in] */ BSTR composition);
986
987     HRESULT STDMETHODCALLTYPE compositionRangeForTesting(/* [out] */ UINT* startPosition, /* [out] */ UINT* length);
988
989     HRESULT STDMETHODCALLTYPE firstRectForCharacterRangeForTesting(
990     /* [in] */ UINT location, 
991     /* [in] */ UINT length, 
992     /* [out, retval] */ RECT* resultRect);
993
994     HRESULT STDMETHODCALLTYPE selectedRangeForTesting(/* [out] */ UINT* location, /* [out] */ UINT* length);
995
996     float deviceScaleFactor() const;
997
998 private:
999     void setZoomMultiplier(float multiplier, bool isTextOnly);
1000     float zoomMultiplier(bool isTextOnly);
1001     bool canZoomIn(bool isTextOnly);
1002     HRESULT zoomIn(bool isTextOnly);
1003     bool canZoomOut(bool isTextOnly);
1004     HRESULT zoomOut(bool isTextOnly);
1005     bool canResetZoom(bool isTextOnly);
1006     HRESULT resetZoom(bool isTextOnly);
1007     bool active();
1008
1009     void sizeChanged(const WebCore::IntSize&);
1010     bool dpiChanged(float, const WebCore::IntSize&);
1011
1012     enum WindowsToPaint { PaintWebViewOnly, PaintWebViewAndChildren };
1013     void paintIntoBackingStore(WebCore::FrameView*, HDC bitmapDC, const WebCore::IntRect& dirtyRect, WindowsToPaint);
1014     void updateBackingStore(WebCore::FrameView*, HDC = 0, bool backingStoreCompletelyDirty = false, WindowsToPaint = PaintWebViewOnly);
1015
1016     void performLayeredWindowUpdate();
1017
1018     WebCore::DragOperation keyStateToDragOperation(DWORD grfKeyState) const;
1019
1020     // FIXME: This variable is part of a workaround. The drop effect (pdwEffect) passed to Drop is incorrect. 
1021     // We set this variable in DragEnter and DragOver so that it can be used in Drop to set the correct drop effect. 
1022     // Thus, on return from DoDragDrop we have the correct pdwEffect for the drag-and-drop operation.
1023     // (see https://bugs.webkit.org/show_bug.cgi?id=29264)
1024     DWORD m_lastDropEffect;
1025
1026     // GraphicsLayerClient
1027     virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double time);
1028     virtual void notifyFlushRequired(const WebCore::GraphicsLayer*);
1029     virtual void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::FloatRect& inClip);
1030
1031     // CACFLayerTreeHostClient
1032     virtual void flushPendingGraphicsLayerChanges();
1033
1034     bool m_shouldInvertColors;
1035     void setShouldInvertColors(bool);
1036
1037 protected:
1038     static bool registerWebViewWindowClass();
1039     static LRESULT CALLBACK WebViewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
1040
1041     void updateWindowIfNeeded(HWND hWnd, UINT message);
1042
1043     HIMC getIMMContext();
1044     void releaseIMMContext(HIMC);
1045     static bool allowSiteSpecificHacks() { return s_allowSiteSpecificHacks; } 
1046     void preflightSpellChecker();
1047     bool continuousCheckingAllowed();
1048     void initializeToolTipWindow();
1049     void prepareCandidateWindow(WebCore::Frame*, HIMC);
1050     void updateSelectionForIME();
1051     LRESULT onIMERequestCharPosition(WebCore::Frame*, IMECHARPOSITION*);
1052     LRESULT onIMERequestReconvertString(WebCore::Frame*, RECONVERTSTRING*);
1053     bool developerExtrasEnabled() const;
1054
1055     bool shouldInitializeTrackPointHack();
1056
1057     // AllWebViewSet functions
1058     void addToAllWebViewsSet();
1059     void removeFromAllWebViewsSet();
1060
1061     virtual void windowReceivedMessage(HWND, UINT message, WPARAM, LPARAM);
1062
1063 #if ENABLE(FULLSCREEN_API)
1064     virtual HWND fullScreenClientWindow() const;
1065     virtual HWND fullScreenClientParentWindow() const;
1066     virtual void fullScreenClientSetParentWindow(HWND);
1067     virtual void fullScreenClientWillEnterFullScreen();
1068     virtual void fullScreenClientDidEnterFullScreen();
1069     virtual void fullScreenClientWillExitFullScreen();
1070     virtual void fullScreenClientDidExitFullScreen();
1071     virtual void fullScreenClientForceRepaint();
1072     virtual void fullScreenClientSaveScrollPosition();
1073     virtual void fullScreenClientRestoreScrollPosition();
1074 #endif
1075
1076     ULONG m_refCount;
1077 #if !ASSERT_DISABLED
1078     bool m_deletionHasBegun;
1079 #endif
1080     HWND m_hostWindow;
1081     HWND m_viewWindow;
1082     WebFrame* m_mainFrame;
1083     WebCore::Page* m_page;
1084     WebInspectorClient* m_inspectorClient;
1085
1086     RefPtr<WebCore::SharedGDIObject<HBITMAP>> m_backingStoreBitmap;
1087     SIZE m_backingStoreSize;
1088     RefPtr<WebCore::SharedGDIObject<HRGN>> m_backingStoreDirtyRegion;
1089
1090     COMPtr<IAccessibilityDelegate> m_accessibilityDelegate;
1091     COMPtr<IWebEditingDelegate> m_editingDelegate;
1092     COMPtr<IWebFrameLoadDelegate> m_frameLoadDelegate;
1093     COMPtr<IWebFrameLoadDelegatePrivate> m_frameLoadDelegatePrivate;
1094     COMPtr<IWebUIDelegate> m_uiDelegate;
1095     COMPtr<IWebUIDelegatePrivate> m_uiDelegatePrivate;
1096     COMPtr<IWebFormDelegate> m_formDelegate;
1097     COMPtr<IWebPolicyDelegate> m_policyDelegate;
1098     COMPtr<IWebResourceLoadDelegate> m_resourceLoadDelegate;
1099     COMPtr<IWebDownloadDelegate> m_downloadDelegate;
1100     COMPtr<IWebHistoryDelegate> m_historyDelegate;
1101     COMPtr<WebPreferences> m_preferences;
1102     COMPtr<WebInspector> m_webInspector;
1103     COMPtr<IWebGeolocationProvider> m_geolocationProvider;
1104
1105     bool m_userAgentOverridden;
1106     bool m_useBackForwardList;
1107     WTF::String m_userAgentCustom;
1108     WTF::String m_userAgentStandard;
1109     float m_zoomMultiplier;
1110     float m_customDeviceScaleFactor { 0 };
1111     bool m_zoomsTextOnly;
1112     WTF::String m_overrideEncoding;
1113     WTF::String m_applicationName;
1114     bool m_mouseActivated;
1115     // WebCore dragging logic needs to be able to inspect the drag data
1116     // this is updated in DragEnter/Leave/Drop
1117     COMPtr<IDataObject> m_dragData;
1118     COMPtr<IDropTargetHelper> m_dropTargetHelper;
1119     UChar m_currentCharacterCode;
1120     bool m_isBeingDestroyed;
1121     unsigned m_paintCount;
1122     bool m_hasSpellCheckerDocumentTag;
1123     bool m_didClose;
1124     bool m_hasCustomDropTarget;
1125     unsigned m_inIMEComposition;
1126     HWND m_toolTipHwnd;
1127     WTF::String m_toolTip;
1128     bool m_deleteBackingStoreTimerActive;
1129
1130     bool m_transparent;
1131
1132     static bool s_allowSiteSpecificHacks;
1133
1134     WebCore::SuspendableTimer* m_closeWindowTimer;
1135     std::unique_ptr<TRACKMOUSEEVENT> m_mouseOutTracker;
1136
1137     HWND m_topLevelParent;
1138
1139     std::unique_ptr<HashSet<WTF::String>> m_embeddedViewMIMETypes;
1140
1141     //Variables needed to store gesture information
1142     RefPtr<WebCore::Node> m_gestureTargetNode;
1143     long m_lastPanX;
1144     long m_lastPanY;
1145     long m_xOverpan;
1146     long m_yOverpan;
1147
1148 #if ENABLE(VIDEO)
1149     std::unique_ptr<FullscreenVideoController> m_fullScreenVideoController;
1150 #endif
1151
1152     bool isAcceleratedCompositing() const { return m_isAcceleratedCompositing; }
1153     void setAcceleratedCompositing(bool);
1154 #if USE(CA)
1155     RefPtr<WebCore::CACFLayerTreeHost> m_layerTreeHost;
1156     std::unique_ptr<WebCore::GraphicsLayer> m_backingLayer;
1157 #elif USE(TEXTURE_MAPPER_GL)
1158     std::unique_ptr<AcceleratedCompositingContext> m_acceleratedCompositingContext;
1159 #endif
1160     bool m_isAcceleratedCompositing;
1161
1162     bool m_nextDisplayIsSynchronous;
1163     bool m_usesLayeredWindow;
1164     bool m_needsDisplay;
1165
1166     HCURSOR m_lastSetCursor;
1167
1168     RefPtr<WebCore::HistoryItem> m_globalHistoryItem;
1169
1170 #if ENABLE(FULLSCREEN_API)
1171     RefPtr<WebCore::Element> m_fullScreenElement;
1172     std::unique_ptr<WebCore::FullScreenController> m_fullscreenController;
1173     WebCore::IntPoint m_scrollPosition;
1174 #endif
1175
1176     RefPtr<WebViewGroup> m_webViewGroup;
1177 };
1178
1179 #endif