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