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