5f81c32360662d2e5ce599bf42a6c22218bad276
[WebKit-https.git] / Tools / DumpRenderTree / chromium / TestRunner / public / WebTestProxy.h
1 /*
2  * Copyright (C) 2012 Google 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 are
6  * met:
7  *
8  *     * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *     * Redistributions in binary form must reproduce the above
11  * copyright notice, this list of conditions and the following disclaimer
12  * in the documentation and/or other materials provided with the
13  * distribution.
14  *     * Neither the name of Google Inc. nor the names of its
15  * contributors may be used to endorse or promote products derived from
16  * this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #ifndef WebTestProxy_h
32 #define WebTestProxy_h
33
34 #include "Platform/chromium/public/WebRect.h"
35 #include "Platform/chromium/public/WebURLError.h"
36 #include "WebKit/chromium/public/WebAccessibilityNotification.h"
37 #include "WebKit/chromium/public/WebDOMMessageEvent.h"
38 #include "WebKit/chromium/public/WebDragOperation.h"
39 #include "WebKit/chromium/public/WebEditingAction.h"
40 #include "WebKit/chromium/public/WebNavigationPolicy.h"
41 #include "WebKit/chromium/public/WebNavigationType.h"
42 #include "WebKit/chromium/public/WebSecurityOrigin.h"
43 #include "WebKit/chromium/public/WebTextAffinity.h"
44 #include "WebKit/chromium/public/WebTextDirection.h"
45 #include "WebTestCommon.h"
46 #include <map>
47 #include <memory>
48 #include <string>
49
50 namespace WebKit {
51 class WebAccessibilityObject;
52 class WebCachedURLRequest;
53 class WebDataSource;
54 class WebDragData;
55 class WebFrame;
56 class WebImage;
57 class WebNode;
58 class WebNotificationPresenter;
59 class WebPlugin;
60 class WebRange;
61 class WebSerializedScriptValue;
62 class WebSpellCheckClient;
63 class WebString;
64 class WebURL;
65 class WebURLRequest;
66 class WebURLResponse;
67 class WebUserMediaClient;
68 class WebView;
69 struct WebConsoleMessage;
70 struct WebContextMenuData;
71 struct WebPluginParams;
72 struct WebPoint;
73 struct WebSize;
74 struct WebWindowFeatures;
75 }
76
77 class SkCanvas;
78
79 namespace WebTestRunner {
80
81 class SpellCheckClient;
82 class TestInterfaces;
83 class WebTestDelegate;
84 class WebTestInterfaces;
85 class WebTestRunner;
86 class WebUserMediaClientMock;
87
88 class WEBTESTRUNNER_EXPORT WebTestProxyBase {
89 public:
90     void setInterfaces(WebTestInterfaces*);
91     void setDelegate(WebTestDelegate*);
92
93     void reset();
94
95     WebKit::WebSpellCheckClient *spellCheckClient() const;
96
97     std::string captureTree(bool debugRenderTree);
98     SkCanvas* capturePixels();
99
100     void setLogConsoleOutput(bool enabled);
101
102     void display();
103     void displayInvalidatedRegion();
104     void discardBackingStore();
105
106 protected:
107     WebTestProxyBase();
108     ~WebTestProxyBase();
109
110     void didInvalidateRect(const WebKit::WebRect&);
111     void didScrollRect(int, int, const WebKit::WebRect&);
112     void scheduleComposite();
113     void scheduleAnimation();
114     void setWindowRect(const WebKit::WebRect&);
115     void show(WebKit::WebNavigationPolicy);
116     void didAutoResize(const WebKit::WebSize&);
117     void postAccessibilityNotification(const WebKit::WebAccessibilityObject&, WebKit::WebAccessibilityNotification);
118     void startDragging(WebKit::WebFrame*, const WebKit::WebDragData&, WebKit::WebDragOperationsMask, const WebKit::WebImage&, const WebKit::WebPoint&);
119     bool shouldBeginEditing(const WebKit::WebRange&);
120     bool shouldEndEditing(const WebKit::WebRange&);
121     bool shouldInsertNode(const WebKit::WebNode&, const WebKit::WebRange&, WebKit::WebEditingAction);
122     bool shouldInsertText(const WebKit::WebString& text, const WebKit::WebRange&, WebKit::WebEditingAction);
123     bool shouldChangeSelectedRange(const WebKit::WebRange& fromRange, const WebKit::WebRange& toRange, WebKit::WebTextAffinity, bool stillSelecting);
124     bool shouldDeleteRange(const WebKit::WebRange&);
125     bool shouldApplyStyle(const WebKit::WebString& style, const WebKit::WebRange&);
126     void didBeginEditing();
127     void didChangeSelection(bool isEmptySelection);
128     void didChangeContents();
129     void didEndEditing();
130     bool createView(WebKit::WebFrame* creator, const WebKit::WebURLRequest&, const WebKit::WebWindowFeatures&, const WebKit::WebString& frameName, WebKit::WebNavigationPolicy);
131     WebKit::WebPlugin* createPlugin(WebKit::WebFrame*, const WebKit::WebPluginParams&);
132     void setStatusText(const WebKit::WebString&);
133     void didStopLoading();
134     bool isSmartInsertDeleteEnabled();
135     bool isSelectTrailingWhitespaceEnabled();
136     void showContextMenu(WebKit::WebFrame*, const WebKit::WebContextMenuData&);
137     WebKit::WebUserMediaClient* userMediaClient();
138     void printPage(WebKit::WebFrame*);
139     WebKit::WebNotificationPresenter* notificationPresenter();
140
141     void willPerformClientRedirect(WebKit::WebFrame*, const WebKit::WebURL& from, const WebKit::WebURL& to, double interval, double fire_time);
142     void didCancelClientRedirect(WebKit::WebFrame*);
143     void didStartProvisionalLoad(WebKit::WebFrame*);
144     void didReceiveServerRedirectForProvisionalLoad(WebKit::WebFrame*);
145     void didFailProvisionalLoad(WebKit::WebFrame*, const WebKit::WebURLError&);
146     void didCommitProvisionalLoad(WebKit::WebFrame*, bool isNewNavigation);
147     void didReceiveTitle(WebKit::WebFrame*, const WebKit::WebString& title, WebKit::WebTextDirection);
148     void didFinishDocumentLoad(WebKit::WebFrame*);
149     void didHandleOnloadEvents(WebKit::WebFrame*);
150     void didFailLoad(WebKit::WebFrame*, const WebKit::WebURLError&);
151     void didFinishLoad(WebKit::WebFrame*);
152     void didChangeLocationWithinPage(WebKit::WebFrame*);
153     void didDisplayInsecureContent(WebKit::WebFrame*);
154     void didRunInsecureContent(WebKit::WebFrame*, const WebKit::WebSecurityOrigin&, const WebKit::WebURL& insecureURL);
155     void didDetectXSS(WebKit::WebFrame*, const WebKit::WebURL& insecureURL, bool didBlockEntirePage);
156     void assignIdentifierToRequest(WebKit::WebFrame*, unsigned identifier, const WebKit::WebURLRequest&);
157     void willRequestResource(WebKit::WebFrame*, const WebKit::WebCachedURLRequest&);
158     bool canHandleRequest(WebKit::WebFrame*, const WebKit::WebURLRequest&);
159     WebKit::WebURLError cannotHandleRequestError(WebKit::WebFrame*, const WebKit::WebURLRequest&);
160     void didCreateDataSource(WebKit::WebFrame*, WebKit::WebDataSource*);
161     void willSendRequest(WebKit::WebFrame*, unsigned identifier, WebKit::WebURLRequest&, const WebKit::WebURLResponse& redirectResponse);
162     void didReceiveResponse(WebKit::WebFrame*, unsigned identifier, const WebKit::WebURLResponse&);
163     void didFinishResourceLoad(WebKit::WebFrame*, unsigned identifier);
164     void didFailResourceLoad(WebKit::WebFrame*, unsigned identifier, const WebKit::WebURLError&);
165     void unableToImplementPolicyWithError(WebKit::WebFrame*, const WebKit::WebURLError&);
166     void didAddMessageToConsole(const WebKit::WebConsoleMessage&, const WebKit::WebString& sourceName, unsigned sourceLine);
167     void runModalAlertDialog(WebKit::WebFrame*, const WebKit::WebString&);
168     bool runModalConfirmDialog(WebKit::WebFrame*, const WebKit::WebString&);
169     bool runModalPromptDialog(WebKit::WebFrame*, const WebKit::WebString& message, const WebKit::WebString& defaultValue, WebKit::WebString* actualValue);
170     bool runModalBeforeUnloadDialog(WebKit::WebFrame*, const WebKit::WebString&);
171     WebKit::WebNavigationPolicy decidePolicyForNavigation(WebKit::WebFrame*, const WebKit::WebURLRequest&, WebKit::WebNavigationType, const WebKit::WebNode& originatingNode, WebKit::WebNavigationPolicy defaultPolicy, bool isRedirect);
172     bool willCheckAndDispatchMessageEvent(WebKit::WebFrame* sourceFrame, WebKit::WebFrame* targetFrame, WebKit::WebSecurityOrigin target, WebKit::WebDOMMessageEvent);
173
174 private:
175     void locationChangeDone(WebKit::WebFrame*);
176     void paintRect(const WebKit::WebRect&);
177     void paintInvalidatedRegion();
178     void paintPagesWithBoundaries();
179     SkCanvas* canvas();
180     void displayRepaintMask();
181
182     TestInterfaces* m_testInterfaces;
183     WebTestDelegate* m_delegate;
184
185     std::auto_ptr<SpellCheckClient> m_spellcheck;
186     std::auto_ptr<WebUserMediaClientMock> m_userMediaClient;
187
188     // Painting.
189     std::auto_ptr<SkCanvas> m_canvas;
190     WebKit::WebRect m_paintRect;
191     bool m_isPainting;
192     std::map<unsigned, std::string> m_resourceIdentifierMap;
193
194     bool m_logConsoleOutput;
195 private:
196     WebTestProxyBase(WebTestProxyBase&);
197     WebTestProxyBase& operator=(const WebTestProxyBase&);
198 };
199
200 // Use this template to inject methods into your WebViewClient/WebFrameClient
201 // implementation required for the running layout tests.
202 template<class Base, typename T>
203 class WebTestProxy : public Base, public WebTestProxyBase {
204 public:
205     explicit WebTestProxy(T t)
206         : Base(t)
207     {
208     }
209
210     virtual ~WebTestProxy() { }
211
212     // WebViewClient implementation.
213     virtual void didInvalidateRect(const WebKit::WebRect& rect)
214     {
215         WebTestProxyBase::didInvalidateRect(rect);
216         Base::didInvalidateRect(rect);
217     }
218     virtual void didScrollRect(int dx, int dy, const WebKit::WebRect& clipRect)
219     {
220         WebTestProxyBase::didScrollRect(dx, dy, clipRect);
221         Base::didScrollRect(dx, dy, clipRect);
222     }
223     virtual void scheduleComposite()
224     {
225         WebTestProxyBase::scheduleComposite();
226         Base::scheduleComposite();
227     }
228     virtual void scheduleAnimation()
229     {
230         WebTestProxyBase::scheduleAnimation();
231         Base::scheduleAnimation();
232     }
233     virtual void setWindowRect(const WebKit::WebRect& rect)
234     {
235         WebTestProxyBase::setWindowRect(rect);
236         Base::setWindowRect(rect);
237     }
238     virtual void show(WebKit::WebNavigationPolicy policy)
239     {
240         WebTestProxyBase::show(policy);
241         Base::show(policy);
242     }
243     virtual void didAutoResize(const WebKit::WebSize& newSize)
244     {
245         WebTestProxyBase::didAutoResize(newSize);
246         Base::didAutoResize(newSize);
247     }
248     virtual void postAccessibilityNotification(const WebKit::WebAccessibilityObject& object, WebKit::WebAccessibilityNotification notification)
249     {
250         WebTestProxyBase::postAccessibilityNotification(object, notification);
251         Base::postAccessibilityNotification(object, notification);
252     }
253     virtual void startDragging(WebKit::WebFrame* frame, const WebKit::WebDragData& data, WebKit::WebDragOperationsMask mask, const WebKit::WebImage& image, const WebKit::WebPoint& point)
254     {
255         WebTestProxyBase::startDragging(frame, data, mask, image, point);
256         Base::startDragging(frame, data, mask, image, point);
257     }
258     virtual bool shouldBeginEditing(const WebKit::WebRange& range)
259     {
260         WebTestProxyBase::shouldBeginEditing(range);
261         return Base::shouldBeginEditing(range);
262     }
263     virtual bool shouldEndEditing(const WebKit::WebRange& range)
264     {
265         WebTestProxyBase::shouldEndEditing(range);
266         return Base::shouldEndEditing(range);
267     }
268     virtual bool shouldInsertNode(const WebKit::WebNode& node, const WebKit::WebRange& range, WebKit::WebEditingAction action)
269     {
270         WebTestProxyBase::shouldInsertNode(node, range, action);
271         return Base::shouldInsertNode(node, range, action);
272     }
273     virtual bool shouldInsertText(const WebKit::WebString& text, const WebKit::WebRange& range, WebKit::WebEditingAction action)
274     {
275         WebTestProxyBase::shouldInsertText(text, range, action);
276         return Base::shouldInsertText(text, range, action);
277     }
278     virtual bool shouldChangeSelectedRange(const WebKit::WebRange& fromRange, const WebKit::WebRange& toRange, WebKit::WebTextAffinity affinity, bool stillSelecting)
279     {
280         WebTestProxyBase::shouldChangeSelectedRange(fromRange, toRange, affinity, stillSelecting);
281         return Base::shouldChangeSelectedRange(fromRange, toRange, affinity, stillSelecting);
282     }
283     virtual bool shouldDeleteRange(const WebKit::WebRange& range)
284     {
285         WebTestProxyBase::shouldDeleteRange(range);
286         return Base::shouldDeleteRange(range);
287     }
288     virtual bool shouldApplyStyle(const WebKit::WebString& style, const WebKit::WebRange& range)
289     {
290         WebTestProxyBase::shouldApplyStyle(style, range);
291         return Base::shouldApplyStyle(style, range);
292     }
293     virtual void didBeginEditing()
294     {
295         WebTestProxyBase::didBeginEditing();
296         Base::didBeginEditing();
297     }
298     virtual void didChangeSelection(bool isEmptySelection)
299     {
300         WebTestProxyBase::didChangeSelection(isEmptySelection);
301         Base::didChangeSelection(isEmptySelection);
302     }
303     virtual void didChangeContents()
304     {
305         WebTestProxyBase::didChangeContents();
306         Base::didChangeContents();
307     }
308     virtual void didEndEditing()
309     {
310         WebTestProxyBase::didEndEditing();
311         Base::didEndEditing();
312     }
313     virtual WebKit::WebView* createView(WebKit::WebFrame* creator, const WebKit::WebURLRequest& request, const WebKit::WebWindowFeatures& features, const WebKit::WebString& frameName, WebKit::WebNavigationPolicy policy)
314     {
315         if (!WebTestProxyBase::createView(creator, request, features, frameName, policy))
316             return 0;
317         return Base::createView(creator, request, features, frameName, policy);
318     }
319     WebKit::WebPlugin* createPlugin(WebKit::WebFrame* frame, const WebKit::WebPluginParams& params)
320     {
321         WebKit::WebPlugin* plugin = WebTestProxyBase::createPlugin(frame, params);
322         if (plugin)
323             return plugin;
324         return Base::createPlugin(frame, params);
325     }
326     virtual void setStatusText(const WebKit::WebString& text)
327     {
328         WebTestProxyBase::setStatusText(text);
329         Base::setStatusText(text);
330     }
331     virtual void didStopLoading()
332     {
333         WebTestProxyBase::didStopLoading();
334         Base::didStopLoading();
335     }
336     virtual bool isSmartInsertDeleteEnabled()
337     {
338         return WebTestProxyBase::isSmartInsertDeleteEnabled();
339     }
340     virtual bool isSelectTrailingWhitespaceEnabled()
341     {
342         return WebTestProxyBase::isSelectTrailingWhitespaceEnabled();
343     }
344     virtual void showContextMenu(WebKit::WebFrame* frame, const WebKit::WebContextMenuData& contextMenuData)
345     {
346         WebTestProxyBase::showContextMenu(frame, contextMenuData);
347         Base::showContextMenu(frame, contextMenuData);
348     }
349     virtual WebKit::WebUserMediaClient* userMediaClient()
350     {
351         return WebTestProxyBase::userMediaClient();
352     }
353     virtual void printPage(WebKit::WebFrame* frame)
354     {
355         WebTestProxyBase::printPage(frame);
356     }
357     virtual WebKit::WebNotificationPresenter* notificationPresenter()
358     {
359         return WebTestProxyBase::notificationPresenter();
360     }
361
362     // WebFrameClient implementation.
363     virtual void willPerformClientRedirect(WebKit::WebFrame* frame, const WebKit::WebURL& from, const WebKit::WebURL& to, double interval, double fireTime)
364     {
365         WebTestProxyBase::willPerformClientRedirect(frame, from, to, interval, fireTime);
366         Base::willPerformClientRedirect(frame, from, to, interval, fireTime);
367     }
368     virtual void didCancelClientRedirect(WebKit::WebFrame* frame)
369     {
370         WebTestProxyBase::didCancelClientRedirect(frame);
371         Base::didCancelClientRedirect(frame);
372     }
373     virtual void didStartProvisionalLoad(WebKit::WebFrame* frame)
374     {
375         WebTestProxyBase::didStartProvisionalLoad(frame);
376         Base::didStartProvisionalLoad(frame);
377     }
378     virtual void didReceiveServerRedirectForProvisionalLoad(WebKit::WebFrame* frame)
379     {
380         WebTestProxyBase::didReceiveServerRedirectForProvisionalLoad(frame);
381         Base::didReceiveServerRedirectForProvisionalLoad(frame);
382     }
383     virtual void didFailProvisionalLoad(WebKit::WebFrame* frame, const WebKit::WebURLError& error)
384     {
385         WebTestProxyBase::didFailProvisionalLoad(frame, error);
386         Base::didFailProvisionalLoad(frame, error);
387     }
388     virtual void didCommitProvisionalLoad(WebKit::WebFrame* frame, bool isNewNavigation)
389     {
390         WebTestProxyBase::didCommitProvisionalLoad(frame, isNewNavigation);
391         Base::didCommitProvisionalLoad(frame, isNewNavigation);
392     }
393     virtual void didReceiveTitle(WebKit::WebFrame* frame, const WebKit::WebString& title, WebKit::WebTextDirection direction)
394     {
395         WebTestProxyBase::didReceiveTitle(frame, title, direction);
396         Base::didReceiveTitle(frame, title, direction);
397     }
398     virtual void didFinishDocumentLoad(WebKit::WebFrame* frame)
399     {
400         WebTestProxyBase::didFinishDocumentLoad(frame);
401         Base::didFinishDocumentLoad(frame);
402     }
403     virtual void didHandleOnloadEvents(WebKit::WebFrame* frame)
404     {
405         WebTestProxyBase::didHandleOnloadEvents(frame);
406         Base::didHandleOnloadEvents(frame);
407     }
408     virtual void didFailLoad(WebKit::WebFrame* frame, const WebKit::WebURLError& error)
409     {
410         WebTestProxyBase::didFailLoad(frame, error);
411         Base::didFailLoad(frame, error);
412     }
413     virtual void didFinishLoad(WebKit::WebFrame* frame)
414     {
415         WebTestProxyBase::didFinishLoad(frame);
416         Base::didFinishLoad(frame);
417     }
418     virtual void didChangeLocationWithinPage(WebKit::WebFrame* frame)
419     {
420         WebTestProxyBase::didChangeLocationWithinPage(frame);
421         Base::didChangeLocationWithinPage(frame);
422     }
423     virtual void didDisplayInsecureContent(WebKit::WebFrame* frame)
424     {
425         WebTestProxyBase::didDisplayInsecureContent(frame);
426         Base::didDisplayInsecureContent(frame);
427     }
428     virtual void didRunInsecureContent(WebKit::WebFrame* frame, const WebKit::WebSecurityOrigin& origin, const WebKit::WebURL& insecureURL)
429     {
430         WebTestProxyBase::didRunInsecureContent(frame, origin, insecureURL);
431         Base::didRunInsecureContent(frame, origin, insecureURL);
432     }
433     virtual void didDetectXSS(WebKit::WebFrame* frame, const WebKit::WebURL& insecureURL, bool didBlockEntirePage)
434     {
435         WebTestProxyBase::didDetectXSS(frame, insecureURL, didBlockEntirePage);
436         Base::didDetectXSS(frame, insecureURL, didBlockEntirePage);
437     }
438     virtual void assignIdentifierToRequest(WebKit::WebFrame* frame, unsigned identifier, const WebKit::WebURLRequest& request)
439     {
440         WebTestProxyBase::assignIdentifierToRequest(frame, identifier, request);
441         Base::assignIdentifierToRequest(frame, identifier, request);
442     }
443     virtual void willRequestResource(WebKit::WebFrame* frame, const WebKit::WebCachedURLRequest& request)
444     {
445         WebTestProxyBase::willRequestResource(frame, request);
446         Base::willRequestResource(frame, request);
447     }
448     virtual bool canHandleRequest(WebKit::WebFrame* frame, const WebKit::WebURLRequest& request)
449     {
450         if (!WebTestProxyBase::canHandleRequest(frame, request))
451             return false;
452         return Base::canHandleRequest(frame, request);
453     }
454     virtual WebKit::WebURLError cannotHandleRequestError(WebKit::WebFrame* frame, const WebKit::WebURLRequest& request)
455     {
456         return WebTestProxyBase::cannotHandleRequestError(frame, request);
457     }
458     virtual void didCreateDataSource(WebKit::WebFrame* frame, WebKit::WebDataSource* ds)
459     {
460         WebTestProxyBase::didCreateDataSource(frame, ds);
461         Base::didCreateDataSource(frame, ds);
462     }
463     virtual void willSendRequest(WebKit::WebFrame* frame, unsigned identifier, WebKit::WebURLRequest& request, const WebKit::WebURLResponse& redirectResponse)
464     {
465         WebTestProxyBase::willSendRequest(frame, identifier, request, redirectResponse);
466         Base::willSendRequest(frame, identifier, request, redirectResponse);
467     }
468     virtual void didReceiveResponse(WebKit::WebFrame* frame, unsigned identifier, const WebKit::WebURLResponse& response)
469     {
470         WebTestProxyBase::didReceiveResponse(frame, identifier, response);
471         Base::didReceiveResponse(frame, identifier, response);
472     }
473     virtual void didFinishResourceLoad(WebKit::WebFrame* frame, unsigned identifier)
474     {
475         WebTestProxyBase::didFinishResourceLoad(frame, identifier);
476         Base::didFinishResourceLoad(frame, identifier);
477     }
478     virtual void didFailResourceLoad(WebKit::WebFrame* frame, unsigned identifier, const WebKit::WebURLError& error)
479     {
480         WebTestProxyBase::didFailResourceLoad(frame, identifier, error);
481         Base::didFailResourceLoad(frame, identifier, error);
482     }
483     virtual void unableToImplementPolicyWithError(WebKit::WebFrame* frame, const WebKit::WebURLError& error)
484     {
485         WebTestProxyBase::unableToImplementPolicyWithError(frame, error);
486         Base::unableToImplementPolicyWithError(frame, error);
487     }
488     virtual void didAddMessageToConsole(const WebKit::WebConsoleMessage& message, const WebKit::WebString& sourceName, unsigned sourceLine)
489     {
490         WebTestProxyBase::didAddMessageToConsole(message, sourceName, sourceLine);
491         Base::didAddMessageToConsole(message, sourceName, sourceLine);
492     }
493     virtual void runModalAlertDialog(WebKit::WebFrame* frame, const WebKit::WebString& message)
494     {
495         WebTestProxyBase::runModalAlertDialog(frame, message);
496         Base::runModalAlertDialog(frame, message);
497     }
498     virtual bool runModalConfirmDialog(WebKit::WebFrame* frame, const WebKit::WebString& message)
499     {
500         WebTestProxyBase::runModalConfirmDialog(frame, message);
501         return Base::runModalConfirmDialog(frame, message);
502     }
503     virtual bool runModalPromptDialog(WebKit::WebFrame* frame, const WebKit::WebString& message, const WebKit::WebString& defaultValue, WebKit::WebString* actualValue)
504     {
505         WebTestProxyBase::runModalPromptDialog(frame, message, defaultValue, actualValue);
506         return Base::runModalPromptDialog(frame, message, defaultValue, actualValue);
507     }
508     virtual bool runModalBeforeUnloadDialog(WebKit::WebFrame* frame, const WebKit::WebString& message)
509     {
510         return WebTestProxyBase::runModalBeforeUnloadDialog(frame, message);
511     }
512     virtual WebKit::WebNavigationPolicy decidePolicyForNavigation(WebKit::WebFrame* frame, const WebKit::WebURLRequest& request, WebKit::WebNavigationType type, const WebKit::WebNode& originatingNode, WebKit::WebNavigationPolicy defaultPolicy, bool isRedirect)
513     {
514         WebKit::WebNavigationPolicy policy = WebTestProxyBase::decidePolicyForNavigation(frame, request, type, originatingNode, defaultPolicy, isRedirect);
515         if (policy == WebKit::WebNavigationPolicyIgnore)
516             return policy;
517         return Base::decidePolicyForNavigation(frame, request, type, originatingNode, defaultPolicy, isRedirect);
518     }
519     virtual bool willCheckAndDispatchMessageEvent(WebKit::WebFrame* sourceFrame, WebKit::WebFrame* targetFrame, WebKit::WebSecurityOrigin target, WebKit::WebDOMMessageEvent event)
520     {
521         if (WebTestProxyBase::willCheckAndDispatchMessageEvent(sourceFrame, targetFrame, target, event))
522             return true;
523         return Base::willCheckAndDispatchMessageEvent(sourceFrame, targetFrame, target, event);
524     }
525 };
526
527 }
528
529 #endif // WebTestProxy_h