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