• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "WebScopedPtr.h"
35 #include "WebTask.h"
36 #include "WebTestCommon.h"
37 #include "public/platform/WebNonCopyable.h"
38 #include "public/platform/WebRect.h"
39 #include "public/platform/WebURLError.h"
40 #include "public/platform/WebURLRequest.h"
41 #include "public/web/WebAXEnums.h"
42 #include "public/web/WebDOMMessageEvent.h"
43 #include "public/web/WebDataSource.h"
44 #include "public/web/WebDragOperation.h"
45 #include "public/web/WebIconURL.h"
46 #include "public/web/WebNavigationPolicy.h"
47 #include "public/web/WebNavigationType.h"
48 #include "public/web/WebSecurityOrigin.h"
49 #include "public/web/WebTextAffinity.h"
50 #include "public/web/WebTextDirection.h"
51 #include <map>
52 #include <string>
53 
54 namespace blink {
55 class WebAXObject;
56 class WebAudioDevice;
57 class WebCachedURLRequest;
58 class WebColorChooser;
59 class WebColorChooserClient;
60 class WebDataSource;
61 class WebDragData;
62 class WebFileChooserCompletion;
63 class WebFrame;
64 class WebGeolocationClient;
65 class WebGeolocationClientMock;
66 class WebImage;
67 class WebMIDIAccessor;
68 class WebMIDIAccessorClient;
69 class WebMIDIClient;
70 class WebMIDIClientMock;
71 class WebNode;
72 class WebNotificationPresenter;
73 class WebPlugin;
74 class WebRange;
75 class WebSerializedScriptValue;
76 class WebSpeechInputController;
77 class WebSpeechInputListener;
78 class WebSpeechRecognizer;
79 class WebSpellCheckClient;
80 class WebString;
81 class WebURL;
82 class WebURLResponse;
83 class WebUserMediaClient;
84 class WebValidationMessageClient;
85 class WebView;
86 class WebWidget;
87 struct WebColorSuggestion;
88 struct WebConsoleMessage;
89 struct WebContextMenuData;
90 struct WebFileChooserParams;
91 struct WebPluginParams;
92 struct WebPoint;
93 struct WebSize;
94 struct WebWindowFeatures;
95 typedef unsigned WebColor;
96 }
97 
98 class SkCanvas;
99 
100 namespace WebTestRunner {
101 
102 class MockWebSpeechInputController;
103 class MockWebSpeechRecognizer;
104 class MockWebValidationMessageClient;
105 class SpellCheckClient;
106 class TestInterfaces;
107 class WebTestDelegate;
108 class WebTestInterfaces;
109 class WebTestRunner;
110 class WebUserMediaClientMock;
111 
112 class WEBTESTRUNNER_EXPORT WebTestProxyBase {
113 public:
114     void setInterfaces(WebTestInterfaces*);
115     void setDelegate(WebTestDelegate*);
116     void setWidget(blink::WebWidget*);
117 
118     void reset();
119 
120     blink::WebSpellCheckClient *spellCheckClient() const;
121     blink::WebValidationMessageClient* validationMessageClient();
122     blink::WebColorChooser* createColorChooser(blink::WebColorChooserClient*, const blink::WebColor&);
123     blink::WebColorChooser* createColorChooser(blink::WebColorChooserClient*, const blink::WebColor&, const blink::WebVector<blink::WebColorSuggestion>& suggestions);
124     bool runFileChooser(const blink::WebFileChooserParams&, blink::WebFileChooserCompletion*);
125 
126     std::string captureTree(bool debugRenderTree);
127     SkCanvas* capturePixels();
128 
129     void setLogConsoleOutput(bool enabled);
130 
131     // FIXME: Make this private again.
132     void scheduleComposite();
133 
134     void didOpenChooser();
135     void didCloseChooser();
136     bool isChooserShown();
137 
138 #if WEBTESTRUNNER_IMPLEMENTATION
139     void display();
140     void displayInvalidatedRegion();
141     void discardBackingStore();
142 
143     blink::WebGeolocationClientMock* geolocationClientMock();
144     blink::WebMIDIClientMock* midiClientMock();
145     MockWebSpeechInputController* speechInputControllerMock();
146     MockWebSpeechRecognizer* speechRecognizerMock();
147 #endif
148 
taskList()149     WebTaskList* taskList() { return &m_taskList; }
150 
151     blink::WebView* webView();
152 
153     void didForceResize();
154 
155     void postSpellCheckEvent(const blink::WebString& eventName);
156 
157 protected:
158     WebTestProxyBase();
159     ~WebTestProxyBase();
160 
161     void didInvalidateRect(const blink::WebRect&);
162     void didScrollRect(int, int, const blink::WebRect&);
163     void scheduleAnimation();
164     // FIXME: Remove once we switch to use didForceResize.
165     void setWindowRect(const blink::WebRect&);
166     void show(blink::WebNavigationPolicy);
167     void didAutoResize(const blink::WebSize&);
168     void postAccessibilityEvent(const blink::WebAXObject&, blink::WebAXEvent);
169     void startDragging(blink::WebFrame*, const blink::WebDragData&, blink::WebDragOperationsMask, const blink::WebImage&, const blink::WebPoint&);
170     void didChangeSelection(bool isEmptySelection);
171     void didChangeContents();
172     void didEndEditing();
173     bool createView(blink::WebFrame* creator, const blink::WebURLRequest&, const blink::WebWindowFeatures&, const blink::WebString& frameName, blink::WebNavigationPolicy, bool suppressOpener);
174     blink::WebPlugin* createPlugin(blink::WebFrame*, const blink::WebPluginParams&);
175     void setStatusText(const blink::WebString&);
176     void didStopLoading();
177     void showContextMenu(blink::WebFrame*, const blink::WebContextMenuData&);
178     blink::WebUserMediaClient* userMediaClient();
179     void printPage(blink::WebFrame*);
180     blink::WebNotificationPresenter* notificationPresenter();
181     blink::WebGeolocationClient* geolocationClient();
182     blink::WebMIDIClient* webMIDIClient();
183     blink::WebSpeechInputController* speechInputController(blink::WebSpeechInputListener*);
184     blink::WebSpeechRecognizer* speechRecognizer();
185     bool requestPointerLock();
186     void requestPointerUnlock();
187     bool isPointerLocked();
188     void didFocus();
189     void didBlur();
190     void setToolTipText(const blink::WebString&, blink::WebTextDirection);
191     void didAddMessageToConsole(const blink::WebConsoleMessage&, const blink::WebString& sourceName, unsigned sourceLine);
192     void runModalAlertDialog(blink::WebFrame*, const blink::WebString&);
193     bool runModalConfirmDialog(blink::WebFrame*, const blink::WebString&);
194     bool runModalPromptDialog(blink::WebFrame*, const blink::WebString& message, const blink::WebString& defaultValue, blink::WebString* actualValue);
195     bool runModalBeforeUnloadDialog(blink::WebFrame*, const blink::WebString&);
196 
197     void didStartProvisionalLoad(blink::WebFrame*);
198     void didReceiveServerRedirectForProvisionalLoad(blink::WebFrame*);
199     bool didFailProvisionalLoad(blink::WebFrame*, const blink::WebURLError&);
200     void didCommitProvisionalLoad(blink::WebFrame*, bool isNewNavigation);
201     void didReceiveTitle(blink::WebFrame*, const blink::WebString& title, blink::WebTextDirection);
202     void didChangeIcon(blink::WebFrame*, blink::WebIconURL::Type);
203     void didFinishDocumentLoad(blink::WebFrame*);
204     void didHandleOnloadEvents(blink::WebFrame*);
205     void didFailLoad(blink::WebFrame*, const blink::WebURLError&);
206     void didFinishLoad(blink::WebFrame*);
207     void didChangeLocationWithinPage(blink::WebFrame*);
208     void didDetectXSS(blink::WebFrame*, const blink::WebURL& insecureURL, bool didBlockEntirePage);
209     void didDispatchPingLoader(blink::WebFrame*, const blink::WebURL&);
210     void willRequestResource(blink::WebFrame*, const blink::WebCachedURLRequest&);
211     void didCreateDataSource(blink::WebFrame*, blink::WebDataSource*);
212     void willSendRequest(blink::WebFrame*, unsigned identifier, blink::WebURLRequest&, const blink::WebURLResponse& redirectResponse);
213     void didReceiveResponse(blink::WebFrame*, unsigned identifier, const blink::WebURLResponse&);
214     void didChangeResourcePriority(blink::WebFrame*, unsigned identifier, const blink::WebURLRequest::Priority&);
215     void didFinishResourceLoad(blink::WebFrame*, unsigned identifier);
216     blink::WebNavigationPolicy decidePolicyForNavigation(blink::WebFrame*, blink::WebDataSource::ExtraData*, const blink::WebURLRequest&, blink::WebNavigationType, blink::WebNavigationPolicy defaultPolicy, bool isRedirect);
217     bool willCheckAndDispatchMessageEvent(blink::WebFrame* sourceFrame, blink::WebFrame* targetFrame, blink::WebSecurityOrigin target, blink::WebDOMMessageEvent);
218     void resetInputMethod();
219 
220 private:
221     template<class, typename, typename> friend class WebFrameTestProxy;
222     void locationChangeDone(blink::WebFrame*);
223     void paintRect(const blink::WebRect&);
224     void paintInvalidatedRegion();
225     void paintPagesWithBoundaries();
226     SkCanvas* canvas();
227     void displayRepaintMask();
228     void invalidateAll();
229     void animateNow();
230 
231     blink::WebWidget* webWidget();
232 
233     TestInterfaces* m_testInterfaces;
234     WebTestDelegate* m_delegate;
235     blink::WebWidget* m_webWidget;
236 
237     WebTaskList m_taskList;
238 
239     WebScopedPtr<SpellCheckClient> m_spellcheck;
240     WebScopedPtr<WebUserMediaClientMock> m_userMediaClient;
241 
242     // Painting.
243     WebScopedPtr<SkCanvas> m_canvas;
244     blink::WebRect m_paintRect;
245     bool m_isPainting;
246     bool m_animateScheduled;
247     std::map<unsigned, std::string> m_resourceIdentifierMap;
248     std::map<unsigned, blink::WebURLRequest> m_requestMap;
249 
250     bool m_logConsoleOutput;
251     int m_chooserCount;
252 
253     WebScopedPtr<blink::WebGeolocationClientMock> m_geolocationClient;
254     WebScopedPtr<blink::WebMIDIClientMock> m_midiClient;
255     WebScopedPtr<MockWebSpeechRecognizer> m_speechRecognizer;
256     WebScopedPtr<MockWebSpeechInputController> m_speechInputController;
257     WebScopedPtr<MockWebValidationMessageClient> m_validationMessageClient;
258 
259     // FIXME:: We want to move away from this pattern and mark classes
260     // as Noncopyable, but this class is marked as WEBTESTRUNNER_EXPORT
261     // while WebNonCopyable is not, so we cannot inherit from WebNonCopyable.
262     // To overcome the problem, for now not inheriting from WebNonCopyable
263     // but plan to fix it when we make the change of making WebNonCopyable
264     // a macro rather than class. We will have a single way to mark all classes
265     // as Noncopyable.
266     // Tracked under: http://code.google.com/p/chromium/issues/detail?id=229178
267 private:
268     WebTestProxyBase(WebTestProxyBase&);
269     WebTestProxyBase& operator=(const WebTestProxyBase&);
270 };
271 
272 // Use this template to inject methods into your WebViewClient/WebFrameClient
273 // implementation required for the running layout tests.
274 template<class Base, typename T>
275 class WebTestProxy : public Base, public WebTestProxyBase, public blink::WebNonCopyable {
276 public:
WebTestProxy(T t)277     explicit WebTestProxy(T t)
278         : Base(t)
279     {
280     }
281 
~WebTestProxy()282     virtual ~WebTestProxy() { }
283 
284     // WebViewClient implementation.
didInvalidateRect(const blink::WebRect & rect)285     virtual void didInvalidateRect(const blink::WebRect& rect)
286     {
287         WebTestProxyBase::didInvalidateRect(rect);
288     }
didScrollRect(int dx,int dy,const blink::WebRect & clipRect)289     virtual void didScrollRect(int dx, int dy, const blink::WebRect& clipRect)
290     {
291         WebTestProxyBase::didScrollRect(dx, dy, clipRect);
292     }
scheduleComposite()293     virtual void scheduleComposite()
294     {
295         WebTestProxyBase::scheduleComposite();
296     }
scheduleAnimation()297     virtual void scheduleAnimation()
298     {
299         WebTestProxyBase::scheduleAnimation();
300     }
setWindowRect(const blink::WebRect & rect)301     virtual void setWindowRect(const blink::WebRect& rect)
302     {
303         WebTestProxyBase::setWindowRect(rect);
304         Base::setWindowRect(rect);
305     }
show(blink::WebNavigationPolicy policy)306     virtual void show(blink::WebNavigationPolicy policy)
307     {
308         WebTestProxyBase::show(policy);
309         Base::show(policy);
310     }
didAutoResize(const blink::WebSize & newSize)311     virtual void didAutoResize(const blink::WebSize& newSize)
312     {
313         WebTestProxyBase::didAutoResize(newSize);
314         Base::didAutoResize(newSize);
315     }
postAccessibilityEvent(const blink::WebAXObject & object,blink::WebAXEvent event)316     virtual void postAccessibilityEvent(const blink::WebAXObject& object, blink::WebAXEvent event)
317     {
318         WebTestProxyBase::postAccessibilityEvent(object, event);
319         Base::postAccessibilityEvent(object, event);
320     }
startDragging(blink::WebFrame * frame,const blink::WebDragData & data,blink::WebDragOperationsMask mask,const blink::WebImage & image,const blink::WebPoint & point)321     virtual void startDragging(blink::WebFrame* frame, const blink::WebDragData& data, blink::WebDragOperationsMask mask, const blink::WebImage& image, const blink::WebPoint& point)
322     {
323         WebTestProxyBase::startDragging(frame, data, mask, image, point);
324         // Don't forward this call to Base because we don't want to do a real drag-and-drop.
325     }
didChangeSelection(bool isEmptySelection)326     virtual void didChangeSelection(bool isEmptySelection)
327     {
328         WebTestProxyBase::didChangeSelection(isEmptySelection);
329         Base::didChangeSelection(isEmptySelection);
330     }
didChangeContents()331     virtual void didChangeContents()
332     {
333         WebTestProxyBase::didChangeContents();
334         Base::didChangeContents();
335     }
createView(blink::WebFrame * creator,const blink::WebURLRequest & request,const blink::WebWindowFeatures & features,const blink::WebString & frameName,blink::WebNavigationPolicy policy,bool suppressOpener)336     virtual blink::WebView* createView(blink::WebFrame* creator, const blink::WebURLRequest& request, const blink::WebWindowFeatures& features, const blink::WebString& frameName, blink::WebNavigationPolicy policy, bool suppressOpener)
337     {
338         if (!WebTestProxyBase::createView(creator, request, features, frameName, policy, suppressOpener))
339             return 0;
340         return Base::createView(creator, request, features, frameName, policy, suppressOpener);
341     }
setStatusText(const blink::WebString & text)342     virtual void setStatusText(const blink::WebString& text)
343     {
344         WebTestProxyBase::setStatusText(text);
345         Base::setStatusText(text);
346     }
didStopLoading()347     virtual void didStopLoading()
348     {
349         WebTestProxyBase::didStopLoading();
350         Base::didStopLoading();
351     }
showContextMenu(blink::WebFrame * frame,const blink::WebContextMenuData & contextMenuData)352     virtual void showContextMenu(blink::WebFrame* frame, const blink::WebContextMenuData& contextMenuData)
353     {
354         WebTestProxyBase::showContextMenu(frame, contextMenuData);
355         Base::showContextMenu(frame, contextMenuData);
356     }
userMediaClient()357     virtual blink::WebUserMediaClient* userMediaClient()
358     {
359         return WebTestProxyBase::userMediaClient();
360     }
printPage(blink::WebFrame * frame)361     virtual void printPage(blink::WebFrame* frame)
362     {
363         WebTestProxyBase::printPage(frame);
364     }
notificationPresenter()365     virtual blink::WebNotificationPresenter* notificationPresenter()
366     {
367         return WebTestProxyBase::notificationPresenter();
368     }
geolocationClient()369     virtual blink::WebGeolocationClient* geolocationClient()
370     {
371         return WebTestProxyBase::geolocationClient();
372     }
webMIDIClient()373     virtual blink::WebMIDIClient* webMIDIClient()
374     {
375         return WebTestProxyBase::webMIDIClient();
376     }
speechInputController(blink::WebSpeechInputListener * listener)377     virtual blink::WebSpeechInputController* speechInputController(blink::WebSpeechInputListener* listener)
378     {
379         return WebTestProxyBase::speechInputController(listener);
380     }
speechRecognizer()381     virtual blink::WebSpeechRecognizer* speechRecognizer()
382     {
383         return WebTestProxyBase::speechRecognizer();
384     }
requestPointerLock()385     virtual bool requestPointerLock()
386     {
387         return WebTestProxyBase::requestPointerLock();
388     }
requestPointerUnlock()389     virtual void requestPointerUnlock()
390     {
391         WebTestProxyBase::requestPointerUnlock();
392     }
isPointerLocked()393     virtual bool isPointerLocked()
394     {
395         return WebTestProxyBase::isPointerLocked();
396     }
didFocus()397     virtual void didFocus()
398     {
399         WebTestProxyBase::didFocus();
400         Base::didFocus();
401     }
didBlur()402     virtual void didBlur()
403     {
404         WebTestProxyBase::didBlur();
405         Base::didBlur();
406     }
setToolTipText(const blink::WebString & text,blink::WebTextDirection hint)407     virtual void setToolTipText(const blink::WebString& text, blink::WebTextDirection hint)
408     {
409         WebTestProxyBase::setToolTipText(text, hint);
410         Base::setToolTipText(text, hint);
411     }
resetInputMethod()412     virtual void resetInputMethod()
413     {
414         WebTestProxyBase::resetInputMethod();
415     }
416 
didStartProvisionalLoad(blink::WebFrame * frame)417     virtual void didStartProvisionalLoad(blink::WebFrame* frame)
418     {
419         WebTestProxyBase::didStartProvisionalLoad(frame);
420         Base::didStartProvisionalLoad(frame);
421     }
didReceiveServerRedirectForProvisionalLoad(blink::WebFrame * frame)422     virtual void didReceiveServerRedirectForProvisionalLoad(blink::WebFrame* frame)
423     {
424         WebTestProxyBase::didReceiveServerRedirectForProvisionalLoad(frame);
425         Base::didReceiveServerRedirectForProvisionalLoad(frame);
426     }
didFailProvisionalLoad(blink::WebFrame * frame,const blink::WebURLError & error)427     virtual void didFailProvisionalLoad(blink::WebFrame* frame, const blink::WebURLError& error)
428     {
429         // If the test finished, don't notify the embedder of the failed load,
430         // as we already destroyed the document loader.
431         if (WebTestProxyBase::didFailProvisionalLoad(frame, error))
432             return;
433         Base::didFailProvisionalLoad(frame, error);
434     }
didCommitProvisionalLoad(blink::WebFrame * frame,bool isNewNavigation)435     virtual void didCommitProvisionalLoad(blink::WebFrame* frame, bool isNewNavigation)
436     {
437         WebTestProxyBase::didCommitProvisionalLoad(frame, isNewNavigation);
438         Base::didCommitProvisionalLoad(frame, isNewNavigation);
439     }
didReceiveTitle(blink::WebFrame * frame,const blink::WebString & title,blink::WebTextDirection direction)440     virtual void didReceiveTitle(blink::WebFrame* frame, const blink::WebString& title, blink::WebTextDirection direction)
441     {
442         WebTestProxyBase::didReceiveTitle(frame, title, direction);
443         Base::didReceiveTitle(frame, title, direction);
444     }
didChangeIcon(blink::WebFrame * frame,blink::WebIconURL::Type iconType)445     virtual void didChangeIcon(blink::WebFrame* frame, blink::WebIconURL::Type iconType)
446     {
447         WebTestProxyBase::didChangeIcon(frame, iconType);
448         Base::didChangeIcon(frame, iconType);
449     }
didFinishDocumentLoad(blink::WebFrame * frame)450     virtual void didFinishDocumentLoad(blink::WebFrame* frame)
451     {
452         WebTestProxyBase::didFinishDocumentLoad(frame);
453         Base::didFinishDocumentLoad(frame);
454     }
didHandleOnloadEvents(blink::WebFrame * frame)455     virtual void didHandleOnloadEvents(blink::WebFrame* frame)
456     {
457         WebTestProxyBase::didHandleOnloadEvents(frame);
458         Base::didHandleOnloadEvents(frame);
459     }
didFailLoad(blink::WebFrame * frame,const blink::WebURLError & error)460     virtual void didFailLoad(blink::WebFrame* frame, const blink::WebURLError& error)
461     {
462         WebTestProxyBase::didFailLoad(frame, error);
463         Base::didFailLoad(frame, error);
464     }
didFinishLoad(blink::WebFrame * frame)465     virtual void didFinishLoad(blink::WebFrame* frame)
466     {
467         WebTestProxyBase::didFinishLoad(frame);
468         Base::didFinishLoad(frame);
469     }
didDetectXSS(blink::WebFrame * frame,const blink::WebURL & insecureURL,bool didBlockEntirePage)470     virtual void didDetectXSS(blink::WebFrame* frame, const blink::WebURL& insecureURL, bool didBlockEntirePage)
471     {
472         WebTestProxyBase::didDetectXSS(frame, insecureURL, didBlockEntirePage);
473         Base::didDetectXSS(frame, insecureURL, didBlockEntirePage);
474     }
willRequestResource(blink::WebFrame * frame,const blink::WebCachedURLRequest & request)475     virtual void willRequestResource(blink::WebFrame* frame, const blink::WebCachedURLRequest& request)
476     {
477         WebTestProxyBase::willRequestResource(frame, request);
478         Base::willRequestResource(frame, request);
479     }
didCreateDataSource(blink::WebFrame * frame,blink::WebDataSource * ds)480     virtual void didCreateDataSource(blink::WebFrame* frame, blink::WebDataSource* ds)
481     {
482         WebTestProxyBase::didCreateDataSource(frame, ds);
483         Base::didCreateDataSource(frame, ds);
484     }
willSendRequest(blink::WebFrame * frame,unsigned identifier,blink::WebURLRequest & request,const blink::WebURLResponse & redirectResponse)485     virtual void willSendRequest(blink::WebFrame* frame, unsigned identifier, blink::WebURLRequest& request, const blink::WebURLResponse& redirectResponse)
486     {
487         WebTestProxyBase::willSendRequest(frame, identifier, request, redirectResponse);
488         Base::willSendRequest(frame, identifier, request, redirectResponse);
489     }
didReceiveResponse(blink::WebFrame * frame,unsigned identifier,const blink::WebURLResponse & response)490     virtual void didReceiveResponse(blink::WebFrame* frame, unsigned identifier, const blink::WebURLResponse& response)
491     {
492         WebTestProxyBase::didReceiveResponse(frame, identifier, response);
493         Base::didReceiveResponse(frame, identifier, response);
494     }
didChangeResourcePriority(blink::WebFrame * frame,unsigned identifier,const blink::WebURLRequest::Priority & priority)495     virtual void didChangeResourcePriority(blink::WebFrame* frame, unsigned identifier, const blink::WebURLRequest::Priority& priority)
496     {
497         WebTestProxyBase::didChangeResourcePriority(frame, identifier, priority);
498         Base::didChangeResourcePriority(frame, identifier, priority);
499     }
didFinishResourceLoad(blink::WebFrame * frame,unsigned identifier)500     virtual void didFinishResourceLoad(blink::WebFrame* frame, unsigned identifier)
501     {
502         WebTestProxyBase::didFinishResourceLoad(frame, identifier);
503         Base::didFinishResourceLoad(frame, identifier);
504     }
didAddMessageToConsole(const blink::WebConsoleMessage & message,const blink::WebString & sourceName,unsigned sourceLine,const blink::WebString & stackTrace)505     virtual void didAddMessageToConsole(const blink::WebConsoleMessage& message, const blink::WebString& sourceName, unsigned sourceLine, const blink::WebString& stackTrace)
506     {
507         WebTestProxyBase::didAddMessageToConsole(message, sourceName, sourceLine);
508         Base::didAddMessageToConsole(message, sourceName, sourceLine, stackTrace);
509     }
runModalAlertDialog(blink::WebFrame * frame,const blink::WebString & message)510     virtual void runModalAlertDialog(blink::WebFrame* frame, const blink::WebString& message)
511     {
512         WebTestProxyBase::runModalAlertDialog(frame, message);
513         Base::runModalAlertDialog(frame, message);
514     }
runModalConfirmDialog(blink::WebFrame * frame,const blink::WebString & message)515     virtual bool runModalConfirmDialog(blink::WebFrame* frame, const blink::WebString& message)
516     {
517         WebTestProxyBase::runModalConfirmDialog(frame, message);
518         return Base::runModalConfirmDialog(frame, message);
519     }
runModalPromptDialog(blink::WebFrame * frame,const blink::WebString & message,const blink::WebString & defaultValue,blink::WebString * actualValue)520     virtual bool runModalPromptDialog(blink::WebFrame* frame, const blink::WebString& message, const blink::WebString& defaultValue, blink::WebString* actualValue)
521     {
522         WebTestProxyBase::runModalPromptDialog(frame, message, defaultValue, actualValue);
523         return Base::runModalPromptDialog(frame, message, defaultValue, actualValue);
524     }
runModalBeforeUnloadDialog(blink::WebFrame * frame,const blink::WebString & message)525     virtual bool runModalBeforeUnloadDialog(blink::WebFrame* frame, const blink::WebString& message)
526     {
527         return WebTestProxyBase::runModalBeforeUnloadDialog(frame, message);
528     }
decidePolicyForNavigation(blink::WebFrame * frame,blink::WebDataSource::ExtraData * extraData,const blink::WebURLRequest & request,blink::WebNavigationType type,blink::WebNavigationPolicy defaultPolicy,bool isRedirect)529     virtual blink::WebNavigationPolicy decidePolicyForNavigation(blink::WebFrame* frame, blink::WebDataSource::ExtraData* extraData, const blink::WebURLRequest& request, blink::WebNavigationType type, blink::WebNavigationPolicy defaultPolicy, bool isRedirect)
530     {
531         blink::WebNavigationPolicy policy = WebTestProxyBase::decidePolicyForNavigation(frame, extraData, request, type, defaultPolicy, isRedirect);
532         if (policy == blink::WebNavigationPolicyIgnore)
533             return policy;
534         return Base::decidePolicyForNavigation(frame, extraData, request, type, defaultPolicy, isRedirect);
535     }
willCheckAndDispatchMessageEvent(blink::WebFrame * sourceFrame,blink::WebFrame * targetFrame,blink::WebSecurityOrigin target,blink::WebDOMMessageEvent event)536     virtual bool willCheckAndDispatchMessageEvent(blink::WebFrame* sourceFrame, blink::WebFrame* targetFrame, blink::WebSecurityOrigin target, blink::WebDOMMessageEvent event)
537     {
538         if (WebTestProxyBase::willCheckAndDispatchMessageEvent(sourceFrame, targetFrame, target, event))
539             return true;
540         return Base::willCheckAndDispatchMessageEvent(sourceFrame, targetFrame, target, event);
541     }
createColorChooser(blink::WebColorChooserClient * client,const blink::WebColor & color)542     virtual blink::WebColorChooser* createColorChooser(blink::WebColorChooserClient* client, const blink::WebColor& color)
543     {
544         return WebTestProxyBase::createColorChooser(client, color);
545     }
createColorChooser(blink::WebColorChooserClient * client,const blink::WebColor & color,const blink::WebVector<blink::WebColorSuggestion> & suggestions)546     virtual blink::WebColorChooser* createColorChooser(blink::WebColorChooserClient* client, const blink::WebColor& color, const blink::WebVector<blink::WebColorSuggestion>& suggestions)
547     {
548         return WebTestProxyBase::createColorChooser(client, color, suggestions);
549     }
runFileChooser(const blink::WebFileChooserParams & params,blink::WebFileChooserCompletion * completion)550     virtual bool runFileChooser(const blink::WebFileChooserParams& params, blink::WebFileChooserCompletion* completion)
551     {
552         return WebTestProxyBase::runFileChooser(params, completion);
553     }
postSpellCheckEvent(const blink::WebString & eventName)554     virtual void postSpellCheckEvent(const blink::WebString& eventName)
555     {
556         WebTestProxyBase::postSpellCheckEvent(eventName);
557     }
558 };
559 
560 }
561 
562 #endif // WebTestProxy_h
563