Clean up ChunkedUpdateDrawingAreaProxy
[WebKit-https.git] / WebKitTools / DumpRenderTree / win / UIDelegate.h
1 /*
2  * Copyright (C) 2005, 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  *
8  * 1.  Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer. 
10  * 2.  Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution. 
13  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14  *     its contributors may be used to endorse or promote products derived
15  *     from this software without specific prior written permission. 
16  *
17  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 #ifndef UIDelegate_h
30 #define UIDelegate_h
31
32 #include <WebCore/COMPtr.h>
33 #include <WebKit/WebKit.h>
34 #include <wtf/OwnPtr.h>
35 #include <windef.h>
36
37 class DRTUndoManager;
38 class DRTDesktopNotificationPresenter;
39
40 class UIDelegate : public IWebUIDelegate2, IWebUIDelegatePrivate3 {
41 public:
42     UIDelegate();
43
44     void resetUndoManager();
45
46     // IUnknown
47     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
48     virtual ULONG STDMETHODCALLTYPE AddRef(void);
49     virtual ULONG STDMETHODCALLTYPE Release(void);
50
51     // IWebUIDelegate
52     virtual HRESULT STDMETHODCALLTYPE createWebViewWithRequest( 
53         /* [in] */ IWebView *sender,
54         /* [in] */ IWebURLRequest *request,
55         /* [retval][out] */ IWebView **newWebView);
56
57     virtual HRESULT STDMETHODCALLTYPE webViewShow( 
58         /* [in] */ IWebView *sender) { return E_NOTIMPL; }
59
60     virtual HRESULT STDMETHODCALLTYPE webViewClose( 
61         /* [in] */ IWebView *sender);
62
63     virtual HRESULT STDMETHODCALLTYPE webViewFocus( 
64         /* [in] */ IWebView *sender);
65
66     virtual HRESULT STDMETHODCALLTYPE webViewUnfocus( 
67         /* [in] */ IWebView *sender);
68
69     virtual HRESULT STDMETHODCALLTYPE webViewFirstResponder( 
70         /* [in] */ IWebView *sender,
71         /* [retval][out] */ OLE_HANDLE *responder) { return E_NOTIMPL; }
72
73     virtual HRESULT STDMETHODCALLTYPE makeFirstResponder( 
74         /* [in] */ IWebView *sender,
75         /* [in] */ OLE_HANDLE responder) { return E_NOTIMPL; }
76
77     virtual HRESULT STDMETHODCALLTYPE setStatusText( 
78         /* [in] */ IWebView *sender,
79         /* [in] */ BSTR text);
80
81     virtual HRESULT STDMETHODCALLTYPE webViewStatusText( 
82         /* [in] */ IWebView *sender,
83         /* [retval][out] */ BSTR *text) { return E_NOTIMPL; }
84
85     virtual HRESULT STDMETHODCALLTYPE webViewAreToolbarsVisible( 
86         /* [in] */ IWebView *sender,
87         /* [retval][out] */ BOOL *visible) { return E_NOTIMPL; }
88
89     virtual HRESULT STDMETHODCALLTYPE setToolbarsVisible( 
90         /* [in] */ IWebView *sender,
91         /* [in] */ BOOL visible) { return E_NOTIMPL; }
92
93     virtual HRESULT STDMETHODCALLTYPE webViewIsStatusBarVisible( 
94         /* [in] */ IWebView *sender,
95         /* [retval][out] */ BOOL *visible) { return E_NOTIMPL; }
96
97     virtual HRESULT STDMETHODCALLTYPE setStatusBarVisible( 
98         /* [in] */ IWebView *sender,
99         /* [in] */ BOOL visible) { return E_NOTIMPL; }
100
101     virtual HRESULT STDMETHODCALLTYPE webViewIsResizable( 
102         /* [in] */ IWebView *sender,
103         /* [retval][out] */ BOOL *resizable) { return E_NOTIMPL; }
104
105     virtual HRESULT STDMETHODCALLTYPE setResizable( 
106         /* [in] */ IWebView *sender,
107         /* [in] */ BOOL resizable) { return E_NOTIMPL; }
108
109     virtual HRESULT STDMETHODCALLTYPE setFrame( 
110         /* [in] */ IWebView *sender,
111         /* [in] */ RECT *frame);
112
113     virtual HRESULT STDMETHODCALLTYPE webViewFrame( 
114         /* [in] */ IWebView *sender,
115         /* [retval][out] */ RECT *frame);
116
117     virtual HRESULT STDMETHODCALLTYPE setContentRect( 
118         /* [in] */ IWebView *sender,
119         /* [in] */ RECT *contentRect) { return E_NOTIMPL; }
120
121     virtual HRESULT STDMETHODCALLTYPE webViewContentRect( 
122         /* [in] */ IWebView *sender,
123         /* [retval][out] */ RECT *contentRect) { return E_NOTIMPL; }
124
125     virtual HRESULT STDMETHODCALLTYPE runJavaScriptAlertPanelWithMessage( 
126         /* [in] */ IWebView *sender,
127         /* [in] */ BSTR message);
128
129     virtual HRESULT STDMETHODCALLTYPE runJavaScriptConfirmPanelWithMessage( 
130         /* [in] */ IWebView *sender,
131         /* [in] */ BSTR message,
132         /* [retval][out] */ BOOL *result);
133
134     virtual HRESULT STDMETHODCALLTYPE runJavaScriptTextInputPanelWithPrompt( 
135         /* [in] */ IWebView *sender,
136         /* [in] */ BSTR message,
137         /* [in] */ BSTR defaultText,
138         /* [retval][out] */ BSTR *result);
139
140     virtual HRESULT STDMETHODCALLTYPE runBeforeUnloadConfirmPanelWithMessage( 
141         /* [in] */ IWebView *sender,
142         /* [in] */ BSTR message,
143         /* [in] */ IWebFrame *initiatedByFrame,
144         /* [retval][out] */ BOOL *result);
145
146     virtual HRESULT STDMETHODCALLTYPE runOpenPanelForFileButtonWithResultListener( 
147         /* [in] */ IWebView *sender,
148         /* [in] */ IWebOpenPanelResultListener *resultListener) { return E_NOTIMPL; }
149
150     virtual HRESULT STDMETHODCALLTYPE mouseDidMoveOverElement( 
151         /* [in] */ IWebView *sender,
152         /* [in] */ IPropertyBag *elementInformation,
153         /* [in] */ UINT modifierFlags) { return E_NOTIMPL; }
154
155     virtual HRESULT STDMETHODCALLTYPE contextMenuItemsForElement( 
156         /* [in] */ IWebView *sender,
157         /* [in] */ IPropertyBag *element,
158         /* [in] */ OLE_HANDLE defaultItems,
159         /* [retval][out] */ OLE_HANDLE *resultMenu) { return E_NOTIMPL; }
160
161     virtual HRESULT STDMETHODCALLTYPE validateUserInterfaceItem( 
162         /* [in] */ IWebView *webView,
163         /* [in] */ UINT itemCommandID,
164         /* [in] */ BOOL defaultValidation,
165         /* [retval][out] */ BOOL *isValid) { return E_NOTIMPL; }
166
167     virtual HRESULT STDMETHODCALLTYPE shouldPerformAction( 
168         /* [in] */ IWebView *webView,
169         /* [in] */ UINT itemCommandID,
170         /* [in] */ UINT sender) { return E_NOTIMPL; }
171
172     virtual HRESULT STDMETHODCALLTYPE dragDestinationActionMaskForDraggingInfo( 
173         /* [in] */ IWebView *webView,
174         /* [in] */ IDataObject *draggingInfo,
175         /* [retval][out] */ WebDragDestinationAction *action) { return E_NOTIMPL; }
176
177     virtual HRESULT STDMETHODCALLTYPE willPerformDragDestinationAction( 
178         /* [in] */ IWebView *webView,
179         /* [in] */ WebDragDestinationAction action,
180         /* [in] */ IDataObject *draggingInfo) { return E_NOTIMPL; }
181
182     virtual HRESULT STDMETHODCALLTYPE dragSourceActionMaskForPoint( 
183         /* [in] */ IWebView *webView,
184         /* [in] */ LPPOINT point,
185         /* [retval][out] */ WebDragSourceAction *action) { return E_NOTIMPL; }
186
187     virtual HRESULT STDMETHODCALLTYPE willPerformDragSourceAction( 
188         /* [in] */ IWebView *webView,
189         /* [in] */ WebDragSourceAction action,
190         /* [in] */ LPPOINT point,
191         /* [in] */ IDataObject *pasteboard,
192         /* [retval][out] */ IDataObject **newPasteboard) { return E_NOTIMPL; }
193
194     virtual HRESULT STDMETHODCALLTYPE contextMenuItemSelected( 
195         /* [in] */ IWebView *sender,
196         /* [in] */ void *item,
197         /* [in] */ IPropertyBag *element) { return E_NOTIMPL; } 
198         
199     virtual HRESULT STDMETHODCALLTYPE hasCustomMenuImplementation( 
200         /* [retval][out] */ BOOL *hasCustomMenus);
201     
202     virtual HRESULT STDMETHODCALLTYPE trackCustomPopupMenu( 
203         /* [in] */ IWebView *sender,
204         /* [in] */ OLE_HANDLE menu,
205         /* [in] */ LPPOINT point);
206        
207     virtual HRESULT STDMETHODCALLTYPE measureCustomMenuItem( 
208         /* [in] */ IWebView *sender,
209         /* [in] */ void *measureItem) { return E_NOTIMPL; }
210         
211     virtual HRESULT STDMETHODCALLTYPE drawCustomMenuItem( 
212         /* [in] */ IWebView *sender,
213         /* [in] */ void *drawItem) { return E_NOTIMPL; }
214
215     virtual HRESULT STDMETHODCALLTYPE addCustomMenuDrawingData( 
216         /* [in] */ IWebView *sender,
217         /* [in] */ OLE_HANDLE menu) { return E_NOTIMPL; }
218
219     virtual HRESULT STDMETHODCALLTYPE cleanUpCustomMenuDrawingData( 
220         /* [in] */ IWebView *sender,
221         /* [in] */ OLE_HANDLE menu) { return E_NOTIMPL; }
222
223     virtual HRESULT STDMETHODCALLTYPE canTakeFocus( 
224         /* [in] */ IWebView *sender,
225         /* [in] */ BOOL forward,
226         /* [out] */ BOOL *result) { return E_NOTIMPL; }
227         
228     virtual HRESULT STDMETHODCALLTYPE takeFocus( 
229         /* [in] */ IWebView *sender,
230         /* [in] */ BOOL forward) { return E_NOTIMPL; }
231     
232     virtual HRESULT STDMETHODCALLTYPE registerUndoWithTarget( 
233         /* [in] */ IWebUndoTarget *target,
234         /* [in] */ BSTR actionName,
235         /* [in] */ IUnknown *actionArg);
236     
237     virtual HRESULT STDMETHODCALLTYPE removeAllActionsWithTarget( 
238         /* [in] */ IWebUndoTarget *target);
239     
240     virtual HRESULT STDMETHODCALLTYPE setActionTitle( 
241         /* [in] */ BSTR actionTitle);
242     
243     virtual HRESULT STDMETHODCALLTYPE undo();
244     
245     virtual HRESULT STDMETHODCALLTYPE redo();
246     
247     virtual HRESULT STDMETHODCALLTYPE canUndo( 
248         /* [retval][out] */ BOOL *result);
249     
250     virtual HRESULT STDMETHODCALLTYPE canRedo( 
251         /* [retval][out] */ BOOL *result);
252
253     virtual HRESULT STDMETHODCALLTYPE printFrame( 
254         /* [in] */ IWebView *webView,
255         /* [in] */ IWebFrame *frame);
256     
257     virtual HRESULT STDMETHODCALLTYPE ftpDirectoryTemplatePath( 
258         /* [in] */ IWebView *webView,
259         /* [retval][out] */ BSTR *path);
260     
261     virtual HRESULT STDMETHODCALLTYPE webViewHeaderHeight( 
262         /* [in] */ IWebView *webView,
263         /* [retval][out] */ float *result);
264     
265     virtual HRESULT STDMETHODCALLTYPE webViewFooterHeight( 
266         /* [in] */ IWebView *webView,
267         /* [retval][out] */ float *result);
268     
269     virtual HRESULT STDMETHODCALLTYPE drawHeaderInRect( 
270         /* [in] */ IWebView *webView,
271         /* [in] */ RECT *rect,
272         /* [in] */ OLE_HANDLE drawingContext);
273     
274     virtual HRESULT STDMETHODCALLTYPE drawFooterInRect( 
275         /* [in] */ IWebView *webView,
276         /* [in] */ RECT *rect,
277         /* [in] */ OLE_HANDLE drawingContext,
278         /* [in] */ UINT pageIndex,
279         /* [in] */ UINT pageCount);
280     
281     virtual HRESULT STDMETHODCALLTYPE webViewPrintingMarginRect( 
282         /* [in] */ IWebView *webView,
283         /* [retval][out] */ RECT *rect);
284     
285     virtual HRESULT STDMETHODCALLTYPE canRunModal( 
286         /* [in] */ IWebView *webView,
287         /* [retval][out] */ BOOL *canRunBoolean);
288     
289     virtual HRESULT STDMETHODCALLTYPE createModalDialog( 
290         /* [in] */ IWebView *sender,
291         /* [in] */ IWebURLRequest *request,
292         /* [retval][out] */ IWebView **newWebView);
293     
294     virtual HRESULT STDMETHODCALLTYPE runModal( 
295         /* [in] */ IWebView *webView);
296     
297     virtual HRESULT STDMETHODCALLTYPE isMenuBarVisible( 
298         /* [in] */ IWebView *webView,
299         /* [retval][out] */ BOOL *visible);
300     
301     virtual HRESULT STDMETHODCALLTYPE setMenuBarVisible( 
302         /* [in] */ IWebView *webView,
303         /* [in] */ BOOL visible);
304     
305     virtual HRESULT STDMETHODCALLTYPE runDatabaseSizeLimitPrompt( 
306         /* [in] */ IWebView *webView,
307         /* [in] */ BSTR displayName,
308         /* [in] */ IWebFrame *initiatedByFrame,
309         /* [retval][out] */ BOOL *allowed);
310     
311     virtual HRESULT STDMETHODCALLTYPE paintCustomScrollbar( 
312         /* [in] */ IWebView *webView,
313         /* [in] */ HDC hDC,
314         /* [in] */ RECT rect,
315         /* [in] */ WebScrollBarControlSize size,
316         /* [in] */ WebScrollbarControlState state,
317         /* [in] */ WebScrollbarControlPart pressedPart,
318         /* [in] */ BOOL vertical,
319         /* [in] */ float value,
320         /* [in] */ float proportion,
321         /* [in] */ WebScrollbarControlPartMask parts);
322     
323     virtual HRESULT STDMETHODCALLTYPE paintCustomScrollCorner( 
324         /* [in] */ IWebView *webView,
325         /* [in] */ HDC hDC,
326         /* [in] */ RECT rect);
327
328     virtual HRESULT STDMETHODCALLTYPE createWebViewWithRequest(IWebView* sender, IWebURLRequest* request, IPropertyBag* windowFeatures, IWebView** newWebView);
329
330     virtual HRESULT STDMETHODCALLTYPE drawBackground(IWebView* sender, OLE_HANDLE hdc, const RECT* dirtyRect);
331
332     virtual HRESULT STDMETHODCALLTYPE decidePolicyForGeolocationRequest(IWebView* sender, IWebFrame* frame, IWebSecurityOrigin* origin, IWebGeolocationPolicyListener* listener);
333
334     virtual HRESULT STDMETHODCALLTYPE didPressMissingPluginButton(IDOMElement*);
335
336 protected:
337     // IWebUIDelegatePrivate
338
339     virtual HRESULT STDMETHODCALLTYPE unused1() { return E_NOTIMPL; }
340
341     virtual HRESULT STDMETHODCALLTYPE unused2() { return E_NOTIMPL; }
342     
343     virtual HRESULT STDMETHODCALLTYPE unused3() { return E_NOTIMPL; }
344     
345     virtual HRESULT STDMETHODCALLTYPE webViewScrolled( 
346         /* [in] */ IWebView *sender) { return E_NOTIMPL; }
347     
348     virtual HRESULT STDMETHODCALLTYPE webViewAddMessageToConsole( 
349         /* [in] */ IWebView *sender,
350         /* [in] */ BSTR message,
351         /* [in] */ int lineNumber,
352         /* [in] */ BSTR url,
353         /* [in] */ BOOL isError);
354     
355     virtual HRESULT STDMETHODCALLTYPE webViewShouldInterruptJavaScript( 
356         /* [in] */ IWebView *sender,
357         /* [retval][out] */ BOOL *result) { return E_NOTIMPL; }
358     
359     virtual HRESULT STDMETHODCALLTYPE webViewReceivedFocus( 
360         /* [in] */ IWebView *sender) { return E_NOTIMPL; }
361     
362     virtual HRESULT STDMETHODCALLTYPE webViewLostFocus( 
363         /* [in] */ IWebView *sender,
364         /* [in] */ OLE_HANDLE loseFocusTo) { return E_NOTIMPL; }
365
366     virtual HRESULT STDMETHODCALLTYPE doDragDrop( 
367         /* [in] */ IWebView *sender,
368         /* [in] */ IDataObject *dataObject,
369         /* [in] */ IDropSource *dropSource,
370         /* [in] */ DWORD okEffect,
371         /* [retval][out] */ DWORD *performedEffect);
372
373     virtual HRESULT STDMETHODCALLTYPE webViewGetDlgCode( 
374         /* [in] */ IWebView *sender,
375         /* [in] */ UINT keyCode,
376         /* [retval][out] */ LONG_PTR *code);
377
378     virtual HRESULT STDMETHODCALLTYPE webViewPainted( 
379         /* [in] */ IWebView *sender);
380
381     virtual HRESULT STDMETHODCALLTYPE exceededDatabaseQuota( 
382         /* [in] */ IWebView *sender,
383         /* [in] */ IWebFrame *frame,
384         /* [in] */ IWebSecurityOrigin *origin,
385         /* [in] */ BSTR databaseIdentifier);
386
387     virtual HRESULT STDMETHODCALLTYPE embeddedViewWithArguments( 
388         /* [in] */ IWebView *sender,
389         /* [in] */ IWebFrame *frame,
390         /* [in] */ IPropertyBag *arguments,
391         /* [retval][out] */ IWebEmbeddedView **view);
392         
393     virtual HRESULT STDMETHODCALLTYPE webViewClosing( 
394         /* [in] */ IWebView *sender);
395     
396     virtual HRESULT STDMETHODCALLTYPE webViewSetCursor( 
397         /* [in] */ IWebView *sender,
398         /* [in] */ OLE_HANDLE cursor);
399     
400     virtual HRESULT STDMETHODCALLTYPE webViewDidInvalidate( 
401         /* [in] */ IWebView *sender);
402
403     virtual HRESULT STDMETHODCALLTYPE desktopNotificationsDelegate(
404         /* [out] */ IWebDesktopNotificationsDelegate** result);
405
406     ULONG                   m_refCount;
407
408 private:
409     RECT m_frame;
410     OwnPtr<DRTUndoManager> m_undoManager;
411
412     COMPtr<IWebDesktopNotificationsDelegate> m_desktopNotifications;
413 };
414
415 #endif