Reviewed by Maciej.
[WebKit-https.git] / WebKit / COM / WebView.h
1 /*
2  * Copyright (C) 2006 Apple Computer, 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 "IWebView.h"
30 #include "WebFrame.h"
31
32 class WebFrame;
33 class WebBackForwardList;
34
35 class WebView : public IWebView, public IWebViewExt, public IWebIBActions, public IWebViewCSS, public IWebViewEditing, public IWebViewUndoableEditing, public IWebViewEditingActions
36 {
37 public:
38     static WebView* createInstance();
39 protected:
40     WebView();
41     ~WebView();
42
43 public:
44     // IUnknown
45     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
46     virtual ULONG STDMETHODCALLTYPE AddRef(void);
47     virtual ULONG STDMETHODCALLTYPE Release(void);
48
49     // IWebView
50
51     virtual HRESULT STDMETHODCALLTYPE canShowMIMEType( 
52         /* [in] */ BSTR mimeType,
53         /* [retval][out] */ BOOL *canShow);
54     
55     virtual HRESULT STDMETHODCALLTYPE canShowMIMETypeAsHTML( 
56         /* [in] */ BSTR mimeType,
57         /* [retval][out] */ BOOL *canShow);
58     
59     virtual HRESULT STDMETHODCALLTYPE MIMETypesShownAsHTML( 
60         /* [out] */ int *count,
61         /* [retval][out] */ BSTR **mimeTypes);
62     
63     virtual HRESULT STDMETHODCALLTYPE setMIMETypesShownAsHTML( 
64         /* [size_is][in] */ BSTR *mimeTypes,
65         /* [in] */ int cMimeTypes);
66     
67     virtual HRESULT STDMETHODCALLTYPE URLFromPasteboard( 
68         /* [in] */ IDataObject *pasteboard,
69         /* [retval][out] */ BSTR *url);
70     
71     virtual HRESULT STDMETHODCALLTYPE URLTitleFromPasteboard( 
72         /* [in] */ IDataObject *pasteboard,
73         /* [retval][out] */ BSTR *urlTitle);
74     
75     virtual HRESULT STDMETHODCALLTYPE initWithFrame( 
76         /* [in] */ RECT *frame,
77         /* [in] */ BSTR frameName,
78         /* [in] */ BSTR groupName);
79     
80     virtual HRESULT STDMETHODCALLTYPE setUIDelegate( 
81         /* [in] */ IWebUIDelegate *d);
82     
83     virtual HRESULT STDMETHODCALLTYPE uiDelegate( 
84         /* [out][retval] */ IWebUIDelegate **d);
85     
86     virtual HRESULT STDMETHODCALLTYPE setResourceLoadDelegate( 
87         /* [in] */ IWebResourceLoadDelegate *d);
88     
89     virtual HRESULT STDMETHODCALLTYPE resourceLoadDelegate( 
90         /* [out][retval] */ IWebResourceLoadDelegate **d);
91     
92     virtual HRESULT STDMETHODCALLTYPE setDownloadDelegate( 
93         /* [in] */ IWebDownloadDelegate *d);
94     
95     virtual HRESULT STDMETHODCALLTYPE downloadDelegate( 
96         /* [out][retval] */ IWebDownloadDelegate **d);
97     
98     virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegate( 
99         /* [in] */ IWebFrameLoadDelegate *d);
100     
101     virtual HRESULT STDMETHODCALLTYPE frameLoadDelegate( 
102         /* [out][retval] */ IWebFrameLoadDelegate **d);
103     
104     virtual HRESULT STDMETHODCALLTYPE setPolicyDelegate( 
105         /* [in] */ IWebPolicyDelegate *d);
106     
107     virtual HRESULT STDMETHODCALLTYPE policyDelegate( 
108         /* [out][retval] */ IWebPolicyDelegate **d);
109     
110     virtual HRESULT STDMETHODCALLTYPE mainFrame( 
111         /* [out][retval] */ IWebFrame **frame);
112     
113     virtual HRESULT STDMETHODCALLTYPE backForwardList( 
114         /* [out][retval] */ IWebBackForwardList **list);
115     
116     virtual HRESULT STDMETHODCALLTYPE setMaintainsBackForwardList( 
117         /* [in] */ BOOL flag);
118     
119     virtual HRESULT STDMETHODCALLTYPE goBack( 
120         /* [retval][out] */ BOOL *succeeded);
121     
122     virtual HRESULT STDMETHODCALLTYPE goForward( 
123         /* [retval][out] */ BOOL *succeeded);
124     
125     virtual HRESULT STDMETHODCALLTYPE goToBackForwardItem( 
126         /* [in] */ IWebHistoryItem *item,
127         /* [retval][out] */ BOOL *succeeded);
128     
129     virtual HRESULT STDMETHODCALLTYPE setTextSizeMultiplier( 
130         /* [in] */ float multiplier);
131     
132     virtual HRESULT STDMETHODCALLTYPE textSizeMultiplier( 
133         /* [retval][out] */ float *multiplier);
134     
135     virtual HRESULT STDMETHODCALLTYPE setApplicationNameForUserAgent( 
136         /* [in] */ BSTR applicationName);
137     
138     virtual HRESULT STDMETHODCALLTYPE applicationNameForUserAgent( 
139         /* [retval][out] */ BSTR *applicationName);
140     
141     virtual HRESULT STDMETHODCALLTYPE setCustomUserAgent( 
142         /* [in] */ BSTR userAgentString);
143     
144     virtual HRESULT STDMETHODCALLTYPE customUserAgent( 
145         /* [retval][out] */ BSTR *userAgentString);
146     
147     virtual HRESULT STDMETHODCALLTYPE userAgentForURL( 
148         /* [in] */ BSTR url,
149         /* [retval][out] */ BSTR *userAgent);
150     
151     virtual HRESULT STDMETHODCALLTYPE supportsTextEncoding( 
152         /* [retval][out] */ BOOL *supports);
153     
154     virtual HRESULT STDMETHODCALLTYPE setCustomTextEncodingName( 
155         /* [in] */ BSTR encodingName);
156     
157     virtual HRESULT STDMETHODCALLTYPE customTextEncodingName( 
158         /* [retval][out] */ BSTR *encodingName);
159     
160     virtual HRESULT STDMETHODCALLTYPE setMediaStyle( 
161         /* [in] */ BSTR media);
162     
163     virtual HRESULT STDMETHODCALLTYPE mediaStyle( 
164         /* [retval][out] */ BSTR *media);
165     
166     virtual HRESULT STDMETHODCALLTYPE stringByEvaluatingJavaScriptFromString( 
167         /* [in] */ BSTR script,
168         /* [retval][out] */ BSTR *result);
169     
170     virtual HRESULT STDMETHODCALLTYPE windowScriptObject( 
171         /* [retval][out] */ IWebScriptObject *webScriptObject);
172     
173     virtual HRESULT STDMETHODCALLTYPE setPreferences( 
174         /* [in] */ IWebPreferences *prefs);
175     
176     virtual HRESULT STDMETHODCALLTYPE preferences( 
177         /* [retval][out] */ IWebPreferences **prefs);
178     
179     virtual HRESULT STDMETHODCALLTYPE setPreferencesIdentifier( 
180         /* [in] */ BSTR anIdentifier);
181     
182     virtual HRESULT STDMETHODCALLTYPE preferencesIdentifier( 
183         /* [retval][out] */ BSTR *anIdentifier);
184     
185     virtual HRESULT STDMETHODCALLTYPE setHostWindow( 
186         /* [in] */ HWND window);
187     
188     virtual HRESULT STDMETHODCALLTYPE hostWindow( 
189         /* [retval][out] */ HWND *window);
190     
191     virtual HRESULT STDMETHODCALLTYPE searchFor( 
192         /* [in] */ BSTR str,
193         /* [in] */ BOOL forward,
194         /* [in] */ BOOL caseFlag,
195         /* [in] */ BOOL wrapFlag,
196         /* [retval][out] */ BOOL *found);
197     
198     virtual HRESULT STDMETHODCALLTYPE registerViewClass( 
199         /* [in] */ IWebDocumentView *view,
200         /* [in] */ IWebDocumentRepresentation *representation,
201         /* [in] */ BSTR forMIMEType);
202
203     // IWebIBActions
204
205     virtual HRESULT STDMETHODCALLTYPE takeStringURLFrom( 
206         /* [in] */ IUnknown *sender);
207     
208     virtual HRESULT STDMETHODCALLTYPE stopLoading( 
209         /* [in] */ IUnknown *sender);
210     
211     virtual HRESULT STDMETHODCALLTYPE reload( 
212         /* [in] */ IUnknown *sender);
213     
214     virtual HRESULT STDMETHODCALLTYPE canGoBack( 
215         /* [in] */ IUnknown *sender,
216         /* [retval][out] */ BOOL *result);
217     
218     virtual HRESULT STDMETHODCALLTYPE goBack( 
219         /* [in] */ IUnknown *sender);
220     
221     virtual HRESULT STDMETHODCALLTYPE canGoForward( 
222         /* [in] */ IUnknown *sender,
223         /* [retval][out] */ BOOL *result);
224     
225     virtual HRESULT STDMETHODCALLTYPE goForward( 
226         /* [in] */ IUnknown *sender);
227     
228     virtual HRESULT STDMETHODCALLTYPE canMakeTextLarger( 
229         /* [in] */ IUnknown *sender,
230         /* [retval][out] */ BOOL *result);
231     
232     virtual HRESULT STDMETHODCALLTYPE makeTextLarger( 
233         /* [in] */ IUnknown *sender);
234     
235     virtual HRESULT STDMETHODCALLTYPE canMakeTextSmaller( 
236         /* [in] */ IUnknown *sender,
237         /* [retval][out] */ BOOL *result);
238     
239     virtual HRESULT STDMETHODCALLTYPE makeTextSmaller( 
240         /* [in] */ IUnknown *sender);
241
242     // IWebViewCSS
243
244     virtual HRESULT STDMETHODCALLTYPE computedStyleForElement( 
245         /* [in] */ IDOMElement *element,
246         /* [in] */ BSTR pseudoElement,
247         /* [retval][out] */ IDOMCSSStyleDeclaration **style);
248
249     // IWebViewEditing
250
251     virtual HRESULT STDMETHODCALLTYPE editableDOMRangeForPoint( 
252         /* [in] */ LPPOINT point,
253         /* [retval][out] */ IDOMRange **range);
254     
255     virtual HRESULT STDMETHODCALLTYPE setSelectedDOMRange( 
256         /* [in] */ IDOMRange *range,
257         /* [in] */ WebSelectionAffinity affinity);
258     
259     virtual HRESULT STDMETHODCALLTYPE selectedDOMRange( 
260         /* [retval][out] */ IDOMRange **range);
261     
262     virtual HRESULT STDMETHODCALLTYPE selectionAffinity( 
263         /* [retval][out][retval][out] */ WebSelectionAffinity *affinity);
264     
265     virtual HRESULT STDMETHODCALLTYPE setEditable( 
266         /* [in] */ BOOL flag);
267     
268     virtual HRESULT STDMETHODCALLTYPE isEditable( 
269         /* [retval][out] */ BOOL *isEditable);
270     
271     virtual HRESULT STDMETHODCALLTYPE setTypingStyle( 
272         /* [in] */ IDOMCSSStyleDeclaration *style);
273     
274     virtual HRESULT STDMETHODCALLTYPE typingStyle( 
275         /* [retval][out] */ IDOMCSSStyleDeclaration **style);
276     
277     virtual HRESULT STDMETHODCALLTYPE setSmartInsertDeleteEnabled( 
278         /* [in] */ BOOL flag);
279     
280     virtual HRESULT STDMETHODCALLTYPE smartInsertDeleteEnabled( 
281         /* [in] */ BOOL enabled);
282     
283     virtual HRESULT STDMETHODCALLTYPE setContinuousSpellCheckingEnabled( 
284         /* [in] */ BOOL flag);
285     
286     virtual HRESULT STDMETHODCALLTYPE isContinuousSpellCheckingEnabled( 
287         /* [retval][out] */ BOOL *enabled);
288     
289     virtual HRESULT STDMETHODCALLTYPE spellCheckerDocumentTag( 
290         /* [retval][out] */ int *tag);
291     
292     virtual HRESULT STDMETHODCALLTYPE undoManager( 
293         /* [retval][out] */ IWebUndoManager *manager);
294     
295     virtual HRESULT STDMETHODCALLTYPE setEditingDelegate( 
296         /* [in] */ IWebViewEditingDelegate *d);
297     
298     virtual HRESULT STDMETHODCALLTYPE editingDelegate( 
299         /* [retval][out] */ IWebViewEditingDelegate **d);
300     
301     virtual HRESULT STDMETHODCALLTYPE styleDeclarationWithText( 
302         /* [in] */ BSTR text,
303         /* [retval][out] */ IDOMCSSStyleDeclaration **style);
304
305     // IWebViewUndoableEditing
306
307     virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithNode( 
308         /* [in] */ IDOMNode *node);
309     
310     virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithText( 
311         /* [in] */ BSTR text);
312     
313     virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithMarkupString( 
314         /* [in] */ BSTR markupString);
315     
316     virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithArchive( 
317         /* [in] */ IWebArchive *archive);
318     
319     virtual HRESULT STDMETHODCALLTYPE deleteSelection( void);
320     
321     virtual HRESULT STDMETHODCALLTYPE applyStyle( 
322         /* [in] */ IDOMCSSStyleDeclaration *style);
323
324     // IWebViewEditingActions
325
326     virtual HRESULT STDMETHODCALLTYPE copy( 
327         /* [in] */ IUnknown *sender);
328     
329     virtual HRESULT STDMETHODCALLTYPE cut( 
330         /* [in] */ IUnknown *sender);
331     
332     virtual HRESULT STDMETHODCALLTYPE paste( 
333         /* [in] */ IUnknown *sender);
334     
335     virtual HRESULT STDMETHODCALLTYPE copyFont( 
336         /* [in] */ IUnknown *sender);
337     
338     virtual HRESULT STDMETHODCALLTYPE pasteFont( 
339         /* [in] */ IUnknown *sender);
340     
341     virtual HRESULT STDMETHODCALLTYPE delete_( 
342         /* [in] */ IUnknown *sender);
343     
344     virtual HRESULT STDMETHODCALLTYPE pasteAsPlainText( 
345         /* [in] */ IUnknown *sender);
346     
347     virtual HRESULT STDMETHODCALLTYPE pasteAsRichText( 
348         /* [in] */ IUnknown *sender);
349     
350     virtual HRESULT STDMETHODCALLTYPE changeFont( 
351         /* [in] */ IUnknown *sender);
352     
353     virtual HRESULT STDMETHODCALLTYPE changeAttributes( 
354         /* [in] */ IUnknown *sender);
355     
356     virtual HRESULT STDMETHODCALLTYPE changeDocumentBackgroundColor( 
357         /* [in] */ IUnknown *sender);
358     
359     virtual HRESULT STDMETHODCALLTYPE changeColor( 
360         /* [in] */ IUnknown *sender);
361     
362     virtual HRESULT STDMETHODCALLTYPE alignCenter( 
363         /* [in] */ IUnknown *sender);
364     
365     virtual HRESULT STDMETHODCALLTYPE alignJustified( 
366         /* [in] */ IUnknown *sender);
367     
368     virtual HRESULT STDMETHODCALLTYPE alignLeft( 
369         /* [in] */ IUnknown *sender);
370     
371     virtual HRESULT STDMETHODCALLTYPE alignRight( 
372         /* [in] */ IUnknown *sender);
373     
374     virtual HRESULT STDMETHODCALLTYPE checkSpelling( 
375         /* [in] */ IUnknown *sender);
376     
377     virtual HRESULT STDMETHODCALLTYPE showGuessPanel( 
378         /* [in] */ IUnknown *sender);
379     
380     virtual HRESULT STDMETHODCALLTYPE performFindPanelAction( 
381         /* [in] */ IUnknown *sender);
382     
383     virtual HRESULT STDMETHODCALLTYPE startSpeaking( 
384         /* [in] */ IUnknown *sender);
385     
386     virtual HRESULT STDMETHODCALLTYPE stopSpeaking( 
387         /* [in] */ IUnknown *sender);
388
389     // IWebViewExt
390     
391     virtual HRESULT STDMETHODCALLTYPE viewWindow( 
392         /* [retval][out] */ HWND *window);
393
394     // WebView
395
396     void mouseMoved(UINT, WPARAM, LPARAM);
397     void mouseDown(UINT, WPARAM, LPARAM);
398     void mouseUp(UINT, WPARAM, LPARAM);
399     void mouseDoubleClick(UINT, WPARAM, LPARAM);
400     bool keyPress(WPARAM, LPARAM);
401     HRESULT goToItem(IWebHistoryItem* item, WebFrameLoadType withLoadType);
402
403 protected:
404     ULONG m_refCount;
405     RECT m_frame;
406     BSTR m_frameName;
407     BSTR m_groupName;
408     HWND m_hostWindow;
409     HWND m_viewWindow;
410     WebFrame* m_mainFrame;
411     IWebFrameLoadDelegate* m_frameLoadDelegate;
412     IWebUIDelegate* m_uiDelegate;
413     IWebBackForwardList* m_backForwardList;
414 };
415
416 #endif