OLD | NEW |
| (Empty) |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef CONTENT_SHELL_RENDERER_TEST_RUNNER_WEB_FRAME_TEST_PROXY_H_ | |
6 #define CONTENT_SHELL_RENDERER_TEST_RUNNER_WEB_FRAME_TEST_PROXY_H_ | |
7 | |
8 #include "base/basictypes.h" | |
9 #include "content/shell/renderer/test_runner/mock_screen_orientation_client.h" | |
10 #include "content/shell/renderer/test_runner/test_interfaces.h" | |
11 #include "content/shell/renderer/test_runner/test_runner.h" | |
12 #include "content/shell/renderer/test_runner/web_test_delegate.h" | |
13 #include "content/shell/renderer/test_runner/web_test_proxy.h" | |
14 #include "third_party/WebKit/public/platform/WebString.h" | |
15 | |
16 namespace content { | |
17 | |
18 // Templetized wrapper around RenderFrameImpl objects, which implement | |
19 // the WebFrameClient interface. | |
20 template <class Base, typename P, typename R> | |
21 class WebFrameTestProxy : public Base { | |
22 public: | |
23 WebFrameTestProxy(P p, R r) : Base(p, r), base_proxy_(NULL) {} | |
24 | |
25 virtual ~WebFrameTestProxy() {} | |
26 | |
27 void set_base_proxy(WebTestProxyBase* proxy) { base_proxy_ = proxy; } | |
28 | |
29 // WebFrameClient implementation. | |
30 virtual blink::WebPlugin* createPlugin(blink::WebLocalFrame* frame, | |
31 const blink::WebPluginParams& params) { | |
32 blink::WebPlugin* plugin = base_proxy_->CreatePlugin(frame, params); | |
33 if (plugin) | |
34 return plugin; | |
35 return Base::createPlugin(frame, params); | |
36 } | |
37 | |
38 virtual blink::WebScreenOrientationClient* webScreenOrientationClient() { | |
39 return base_proxy_->GetScreenOrientationClientMock(); | |
40 } | |
41 | |
42 virtual void didAddMessageToConsole(const blink::WebConsoleMessage& message, | |
43 const blink::WebString& source_name, | |
44 unsigned source_line, | |
45 const blink::WebString& stack_trace) { | |
46 base_proxy_->DidAddMessageToConsole(message, source_name, source_line); | |
47 Base::didAddMessageToConsole( | |
48 message, source_name, source_line, stack_trace); | |
49 } | |
50 | |
51 virtual bool canCreatePluginWithoutRenderer( | |
52 const blink::WebString& mime_type) { | |
53 using blink::WebString; | |
54 | |
55 const CR_DEFINE_STATIC_LOCAL( | |
56 WebString, suffix, ("-can-create-without-renderer")); | |
57 return mime_type.utf8().find(suffix.utf8()) != std::string::npos; | |
58 } | |
59 | |
60 virtual void loadURLExternally(blink::WebLocalFrame* frame, | |
61 const blink::WebURLRequest& request, | |
62 blink::WebNavigationPolicy policy, | |
63 const blink::WebString& suggested_name) { | |
64 base_proxy_->LoadURLExternally(frame, request, policy, suggested_name); | |
65 Base::loadURLExternally(frame, request, policy, suggested_name); | |
66 } | |
67 | |
68 virtual void didStartProvisionalLoad(blink::WebLocalFrame* frame, | |
69 double triggeringEventTime) { | |
70 base_proxy_->DidStartProvisionalLoad(frame); | |
71 Base::didStartProvisionalLoad( | |
72 frame, triggeringEventTime); | |
73 } | |
74 | |
75 virtual void didReceiveServerRedirectForProvisionalLoad( | |
76 blink::WebLocalFrame* frame) { | |
77 base_proxy_->DidReceiveServerRedirectForProvisionalLoad(frame); | |
78 Base::didReceiveServerRedirectForProvisionalLoad(frame); | |
79 } | |
80 | |
81 virtual void didFailProvisionalLoad( | |
82 blink::WebLocalFrame* frame, | |
83 const blink::WebURLError& error, | |
84 blink::WebHistoryCommitType commit_type) { | |
85 // If the test finished, don't notify the embedder of the failed load, | |
86 // as we already destroyed the document loader. | |
87 if (base_proxy_->DidFailProvisionalLoad(frame, error, commit_type)) | |
88 return; | |
89 Base::didFailProvisionalLoad(frame, error, commit_type); | |
90 } | |
91 | |
92 virtual void didCommitProvisionalLoad( | |
93 blink::WebLocalFrame* frame, | |
94 const blink::WebHistoryItem& item, | |
95 blink::WebHistoryCommitType commit_type) { | |
96 base_proxy_->DidCommitProvisionalLoad(frame, item, commit_type); | |
97 Base::didCommitProvisionalLoad(frame, item, commit_type); | |
98 } | |
99 | |
100 virtual void didReceiveTitle(blink::WebLocalFrame* frame, | |
101 const blink::WebString& title, | |
102 blink::WebTextDirection direction) { | |
103 base_proxy_->DidReceiveTitle(frame, title, direction); | |
104 Base::didReceiveTitle(frame, title, direction); | |
105 } | |
106 | |
107 virtual void didChangeIcon(blink::WebLocalFrame* frame, | |
108 blink::WebIconURL::Type icon_type) { | |
109 base_proxy_->DidChangeIcon(frame, icon_type); | |
110 Base::didChangeIcon(frame, icon_type); | |
111 } | |
112 | |
113 virtual void didFinishDocumentLoad(blink::WebLocalFrame* frame) { | |
114 base_proxy_->DidFinishDocumentLoad(frame); | |
115 Base::didFinishDocumentLoad(frame); | |
116 } | |
117 | |
118 virtual void didHandleOnloadEvents(blink::WebLocalFrame* frame) { | |
119 base_proxy_->DidHandleOnloadEvents(frame); | |
120 Base::didHandleOnloadEvents(frame); | |
121 } | |
122 | |
123 virtual void didFailLoad(blink::WebLocalFrame* frame, | |
124 const blink::WebURLError& error, | |
125 blink::WebHistoryCommitType commit_type) { | |
126 base_proxy_->DidFailLoad(frame, error, commit_type); | |
127 Base::didFailLoad(frame, error, commit_type); | |
128 } | |
129 | |
130 virtual void didFinishLoad(blink::WebLocalFrame* frame) { | |
131 Base::didFinishLoad(frame); | |
132 base_proxy_->DidFinishLoad(frame); | |
133 } | |
134 | |
135 virtual void didChangeSelection(bool is_selection_empty) { | |
136 base_proxy_->DidChangeSelection(is_selection_empty); | |
137 Base::didChangeSelection(is_selection_empty); | |
138 } | |
139 | |
140 virtual blink::WebColorChooser* createColorChooser( | |
141 blink::WebColorChooserClient* client, | |
142 const blink::WebColor& initial_color, | |
143 const blink::WebVector<blink::WebColorSuggestion>& suggestions) { | |
144 return base_proxy_->CreateColorChooser(client, initial_color, suggestions); | |
145 } | |
146 | |
147 virtual void runModalAlertDialog(const blink::WebString& message) { | |
148 base_proxy_->delegate_->PrintMessage(std::string("ALERT: ") + | |
149 message.utf8().data() + "\n"); | |
150 } | |
151 | |
152 virtual bool runModalConfirmDialog(const blink::WebString& message) { | |
153 base_proxy_->delegate_->PrintMessage(std::string("CONFIRM: ") + | |
154 message.utf8().data() + "\n"); | |
155 return true; | |
156 } | |
157 | |
158 virtual bool runModalPromptDialog(const blink::WebString& message, | |
159 const blink::WebString& default_value, | |
160 blink::WebString*) { | |
161 base_proxy_->delegate_->PrintMessage( | |
162 std::string("PROMPT: ") + message.utf8().data() + ", default text: " + | |
163 default_value.utf8().data() + "\n"); | |
164 return true; | |
165 } | |
166 | |
167 virtual bool runModalBeforeUnloadDialog(bool is_reload, | |
168 const blink::WebString& message) { | |
169 base_proxy_->delegate_->PrintMessage(std::string("CONFIRM NAVIGATION: ") + | |
170 message.utf8().data() + "\n"); | |
171 return !base_proxy_->test_interfaces_->GetTestRunner() | |
172 ->shouldStayOnPageAfterHandlingBeforeUnload(); | |
173 } | |
174 | |
175 virtual void showContextMenu( | |
176 const blink::WebContextMenuData& context_menu_data) { | |
177 base_proxy_->ShowContextMenu(Base::GetWebFrame(), | |
178 context_menu_data); | |
179 Base::showContextMenu(context_menu_data); | |
180 } | |
181 | |
182 virtual void didDetectXSS(blink::WebLocalFrame* frame, | |
183 const blink::WebURL& insecure_url, | |
184 bool did_block_entire_page) { | |
185 // This is not implemented in RenderFrameImpl, so need to explicitly call | |
186 // into the base proxy. | |
187 base_proxy_->DidDetectXSS(frame, insecure_url, did_block_entire_page); | |
188 Base::didDetectXSS(frame, insecure_url, did_block_entire_page); | |
189 } | |
190 | |
191 virtual void didDispatchPingLoader(blink::WebLocalFrame* frame, | |
192 const blink::WebURL& url) { | |
193 // This is not implemented in RenderFrameImpl, so need to explicitly call | |
194 // into the base proxy. | |
195 base_proxy_->DidDispatchPingLoader(frame, url); | |
196 Base::didDispatchPingLoader(frame, url); | |
197 } | |
198 | |
199 virtual void willRequestResource(blink::WebLocalFrame* frame, | |
200 const blink::WebCachedURLRequest& request) { | |
201 // This is not implemented in RenderFrameImpl, so need to explicitly call | |
202 // into the base proxy. | |
203 base_proxy_->WillRequestResource(frame, request); | |
204 Base::willRequestResource(frame, request); | |
205 } | |
206 | |
207 virtual void didCreateDataSource(blink::WebLocalFrame* frame, | |
208 blink::WebDataSource* ds) { | |
209 Base::didCreateDataSource(frame, ds); | |
210 } | |
211 | |
212 virtual void willSendRequest(blink::WebLocalFrame* frame, | |
213 unsigned identifier, | |
214 blink::WebURLRequest& request, | |
215 const blink::WebURLResponse& redirect_response) { | |
216 Base::willSendRequest(frame, identifier, request, redirect_response); | |
217 base_proxy_->WillSendRequest(frame, identifier, request, redirect_response); | |
218 } | |
219 | |
220 virtual void didReceiveResponse(blink::WebLocalFrame* frame, | |
221 unsigned identifier, | |
222 const blink::WebURLResponse& response) { | |
223 base_proxy_->DidReceiveResponse(frame, identifier, response); | |
224 Base::didReceiveResponse(frame, identifier, response); | |
225 } | |
226 | |
227 virtual void didChangeResourcePriority( | |
228 blink::WebLocalFrame* frame, | |
229 unsigned identifier, | |
230 const blink::WebURLRequest::Priority& priority, | |
231 int intra_priority_value) { | |
232 // This is not implemented in RenderFrameImpl, so need to explicitly call | |
233 // into the base proxy. | |
234 base_proxy_->DidChangeResourcePriority( | |
235 frame, identifier, priority, intra_priority_value); | |
236 Base::didChangeResourcePriority( | |
237 frame, identifier, priority, intra_priority_value); | |
238 } | |
239 | |
240 virtual void didFinishResourceLoad(blink::WebLocalFrame* frame, | |
241 unsigned identifier) { | |
242 base_proxy_->DidFinishResourceLoad(frame, identifier); | |
243 Base::didFinishResourceLoad(frame, identifier); | |
244 } | |
245 | |
246 virtual blink::WebNavigationPolicy decidePolicyForNavigation( | |
247 const blink::WebFrameClient::NavigationPolicyInfo& info) { | |
248 blink::WebNavigationPolicy policy = base_proxy_->DecidePolicyForNavigation( | |
249 info); | |
250 if (policy == blink::WebNavigationPolicyIgnore) | |
251 return policy; | |
252 | |
253 return Base::decidePolicyForNavigation(info); | |
254 } | |
255 | |
256 virtual void willStartUsingPeerConnectionHandler( | |
257 blink::WebLocalFrame* frame, | |
258 blink::WebRTCPeerConnectionHandler* handler) { | |
259 // RenderFrameImpl::willStartUsingPeerConnectionHandler can not be mocked. | |
260 // See http://crbug/363285. | |
261 } | |
262 | |
263 virtual blink::WebUserMediaClient* userMediaClient() { | |
264 return base_proxy_->GetUserMediaClient(); | |
265 } | |
266 | |
267 virtual bool willCheckAndDispatchMessageEvent( | |
268 blink::WebLocalFrame* source_frame, | |
269 blink::WebFrame* target_frame, | |
270 blink::WebSecurityOrigin target, | |
271 blink::WebDOMMessageEvent event) { | |
272 if (base_proxy_->WillCheckAndDispatchMessageEvent( | |
273 source_frame, target_frame, target, event)) | |
274 return true; | |
275 return Base::willCheckAndDispatchMessageEvent( | |
276 source_frame, target_frame, target, event); | |
277 } | |
278 | |
279 virtual void didStopLoading() { | |
280 base_proxy_->DidStopLoading(); | |
281 Base::didStopLoading(); | |
282 } | |
283 | |
284 private: | |
285 WebTestProxyBase* base_proxy_; | |
286 | |
287 DISALLOW_COPY_AND_ASSIGN(WebFrameTestProxy); | |
288 }; | |
289 | |
290 } // namespace content | |
291 | |
292 #endif // CONTENT_SHELL_RENDERER_TEST_RUNNER_WEB_FRAME_TEST_PROXY_H_ | |
OLD | NEW |