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