OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/test/test_render_frame_host.h" | 5 #include "content/test/test_render_frame_host.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "content/browser/frame_host/frame_tree.h" | 8 #include "content/browser/frame_host/frame_tree.h" |
9 #include "content/browser/frame_host/navigation_request.h" | 9 #include "content/browser/frame_host/navigation_request.h" |
10 #include "content/browser/frame_host/navigator.h" | 10 #include "content/browser/frame_host/navigator.h" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
48 render_view_host, | 48 render_view_host, |
49 delegate, | 49 delegate, |
50 rwh_delegate, | 50 rwh_delegate, |
51 frame_tree, | 51 frame_tree, |
52 frame_tree_node, | 52 frame_tree_node, |
53 routing_id, | 53 routing_id, |
54 flags), | 54 flags), |
55 child_creation_observer_(delegate ? delegate->GetAsWebContents() : NULL), | 55 child_creation_observer_(delegate ? delegate->GetAsWebContents() : NULL), |
56 contents_mime_type_("text/html"), | 56 contents_mime_type_("text/html"), |
57 simulate_history_list_was_cleared_(false) { | 57 simulate_history_list_was_cleared_(false) { |
58 if (frame_tree_node_->IsMainFrame()) | |
59 SetRenderFrameCreated(true); | |
60 } | 58 } |
61 | 59 |
62 TestRenderFrameHost::~TestRenderFrameHost() { | 60 TestRenderFrameHost::~TestRenderFrameHost() { |
63 SetRenderFrameCreated(false); | |
64 } | 61 } |
65 | 62 |
66 TestRenderViewHost* TestRenderFrameHost::GetRenderViewHost() { | 63 TestRenderViewHost* TestRenderFrameHost::GetRenderViewHost() { |
67 return static_cast<TestRenderViewHost*>( | 64 return static_cast<TestRenderViewHost*>( |
68 RenderFrameHostImpl::GetRenderViewHost()); | 65 RenderFrameHostImpl::GetRenderViewHost()); |
69 } | 66 } |
70 | 67 |
71 MockRenderProcessHost* TestRenderFrameHost::GetProcess() { | 68 MockRenderProcessHost* TestRenderFrameHost::GetProcess() { |
72 return static_cast<MockRenderProcessHost*>(RenderFrameHostImpl::GetProcess()); | 69 return static_cast<MockRenderProcessHost*>(RenderFrameHostImpl::GetProcess()); |
73 } | 70 } |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
127 bool did_create_new_entry, | 124 bool did_create_new_entry, |
128 const GURL& url, | 125 const GURL& url, |
129 ui::PageTransition transition, | 126 ui::PageTransition transition, |
130 int response_code) { | 127 int response_code) { |
131 // DidStartProvisionalLoad may delete the pending entry that holds |url|, | 128 // DidStartProvisionalLoad may delete the pending entry that holds |url|, |
132 // so we keep a copy of it to use in SendNavigateWithParameters. | 129 // so we keep a copy of it to use in SendNavigateWithParameters. |
133 GURL url_copy(url); | 130 GURL url_copy(url); |
134 | 131 |
135 // Ensure that the RenderFrameCreated notification has been sent to observers | 132 // Ensure that the RenderFrameCreated notification has been sent to observers |
136 // before navigating the frame. | 133 // before navigating the frame. |
137 SetRenderFrameCreated(true); | 134 //SetRenderFrameCreated(true); |
ncarter (slow)
2015/05/26 21:44:14
Seems like debug cruft?
nasko
2015/05/26 22:25:49
Yes, indeed.
| |
138 | 135 |
139 OnDidStartProvisionalLoadForFrame(url_copy); | 136 OnDidStartProvisionalLoadForFrame(url_copy); |
140 SendNavigateWithParameters(page_id, nav_entry_id, did_create_new_entry, | 137 SendNavigateWithParameters(page_id, nav_entry_id, did_create_new_entry, |
141 url_copy, transition, url_copy, response_code, 0, | 138 url_copy, transition, url_copy, response_code, 0, |
142 std::vector<GURL>()); | 139 std::vector<GURL>()); |
143 } | 140 } |
144 | 141 |
145 void TestRenderFrameHost::SendNavigateWithOriginalRequestURL( | 142 void TestRenderFrameHost::SendNavigateWithOriginalRequestURL( |
146 int page_id, | 143 int page_id, |
147 int nav_entry_id, | 144 int nav_entry_id, |
148 bool did_create_new_entry, | 145 bool did_create_new_entry, |
149 const GURL& url, | 146 const GURL& url, |
150 const GURL& original_request_url) { | 147 const GURL& original_request_url) { |
151 // Ensure that the RenderFrameCreated notification has been sent to observers | 148 // Ensure that the RenderFrameCreated notification has been sent to observers |
152 // before navigating the frame. | 149 // before navigating the frame. |
153 SetRenderFrameCreated(true); | 150 //SetRenderFrameCreated(true); |
ncarter (slow)
2015/05/26 21:44:14
Same here.
nasko
2015/05/26 22:25:49
Done.
| |
154 | 151 |
155 OnDidStartProvisionalLoadForFrame(url); | 152 OnDidStartProvisionalLoadForFrame(url); |
156 SendNavigateWithParameters(page_id, nav_entry_id, did_create_new_entry, url, | 153 SendNavigateWithParameters(page_id, nav_entry_id, did_create_new_entry, url, |
157 ui::PAGE_TRANSITION_LINK, original_request_url, | 154 ui::PAGE_TRANSITION_LINK, original_request_url, |
158 200, 0, std::vector<GURL>()); | 155 200, 0, std::vector<GURL>()); |
159 } | 156 } |
160 | 157 |
161 void TestRenderFrameHost::SendNavigateWithFile( | 158 void TestRenderFrameHost::SendNavigateWithFile( |
162 int page_id, | 159 int page_id, |
163 int nav_entry_id, | 160 int nav_entry_id, |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
238 bool did_create_new_entry, | 235 bool did_create_new_entry, |
239 const GURL& url) { | 236 const GURL& url) { |
240 SendRendererInitiatedNavigationRequest(url, false); | 237 SendRendererInitiatedNavigationRequest(url, false); |
241 PrepareForCommit(); | 238 PrepareForCommit(); |
242 SendNavigate(page_id, 0, did_create_new_entry, url); | 239 SendNavigate(page_id, 0, did_create_new_entry, url); |
243 } | 240 } |
244 | 241 |
245 void TestRenderFrameHost::SendRendererInitiatedNavigationRequest( | 242 void TestRenderFrameHost::SendRendererInitiatedNavigationRequest( |
246 const GURL& url, | 243 const GURL& url, |
247 bool has_user_gesture) { | 244 bool has_user_gesture) { |
245 // Since this is renderer-initiated navigation, the RenderFrame must be | |
246 // initialized. Do it if it hasn't happened yet. | |
247 InitializeRenderFrameIfNeeded(); | |
ncarter (slow)
2015/05/26 21:44:14
This is very reasonable.
nasko
2015/05/26 22:25:49
Awesome!
| |
248 | |
248 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 249 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
249 switches::kEnableBrowserSideNavigation)) { | 250 switches::kEnableBrowserSideNavigation)) { |
250 BeginNavigationParams begin_params("GET", std::string(), net::LOAD_NORMAL, | 251 BeginNavigationParams begin_params("GET", std::string(), net::LOAD_NORMAL, |
251 has_user_gesture); | 252 has_user_gesture); |
252 CommonNavigationParams common_params; | 253 CommonNavigationParams common_params; |
253 common_params.url = url; | 254 common_params.url = url; |
254 common_params.referrer = Referrer(GURL(), blink::WebReferrerPolicyDefault); | 255 common_params.referrer = Referrer(GURL(), blink::WebReferrerPolicyDefault); |
255 common_params.transition = ui::PAGE_TRANSITION_LINK; | 256 common_params.transition = ui::PAGE_TRANSITION_LINK; |
256 OnBeginNavigation(common_params, begin_params, | 257 OnBeginNavigation(common_params, begin_params, |
257 scoped_refptr<ResourceRequestBody>()); | 258 scoped_refptr<ResourceRequestBody>()); |
258 } | 259 } |
259 } | 260 } |
260 | 261 |
261 void TestRenderFrameHost::DidDisownOpener() { | 262 void TestRenderFrameHost::DidDisownOpener() { |
262 OnDidDisownOpener(); | 263 OnDidDisownOpener(); |
263 } | 264 } |
264 | 265 |
266 void TestRenderFrameHost::InitializeRenderFrameIfNeeded() { | |
267 if (!render_view_host()->IsRenderViewLive()) { | |
268 RenderViewHostTester::For(render_view_host())->CreateRenderView( | |
269 base::string16(), MSG_ROUTING_NONE, MSG_ROUTING_NONE, -1, false); | |
270 } | |
271 } | |
272 | |
265 void TestRenderFrameHost::PrepareForCommit() { | 273 void TestRenderFrameHost::PrepareForCommit() { |
266 PrepareForCommitWithServerRedirect(GURL()); | 274 PrepareForCommitWithServerRedirect(GURL()); |
267 } | 275 } |
268 | 276 |
269 void TestRenderFrameHost::PrepareForCommitWithServerRedirect( | 277 void TestRenderFrameHost::PrepareForCommitWithServerRedirect( |
270 const GURL& redirect_url) { | 278 const GURL& redirect_url) { |
271 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( | 279 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( |
272 switches::kEnableBrowserSideNavigation)) { | 280 switches::kEnableBrowserSideNavigation)) { |
273 // Non PlzNavigate | 281 // Non PlzNavigate |
274 if (IsWaitingForBeforeUnloadACK()) | 282 if (IsWaitingForBeforeUnloadACK()) |
(...skipping 28 matching lines...) Expand all Loading... | |
303 url_loader->SimulateServerRedirect(redirect_url); | 311 url_loader->SimulateServerRedirect(redirect_url); |
304 | 312 |
305 // Simulate the network stack commit. | 313 // Simulate the network stack commit. |
306 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 314 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
307 // TODO(carlosk): ideally with PlzNavigate it should be possible someday to | 315 // TODO(carlosk): ideally with PlzNavigate it should be possible someday to |
308 // fully commit the navigation at this call to CallOnResponseStarted. | 316 // fully commit the navigation at this call to CallOnResponseStarted. |
309 url_loader->CallOnResponseStarted(response, MakeEmptyStream()); | 317 url_loader->CallOnResponseStarted(response, MakeEmptyStream()); |
310 } | 318 } |
311 | 319 |
312 } // namespace content | 320 } // namespace content |
OLD | NEW |