36812fe93283bcd56b2c0453e961b617aabd2608
[WebKit-https.git] / WebKit / win / WebView.h
1 /*
2  * Copyright (C) 2006, 2007 Apple Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #ifndef WebView_H
27 #define WebView_H
28
29 #include "COMPtr.h"
30 #include "IWebNotificationObserver.h"
31 #include "IWebUIDelegatePrivate.h"
32 #include "IWebView.h"
33 #include "IWebViewPrivate.h"
34 #include "WebFrame.h"
35 #include "WebPreferences.h"
36
37 #include <WebCore/IntRect.h>
38 #include <WebCore/Timer.h>
39 #include <wtf/OwnPtr.h>
40
41 class WebFrame;
42 class WebBackForwardList;
43 class WebInspector;
44 class WebInspectorClient;
45
46 WebCore::Page* core(IWebView*);
47
48 interface IDropTargetHelper;
49
50 class WebView 
51     : public IWebView
52     , public IWebViewPrivate
53     , public IWebIBActions
54     , public IWebViewCSS
55     , public IWebViewEditing
56     , public IWebViewUndoableEditing
57     , public IWebViewEditingActions
58     , public IWebNotificationObserver
59     , public IDropTarget
60 {
61 public:
62     static WebView* createInstance();
63 protected:
64     WebView();
65     ~WebView();
66
67 public:
68     // IUnknown
69     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
70     virtual ULONG STDMETHODCALLTYPE AddRef(void);
71     virtual ULONG STDMETHODCALLTYPE Release(void);
72
73     // IWebView
74
75     virtual HRESULT STDMETHODCALLTYPE canShowMIMEType( 
76         /* [in] */ BSTR mimeType,
77         /* [retval][out] */ BOOL *canShow);
78     
79     virtual HRESULT STDMETHODCALLTYPE canShowMIMETypeAsHTML( 
80         /* [in] */ BSTR mimeType,
81         /* [retval][out] */ BOOL *canShow);
82     
83     virtual HRESULT STDMETHODCALLTYPE MIMETypesShownAsHTML( 
84         /* [retval][out] */ IEnumVARIANT **enumVariant);
85     
86     virtual HRESULT STDMETHODCALLTYPE setMIMETypesShownAsHTML( 
87         /* [size_is][in] */ BSTR *mimeTypes,
88         /* [in] */ int cMimeTypes);
89     
90     virtual HRESULT STDMETHODCALLTYPE URLFromPasteboard( 
91         /* [in] */ IDataObject *pasteboard,
92         /* [retval][out] */ BSTR *url);
93     
94     virtual HRESULT STDMETHODCALLTYPE URLTitleFromPasteboard( 
95         /* [in] */ IDataObject *pasteboard,
96         /* [retval][out] */ BSTR *urlTitle);
97     
98     virtual HRESULT STDMETHODCALLTYPE initWithFrame( 
99         /* [in] */ RECT frame,
100         /* [in] */ BSTR frameName,
101         /* [in] */ BSTR groupName);
102     
103     virtual HRESULT STDMETHODCALLTYPE setUIDelegate( 
104         /* [in] */ IWebUIDelegate *d);
105     
106     virtual HRESULT STDMETHODCALLTYPE uiDelegate( 
107         /* [out][retval] */ IWebUIDelegate **d);
108     
109     virtual HRESULT STDMETHODCALLTYPE setResourceLoadDelegate( 
110         /* [in] */ IWebResourceLoadDelegate *d);
111     
112     virtual HRESULT STDMETHODCALLTYPE resourceLoadDelegate( 
113         /* [out][retval] */ IWebResourceLoadDelegate **d);
114     
115     virtual HRESULT STDMETHODCALLTYPE setDownloadDelegate( 
116         /* [in] */ IWebDownloadDelegate *d);
117     
118     virtual HRESULT STDMETHODCALLTYPE downloadDelegate( 
119         /* [out][retval] */ IWebDownloadDelegate **d);
120     
121     virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegate( 
122         /* [in] */ IWebFrameLoadDelegate *d);
123     
124     virtual HRESULT STDMETHODCALLTYPE frameLoadDelegate( 
125         /* [out][retval] */ IWebFrameLoadDelegate **d);
126     
127     virtual HRESULT STDMETHODCALLTYPE setPolicyDelegate( 
128         /* [in] */ IWebPolicyDelegate *d);
129     
130     virtual HRESULT STDMETHODCALLTYPE policyDelegate( 
131         /* [out][retval] */ IWebPolicyDelegate **d);
132     
133     virtual HRESULT STDMETHODCALLTYPE mainFrame( 
134         /* [out][retval] */ IWebFrame **frame);
135
136     virtual HRESULT STDMETHODCALLTYPE focusedFrame( 
137         /* [out][retval] */ IWebFrame **frame);
138     
139     virtual HRESULT STDMETHODCALLTYPE backForwardList( 
140         /* [out][retval] */ IWebBackForwardList **list);
141     
142     virtual HRESULT STDMETHODCALLTYPE setMaintainsBackForwardList( 
143         /* [in] */ BOOL flag);
144     
145     virtual HRESULT STDMETHODCALLTYPE goBack( 
146         /* [retval][out] */ BOOL *succeeded);
147     
148     virtual HRESULT STDMETHODCALLTYPE goForward( 
149         /* [retval][out] */ BOOL *succeeded);
150     
151     virtual HRESULT STDMETHODCALLTYPE goToBackForwardItem( 
152         /* [in] */ IWebHistoryItem *item,
153         /* [retval][out] */ BOOL *succeeded);
154     
155     virtual HRESULT STDMETHODCALLTYPE setTextSizeMultiplier( 
156         /* [in] */ float multiplier);
157     
158     virtual HRESULT STDMETHODCALLTYPE textSizeMultiplier( 
159         /* [retval][out] */ float *multiplier);
160     
161     virtual HRESULT STDMETHODCALLTYPE setApplicationNameForUserAgent( 
162         /* [in] */ BSTR applicationName);
163     
164     virtual HRESULT STDMETHODCALLTYPE applicationNameForUserAgent( 
165         /* [retval][out] */ BSTR *applicationName);
166     
167     virtual HRESULT STDMETHODCALLTYPE setCustomUserAgent( 
168         /* [in] */ BSTR userAgentString);
169     
170     virtual HRESULT STDMETHODCALLTYPE customUserAgent( 
171         /* [retval][out] */ BSTR *userAgentString);
172     
173     virtual HRESULT STDMETHODCALLTYPE userAgentForURL( 
174         /* [in] */ BSTR url,
175         /* [retval][out] */ BSTR *userAgent);
176     
177     virtual HRESULT STDMETHODCALLTYPE supportsTextEncoding( 
178         /* [retval][out] */ BOOL *supports);
179     
180     virtual HRESULT STDMETHODCALLTYPE setCustomTextEncodingName( 
181         /* [in] */ BSTR encodingName);
182     
183     virtual HRESULT STDMETHODCALLTYPE customTextEncodingName( 
184         /* [retval][out] */ BSTR *encodingName);
185     
186     virtual HRESULT STDMETHODCALLTYPE setMediaStyle( 
187         /* [in] */ BSTR media);
188     
189     virtual HRESULT STDMETHODCALLTYPE mediaStyle( 
190         /* [retval][out] */ BSTR *media);
191     
192     virtual HRESULT STDMETHODCALLTYPE stringByEvaluatingJavaScriptFromString( 
193         /* [in] */ BSTR script,
194         /* [retval][out] */ BSTR *result);
195     
196     virtual HRESULT STDMETHODCALLTYPE windowScriptObject( 
197         /* [retval][out] */ IWebScriptObject **webScriptObject);
198     
199     virtual HRESULT STDMETHODCALLTYPE setPreferences( 
200         /* [in] */ IWebPreferences *prefs);
201     
202     virtual HRESULT STDMETHODCALLTYPE preferences( 
203         /* [retval][out] */ IWebPreferences **prefs);
204     
205     virtual HRESULT STDMETHODCALLTYPE setPreferencesIdentifier( 
206         /* [in] */ BSTR anIdentifier);
207     
208     virtual HRESULT STDMETHODCALLTYPE preferencesIdentifier( 
209         /* [retval][out] */ BSTR *anIdentifier);
210     
211     virtual HRESULT STDMETHODCALLTYPE setHostWindow( 
212         /* [in] */ OLE_HANDLE window);
213     
214     virtual HRESULT STDMETHODCALLTYPE hostWindow( 
215         /* [retval][out] */ OLE_HANDLE *window);
216     
217     virtual HRESULT STDMETHODCALLTYPE searchFor( 
218         /* [in] */ BSTR str,
219         /* [in] */ BOOL forward,
220         /* [in] */ BOOL caseFlag,
221         /* [in] */ BOOL wrapFlag,
222         /* [retval][out] */ BOOL *found);
223     
224     virtual HRESULT STDMETHODCALLTYPE registerViewClass( 
225         /* [in] */ IWebDocumentView *view,
226         /* [in] */ IWebDocumentRepresentation *representation,
227         /* [in] */ BSTR forMIMEType);
228
229     virtual HRESULT STDMETHODCALLTYPE setGroupName( 
230         /* [in] */ BSTR groupName);
231     
232     virtual HRESULT STDMETHODCALLTYPE groupName( 
233         /* [retval][out] */ BSTR *groupName);
234     
235     virtual HRESULT STDMETHODCALLTYPE estimatedProgress( 
236         /* [retval][out] */ double *estimatedProgress);
237     
238     virtual HRESULT STDMETHODCALLTYPE isLoading( 
239         /* [retval][out] */ BOOL *isLoading);
240     
241     virtual HRESULT STDMETHODCALLTYPE elementAtPoint( 
242         /* [in] */ LPPOINT point,
243         /* [retval][out] */ IPropertyBag **elementDictionary);
244     
245     virtual HRESULT STDMETHODCALLTYPE pasteboardTypesForSelection( 
246         /* [retval][out] */ IEnumVARIANT **enumVariant);
247     
248     virtual HRESULT STDMETHODCALLTYPE writeSelectionWithPasteboardTypes( 
249         /* [size_is][in] */ BSTR *types,
250         /* [in] */ int cTypes,
251         /* [in] */ IDataObject *pasteboard);
252     
253     virtual HRESULT STDMETHODCALLTYPE pasteboardTypesForElement( 
254         /* [in] */ IPropertyBag *elementDictionary,
255         /* [retval][out] */ IEnumVARIANT **enumVariant);
256     
257     virtual HRESULT STDMETHODCALLTYPE writeElement( 
258         /* [in] */ IPropertyBag *elementDictionary,
259         /* [size_is][in] */ BSTR *withPasteboardTypes,
260         /* [in] */ int cWithPasteboardTypes,
261         /* [in] */ IDataObject *pasteboard);
262     
263     virtual HRESULT STDMETHODCALLTYPE selectedText(
264         /* [out, retval] */ BSTR* str);
265
266     virtual HRESULT STDMETHODCALLTYPE centerSelectionInVisibleArea(
267         /* [in] */ IUnknown* sender);
268
269     virtual HRESULT STDMETHODCALLTYPE moveDragCaretToPoint( 
270         /* [in] */ LPPOINT point);
271     
272     virtual HRESULT STDMETHODCALLTYPE removeDragCaret( void);
273     
274     virtual HRESULT STDMETHODCALLTYPE setDrawsBackground( 
275         /* [in] */ BOOL drawsBackground);
276     
277     virtual HRESULT STDMETHODCALLTYPE drawsBackground( 
278         /* [retval][out] */ BOOL *drawsBackground);
279     
280     virtual HRESULT STDMETHODCALLTYPE setMainFrameURL( 
281         /* [in] */ BSTR urlString);
282     
283     virtual HRESULT STDMETHODCALLTYPE mainFrameURL( 
284         /* [retval][out] */ BSTR *urlString);
285     
286     virtual HRESULT STDMETHODCALLTYPE mainFrameDocument( 
287         /* [retval][out] */ IDOMDocument **document);
288     
289     virtual HRESULT STDMETHODCALLTYPE mainFrameTitle( 
290         /* [retval][out] */ BSTR *title);
291     
292     virtual HRESULT STDMETHODCALLTYPE mainFrameIcon( 
293         /* [retval][out] */ OLE_HANDLE *hBitmap);
294
295     // IWebIBActions
296
297     virtual HRESULT STDMETHODCALLTYPE takeStringURLFrom( 
298         /* [in] */ IUnknown *sender);
299     
300     virtual HRESULT STDMETHODCALLTYPE stopLoading( 
301         /* [in] */ IUnknown *sender);
302     
303     virtual HRESULT STDMETHODCALLTYPE reload( 
304         /* [in] */ IUnknown *sender);
305     
306     virtual HRESULT STDMETHODCALLTYPE canGoBack( 
307         /* [in] */ IUnknown *sender,
308         /* [retval][out] */ BOOL *result);
309     
310     virtual HRESULT STDMETHODCALLTYPE goBack( 
311         /* [in] */ IUnknown *sender);
312     
313     virtual HRESULT STDMETHODCALLTYPE canGoForward( 
314         /* [in] */ IUnknown *sender,
315         /* [retval][out] */ BOOL *result);
316     
317     virtual HRESULT STDMETHODCALLTYPE goForward( 
318         /* [in] */ IUnknown *sender);
319     
320     virtual HRESULT STDMETHODCALLTYPE canMakeTextLarger( 
321         /* [in] */ IUnknown *sender,
322         /* [retval][out] */ BOOL *result);
323     
324     virtual HRESULT STDMETHODCALLTYPE makeTextLarger( 
325         /* [in] */ IUnknown *sender);
326     
327     virtual HRESULT STDMETHODCALLTYPE canMakeTextSmaller( 
328         /* [in] */ IUnknown *sender,
329         /* [retval][out] */ BOOL *result);
330     
331     virtual HRESULT STDMETHODCALLTYPE makeTextSmaller( 
332         /* [in] */ IUnknown *sender);
333
334     virtual HRESULT STDMETHODCALLTYPE canMakeTextStandardSize( 
335         /* [in] */ IUnknown *sender,
336         /* [retval][out] */ BOOL *result);
337     
338     virtual HRESULT STDMETHODCALLTYPE makeTextStandardSize( 
339         /* [in] */ IUnknown *sender);
340     
341     virtual HRESULT STDMETHODCALLTYPE toggleContinuousSpellChecking( 
342         /* [in] */ IUnknown *sender);
343     
344     virtual HRESULT STDMETHODCALLTYPE toggleSmartInsertDelete( 
345         /* [in] */ IUnknown *sender);
346
347     virtual HRESULT STDMETHODCALLTYPE toggleGrammarChecking( 
348         /* [in] */ IUnknown *sender);
349
350     // IWebViewCSS
351
352     virtual HRESULT STDMETHODCALLTYPE computedStyleForElement( 
353         /* [in] */ IDOMElement *element,
354         /* [in] */ BSTR pseudoElement,
355         /* [retval][out] */ IDOMCSSStyleDeclaration **style);
356
357     // IWebViewEditing
358
359     virtual HRESULT STDMETHODCALLTYPE editableDOMRangeForPoint( 
360         /* [in] */ LPPOINT point,
361         /* [retval][out] */ IDOMRange **range);
362     
363     virtual HRESULT STDMETHODCALLTYPE setSelectedDOMRange( 
364         /* [in] */ IDOMRange *range,
365         /* [in] */ WebSelectionAffinity affinity);
366     
367     virtual HRESULT STDMETHODCALLTYPE selectedDOMRange( 
368         /* [retval][out] */ IDOMRange **range);
369     
370     virtual HRESULT STDMETHODCALLTYPE selectionAffinity( 
371         /* [retval][out][retval][out] */ WebSelectionAffinity *affinity);
372     
373     virtual HRESULT STDMETHODCALLTYPE setEditable( 
374         /* [in] */ BOOL flag);
375     
376     virtual HRESULT STDMETHODCALLTYPE isEditable( 
377         /* [retval][out] */ BOOL *isEditable);
378     
379     virtual HRESULT STDMETHODCALLTYPE setTypingStyle( 
380         /* [in] */ IDOMCSSStyleDeclaration *style);
381     
382     virtual HRESULT STDMETHODCALLTYPE typingStyle( 
383         /* [retval][out] */ IDOMCSSStyleDeclaration **style);
384     
385     virtual HRESULT STDMETHODCALLTYPE setSmartInsertDeleteEnabled( 
386         /* [in] */ BOOL flag);
387     
388     virtual HRESULT STDMETHODCALLTYPE smartInsertDeleteEnabled( 
389         /* [in] */ BOOL *enabled);
390     
391     virtual HRESULT STDMETHODCALLTYPE setContinuousSpellCheckingEnabled( 
392         /* [in] */ BOOL flag);
393     
394     virtual HRESULT STDMETHODCALLTYPE isContinuousSpellCheckingEnabled( 
395         /* [retval][out] */ BOOL *enabled);
396     
397     virtual HRESULT STDMETHODCALLTYPE spellCheckerDocumentTag( 
398         /* [retval][out] */ int *tag);
399     
400     virtual HRESULT STDMETHODCALLTYPE undoManager( 
401         /* [retval][out] */ IWebUndoManager **manager);
402     
403     virtual HRESULT STDMETHODCALLTYPE setEditingDelegate( 
404         /* [in] */ IWebEditingDelegate *d);
405     
406     virtual HRESULT STDMETHODCALLTYPE editingDelegate( 
407         /* [retval][out] */ IWebEditingDelegate **d);
408     
409     virtual HRESULT STDMETHODCALLTYPE styleDeclarationWithText( 
410         /* [in] */ BSTR text,
411         /* [retval][out] */ IDOMCSSStyleDeclaration **style);
412     
413     virtual HRESULT STDMETHODCALLTYPE hasSelectedRange( 
414         /* [retval][out] */ BOOL *hasSelectedRange);
415     
416     virtual HRESULT STDMETHODCALLTYPE cutEnabled( 
417         /* [retval][out] */ BOOL *enabled);
418     
419     virtual HRESULT STDMETHODCALLTYPE copyEnabled( 
420         /* [retval][out] */ BOOL *enabled);
421     
422     virtual HRESULT STDMETHODCALLTYPE pasteEnabled( 
423         /* [retval][out] */ BOOL *enabled);
424     
425     virtual HRESULT STDMETHODCALLTYPE deleteEnabled( 
426         /* [retval][out] */ BOOL *enabled);
427
428     virtual HRESULT STDMETHODCALLTYPE editingEnabled( 
429         /* [retval][out] */ BOOL *enabled);
430
431     virtual HRESULT STDMETHODCALLTYPE isGrammarCheckingEnabled( 
432         /* [retval][out] */ BOOL *enabled);
433     
434     virtual HRESULT STDMETHODCALLTYPE setGrammarCheckingEnabled( 
435         BOOL enabled);
436
437     // IWebViewUndoableEditing
438
439     virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithNode( 
440         /* [in] */ IDOMNode *node);
441     
442     virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithText( 
443         /* [in] */ BSTR text);
444     
445     virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithMarkupString( 
446         /* [in] */ BSTR markupString);
447     
448     virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithArchive( 
449         /* [in] */ IWebArchive *archive);
450     
451     virtual HRESULT STDMETHODCALLTYPE deleteSelection( void);
452
453     virtual HRESULT STDMETHODCALLTYPE clearSelection(void);
454     
455     virtual HRESULT STDMETHODCALLTYPE applyStyle( 
456         /* [in] */ IDOMCSSStyleDeclaration *style);
457
458     // IWebViewEditingActions
459
460     virtual HRESULT STDMETHODCALLTYPE copy( 
461         /* [in] */ IUnknown *sender);
462     
463     virtual HRESULT STDMETHODCALLTYPE cut( 
464         /* [in] */ IUnknown *sender);
465     
466     virtual HRESULT STDMETHODCALLTYPE paste( 
467         /* [in] */ IUnknown *sender);
468     
469     virtual HRESULT STDMETHODCALLTYPE copyURL( 
470         /* [in] */ BSTR url);
471
472     virtual HRESULT STDMETHODCALLTYPE copyFont( 
473         /* [in] */ IUnknown *sender);
474     
475     virtual HRESULT STDMETHODCALLTYPE pasteFont( 
476         /* [in] */ IUnknown *sender);
477     
478     virtual HRESULT STDMETHODCALLTYPE delete_( 
479         /* [in] */ IUnknown *sender);
480     
481     virtual HRESULT STDMETHODCALLTYPE pasteAsPlainText( 
482         /* [in] */ IUnknown *sender);
483     
484     virtual HRESULT STDMETHODCALLTYPE pasteAsRichText( 
485         /* [in] */ IUnknown *sender);
486     
487     virtual HRESULT STDMETHODCALLTYPE changeFont( 
488         /* [in] */ IUnknown *sender);
489     
490     virtual HRESULT STDMETHODCALLTYPE changeAttributes( 
491         /* [in] */ IUnknown *sender);
492     
493     virtual HRESULT STDMETHODCALLTYPE changeDocumentBackgroundColor( 
494         /* [in] */ IUnknown *sender);
495     
496     virtual HRESULT STDMETHODCALLTYPE changeColor( 
497         /* [in] */ IUnknown *sender);
498     
499     virtual HRESULT STDMETHODCALLTYPE alignCenter( 
500         /* [in] */ IUnknown *sender);
501     
502     virtual HRESULT STDMETHODCALLTYPE alignJustified( 
503         /* [in] */ IUnknown *sender);
504     
505     virtual HRESULT STDMETHODCALLTYPE alignLeft( 
506         /* [in] */ IUnknown *sender);
507     
508     virtual HRESULT STDMETHODCALLTYPE alignRight( 
509         /* [in] */ IUnknown *sender);
510     
511     virtual HRESULT STDMETHODCALLTYPE checkSpelling( 
512         /* [in] */ IUnknown *sender);
513     
514     virtual HRESULT STDMETHODCALLTYPE showGuessPanel( 
515         /* [in] */ IUnknown *sender);
516     
517     virtual HRESULT STDMETHODCALLTYPE performFindPanelAction( 
518         /* [in] */ IUnknown *sender);
519     
520     virtual HRESULT STDMETHODCALLTYPE startSpeaking( 
521         /* [in] */ IUnknown *sender);
522     
523     virtual HRESULT STDMETHODCALLTYPE stopSpeaking( 
524         /* [in] */ IUnknown *sender);
525
526     // IWebNotificationObserver
527
528     virtual HRESULT STDMETHODCALLTYPE onNotify( 
529         /* [in] */ IWebNotification *notification);
530
531     // IWebViewPrivate
532     virtual HRESULT STDMETHODCALLTYPE setCustomDropTarget(
533         /* [in] */ IDropTarget* dt);
534
535     virtual HRESULT STDMETHODCALLTYPE removeCustomDropTarget();
536
537     virtual HRESULT STDMETHODCALLTYPE setInViewSourceMode( 
538         /* [in] */ BOOL flag);
539     
540     virtual HRESULT STDMETHODCALLTYPE inViewSourceMode( 
541         /* [retval][out] */ BOOL* flag);
542
543     virtual HRESULT STDMETHODCALLTYPE viewWindow( 
544         /* [retval][out] */ OLE_HANDLE *window);
545
546     virtual HRESULT STDMETHODCALLTYPE setFormDelegate( 
547         /* [in] */ IWebFormDelegate *formDelegate);
548
549     virtual HRESULT STDMETHODCALLTYPE formDelegate( 
550         /* [retval][out] */ IWebFormDelegate **formDelegate);
551
552     virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegatePrivate( 
553         /* [in] */ IWebFrameLoadDelegatePrivate *frameLoadDelegatePrivate);
554
555     virtual HRESULT STDMETHODCALLTYPE frameLoadDelegatePrivate( 
556         /* [retval][out] */ IWebFrameLoadDelegatePrivate **frameLoadDelegatePrivate);
557
558     virtual HRESULT STDMETHODCALLTYPE scrollOffset( 
559         /* [retval][out] */ LPPOINT offset);
560
561     virtual HRESULT STDMETHODCALLTYPE scrollBy( 
562         /* [in] */ LPPOINT offset);
563
564     virtual HRESULT STDMETHODCALLTYPE visibleContentRect( 
565         /* [retval][out] */ LPRECT rect);
566
567     virtual HRESULT STDMETHODCALLTYPE updateActiveState(void);
568
569     virtual HRESULT STDMETHODCALLTYPE markAllMatchesForText(
570         BSTR search, BOOL caseSensitive, BOOL highlight, UINT limit, UINT* matches);
571
572     virtual HRESULT STDMETHODCALLTYPE unmarkAllTextMatches();
573
574     virtual HRESULT STDMETHODCALLTYPE rectsForTextMatches(
575         IEnumTextMatches** pmatches);
576
577     virtual HRESULT STDMETHODCALLTYPE generateSelectionImage(
578         BOOL forceWhiteText, OLE_HANDLE* hBitmap);
579
580     virtual HRESULT STDMETHODCALLTYPE selectionImageRect(
581         RECT* rc);
582     
583     virtual HRESULT STDMETHODCALLTYPE DragEnter(
584         IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
585
586     virtual HRESULT STDMETHODCALLTYPE DragOver(
587         DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
588     
589     virtual HRESULT STDMETHODCALLTYPE DragLeave();
590     
591     virtual HRESULT STDMETHODCALLTYPE Drop(
592         IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
593
594     virtual HRESULT STDMETHODCALLTYPE canHandleRequest( 
595         IWebURLRequest *request,
596         BOOL *result);
597
598     virtual HRESULT STDMETHODCALLTYPE clearFocusNode();
599
600     virtual HRESULT STDMETHODCALLTYPE setInitialFocus(
601         /* [in] */ BOOL forward);
602     
603     virtual HRESULT STDMETHODCALLTYPE setTabKeyCyclesThroughElements( 
604         /* [in] */ BOOL cycles);
605     
606     virtual HRESULT STDMETHODCALLTYPE tabKeyCyclesThroughElements( 
607         /* [retval][out] */ BOOL *result);
608
609     virtual HRESULT STDMETHODCALLTYPE setAllowSiteSpecificHacks(
610         /* [in] */ BOOL allows);
611
612     virtual HRESULT STDMETHODCALLTYPE addAdditionalPluginPath( 
613         /* [in] */ BSTR path);    
614
615     virtual HRESULT STDMETHODCALLTYPE loadBackForwardListFromOtherView( 
616         /* [in] */ IWebView *otherView);
617
618     virtual HRESULT STDMETHODCALLTYPE inspector(
619         /* [retval][out] */ IWebInspector**);
620
621     // WebView
622     WebCore::Page* page();
623     bool handleMouseEvent(UINT, WPARAM, LPARAM);
624     void setMouseActivated(bool flag) { m_mouseActivated = flag; }
625     bool handleContextMenuEvent(WPARAM, LPARAM);
626     bool onMeasureItem(WPARAM, LPARAM);
627     bool onDrawItem(WPARAM, LPARAM);
628     bool onInitMenuPopup(WPARAM, LPARAM);
629     bool onUninitMenuPopup(WPARAM, LPARAM);
630     void performContextMenuAction(WPARAM, LPARAM, bool byPosition);
631     bool mouseWheel(WPARAM, LPARAM, bool isHorizontal);
632     bool execCommand(WPARAM wParam, LPARAM lParam);
633     bool keyDown(WPARAM, LPARAM, bool systemKeyDown = false);
634     bool keyUp(WPARAM, LPARAM, bool systemKeyDown = false);
635     bool inResizer(LPARAM lParam);
636     void paint(HDC, LPARAM);
637     void paintIntoBackingStore(WebCore::FrameView*, HDC bitmapDC, const WebCore::IntRect& dirtyRect);
638     void paintIntoWindow(HDC bitmapDC, HDC windowDC, const WebCore::IntRect& dirtyRect);
639     bool ensureBackingStore();
640     void addToDirtyRegion(const WebCore::IntRect&);
641     void addToDirtyRegion(HRGN);
642     void scrollBackingStore(WebCore::FrameView*, int dx, int dy, const WebCore::IntRect& scrollViewRect, const WebCore::IntRect& clipRect);
643     void updateBackingStore(WebCore::FrameView*, HDC, bool backingStoreCompletelyDirty);
644     void deleteBackingStore();
645     void frameRect(RECT* rect);
646     void closeWindow();
647     void closeWindowSoon();
648     void close();
649     bool didClose() const { return m_didClose; }
650     void setProhibitsMainFrameScrolling(bool = true);
651
652     bool onIMEStartComposition();
653     bool onIMEComposition(LPARAM);
654     bool onIMEEndComposition();
655     bool onIMEChar(WPARAM, LPARAM);
656     bool onIMENotify(WPARAM, LPARAM, LRESULT*);
657     bool onIMERequest(WPARAM, LPARAM, LRESULT*);
658     bool onIMESelect(WPARAM, LPARAM);
659     bool onIMESetContext(WPARAM, LPARAM);
660     void selectionChanged();
661     void resetIME(WebCore::Frame*);
662     bool inIMEKeyDown() const { return m_inIMEKeyDown; }
663     void setInputMethodState(bool);
664
665     HRESULT registerDragDrop();
666     HRESULT revokeDragDrop();
667
668     // Convenient to be able to violate the rules of COM here for easy movement to the frame.
669     WebFrame* topLevelFrame() { return m_mainFrame; }
670     const WebCore::String& userAgentForKURL(const WebCore::KURL& url);
671
672     static bool canHandleRequest(const WebCore::ResourceRequest&);
673
674     void setIsBeingDestroyed() { m_isBeingDestroyed = true; }
675     bool isBeingDestroyed() const { return m_isBeingDestroyed; }
676
677     const char* interpretKeyEvent(const WebCore::KeyboardEvent*);
678     bool handleEditingKeyboardEvent(WebCore::KeyboardEvent*);
679
680     bool isPainting() const { return m_paintCount > 0; }
681
682     void setToolTip(const WebCore::String&);
683
684     void registerForIconNotification(bool listen);
685     void dispatchDidReceiveIconFromWebFrame(WebFrame*);
686
687     HRESULT notifyDidAddIcon(IWebNotification*);
688     HRESULT notifyPreferencesChanged(IWebNotification*);
689
690     static void setCacheModel(WebCacheModel);
691     static WebCacheModel cacheModel();
692     static bool didSetCacheModel();
693     static WebCacheModel maxCacheModelInAnyInstance();
694
695 protected:
696     HIMC getIMMContext();
697     void releaseIMMContext(HIMC);
698     static bool allowSiteSpecificHacks() { return s_allowSiteSpecificHacks; } 
699     void preflightSpellChecker();
700     bool continuousCheckingAllowed();
701     void initializeToolTipWindow();
702     void closeWindowTimerFired(WebCore::Timer<WebView>*);
703     void prepareCandidateWindow(WebCore::Frame*, HIMC);
704     void updateSelectionForIME();
705     bool onIMERequestCharPosition(WebCore::Frame*, IMECHARPOSITION*, LRESULT*);
706     bool onIMERequestReconvertString(WebCore::Frame*, RECONVERTSTRING*, LRESULT*);
707     bool developerExtrasEnabled() const;
708
709     // AllWebViewSet functions
710     void addToAllWebViewsSet();
711     void removeFromAllWebViewsSet();
712
713     ULONG m_refCount;
714     WebCore::String m_groupName;
715     HWND m_hostWindow;
716     HWND m_viewWindow;
717     WebFrame* m_mainFrame;
718     WebCore::Page* m_page;
719     
720     OwnPtr<HBITMAP> m_backingStoreBitmap;
721     SIZE m_backingStoreSize;
722     OwnPtr<HRGN> m_backingStoreDirtyRegion;
723
724     COMPtr<IWebEditingDelegate> m_editingDelegate;
725     COMPtr<IWebFrameLoadDelegate> m_frameLoadDelegate;
726     COMPtr<IWebFrameLoadDelegatePrivate> m_frameLoadDelegatePrivate;
727     COMPtr<IWebUIDelegate> m_uiDelegate;
728     COMPtr<IWebUIDelegatePrivate> m_uiDelegatePrivate;
729     COMPtr<IWebFormDelegate> m_formDelegate;
730     COMPtr<IWebPolicyDelegate> m_policyDelegate;
731     COMPtr<IWebResourceLoadDelegate> m_resourceLoadDelegate;
732     COMPtr<IWebDownloadDelegate> m_downloadDelegate;
733     COMPtr<WebPreferences> m_preferences;
734     COMPtr<WebInspector> m_webInspector;
735
736     bool m_userAgentOverridden;
737     bool m_useBackForwardList;
738     WebCore::String m_userAgentCustom;
739     WebCore::String m_userAgentStandard;
740     float m_textSizeMultiplier;
741     WebCore::String m_overrideEncoding;
742     WebCore::String m_applicationName;
743     bool m_mouseActivated;
744     // WebCore dragging logic needs to be able to inspect the drag data
745     // this is updated in DragEnter/Leave/Drop
746     COMPtr<IDataObject> m_dragData;
747     COMPtr<IDropTargetHelper> m_dropTargetHelper;
748     UChar m_currentCharacterCode;
749     bool m_isBeingDestroyed;
750     unsigned m_paintCount;
751     bool m_hasSpellCheckerDocumentTag;
752     bool m_smartInsertDeleteEnabled;
753     bool m_didClose;
754     bool m_hasCustomDropTarget;
755     unsigned m_inIMEComposition;
756     bool m_inIMEKeyDown;
757     HWND m_toolTipHwnd;
758     WebCore::String m_toolTip;
759
760     static bool s_allowSiteSpecificHacks;
761
762     WebCore::Timer<WebView> m_closeWindowTimer;
763 };
764
765 #endif