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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 render_view_host, | 49 render_view_host, |
50 delegate, | 50 delegate, |
51 rwh_delegate, | 51 rwh_delegate, |
52 frame_tree, | 52 frame_tree, |
53 frame_tree_node, | 53 frame_tree_node, |
54 routing_id, | 54 routing_id, |
55 flags), | 55 flags), |
56 child_creation_observer_(delegate ? delegate->GetAsWebContents() : NULL), | 56 child_creation_observer_(delegate ? delegate->GetAsWebContents() : NULL), |
57 contents_mime_type_("text/html"), | 57 contents_mime_type_("text/html"), |
58 simulate_history_list_was_cleared_(false) { | 58 simulate_history_list_was_cleared_(false) { |
59 if (frame_tree_node_->IsMainFrame()) | |
60 SetRenderFrameCreated(true); | |
61 } | 59 } |
62 | 60 |
63 TestRenderFrameHost::~TestRenderFrameHost() { | 61 TestRenderFrameHost::~TestRenderFrameHost() { |
64 SetRenderFrameCreated(false); | |
65 } | 62 } |
66 | 63 |
67 TestRenderViewHost* TestRenderFrameHost::GetRenderViewHost() { | 64 TestRenderViewHost* TestRenderFrameHost::GetRenderViewHost() { |
68 return static_cast<TestRenderViewHost*>( | 65 return static_cast<TestRenderViewHost*>( |
69 RenderFrameHostImpl::GetRenderViewHost()); | 66 RenderFrameHostImpl::GetRenderViewHost()); |
70 } | 67 } |
71 | 68 |
72 MockRenderProcessHost* TestRenderFrameHost::GetProcess() { | 69 MockRenderProcessHost* TestRenderFrameHost::GetProcess() { |
73 return static_cast<MockRenderProcessHost*>(RenderFrameHostImpl::GetProcess()); | 70 return static_cast<MockRenderProcessHost*>(RenderFrameHostImpl::GetProcess()); |
74 } | 71 } |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 void TestRenderFrameHost::SendNavigateWithTransitionAndResponseCode( | 122 void TestRenderFrameHost::SendNavigateWithTransitionAndResponseCode( |
126 int page_id, | 123 int page_id, |
127 int nav_entry_id, | 124 int nav_entry_id, |
128 bool did_create_new_entry, | 125 bool did_create_new_entry, |
129 const GURL& url, | 126 const GURL& url, |
130 ui::PageTransition transition, | 127 ui::PageTransition transition, |
131 int response_code) { | 128 int response_code) { |
132 // DidStartProvisionalLoad may delete the pending entry that holds |url|, | 129 // DidStartProvisionalLoad may delete the pending entry that holds |url|, |
133 // so we keep a copy of it to use in SendNavigateWithParameters. | 130 // so we keep a copy of it to use in SendNavigateWithParameters. |
134 GURL url_copy(url); | 131 GURL url_copy(url); |
135 | |
136 // Ensure that the RenderFrameCreated notification has been sent to observers | |
137 // before navigating the frame. | |
138 SetRenderFrameCreated(true); | |
139 | |
140 OnDidStartProvisionalLoadForFrame(url_copy); | 132 OnDidStartProvisionalLoadForFrame(url_copy); |
141 SendNavigateWithParameters(page_id, nav_entry_id, did_create_new_entry, | 133 SendNavigateWithParameters(page_id, nav_entry_id, did_create_new_entry, |
142 url_copy, transition, url_copy, response_code, 0, | 134 url_copy, transition, url_copy, response_code, 0, |
143 std::vector<GURL>()); | 135 std::vector<GURL>()); |
144 } | 136 } |
145 | 137 |
146 void TestRenderFrameHost::SendNavigateWithOriginalRequestURL( | 138 void TestRenderFrameHost::SendNavigateWithOriginalRequestURL( |
147 int page_id, | 139 int page_id, |
148 int nav_entry_id, | 140 int nav_entry_id, |
149 bool did_create_new_entry, | 141 bool did_create_new_entry, |
150 const GURL& url, | 142 const GURL& url, |
151 const GURL& original_request_url) { | 143 const GURL& original_request_url) { |
152 // Ensure that the RenderFrameCreated notification has been sent to observers | |
153 // before navigating the frame. | |
154 SetRenderFrameCreated(true); | |
155 | |
156 OnDidStartProvisionalLoadForFrame(url); | 144 OnDidStartProvisionalLoadForFrame(url); |
157 SendNavigateWithParameters(page_id, nav_entry_id, did_create_new_entry, url, | 145 SendNavigateWithParameters(page_id, nav_entry_id, did_create_new_entry, url, |
158 ui::PAGE_TRANSITION_LINK, original_request_url, | 146 ui::PAGE_TRANSITION_LINK, original_request_url, |
159 200, 0, std::vector<GURL>()); | 147 200, 0, std::vector<GURL>()); |
160 } | 148 } |
161 | 149 |
162 void TestRenderFrameHost::SendNavigateWithFile( | 150 void TestRenderFrameHost::SendNavigateWithFile( |
163 int page_id, | 151 int page_id, |
164 int nav_entry_id, | 152 int nav_entry_id, |
165 bool did_create_new_entry, | 153 bool did_create_new_entry, |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 bool did_create_new_entry, | 227 bool did_create_new_entry, |
240 const GURL& url) { | 228 const GURL& url) { |
241 SendRendererInitiatedNavigationRequest(url, false); | 229 SendRendererInitiatedNavigationRequest(url, false); |
242 PrepareForCommit(); | 230 PrepareForCommit(); |
243 SendNavigate(page_id, 0, did_create_new_entry, url); | 231 SendNavigate(page_id, 0, did_create_new_entry, url); |
244 } | 232 } |
245 | 233 |
246 void TestRenderFrameHost::SendRendererInitiatedNavigationRequest( | 234 void TestRenderFrameHost::SendRendererInitiatedNavigationRequest( |
247 const GURL& url, | 235 const GURL& url, |
248 bool has_user_gesture) { | 236 bool has_user_gesture) { |
| 237 // Since this is renderer-initiated navigation, the RenderFrame must be |
| 238 // initialized. Do it if it hasn't happened yet. |
| 239 InitializeRenderFrameIfNeeded(); |
| 240 |
249 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 241 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
250 switches::kEnableBrowserSideNavigation)) { | 242 switches::kEnableBrowserSideNavigation)) { |
251 BeginNavigationParams begin_params("GET", std::string(), net::LOAD_NORMAL, | 243 BeginNavigationParams begin_params("GET", std::string(), net::LOAD_NORMAL, |
252 has_user_gesture); | 244 has_user_gesture); |
253 CommonNavigationParams common_params; | 245 CommonNavigationParams common_params; |
254 common_params.url = url; | 246 common_params.url = url; |
255 common_params.referrer = Referrer(GURL(), blink::WebReferrerPolicyDefault); | 247 common_params.referrer = Referrer(GURL(), blink::WebReferrerPolicyDefault); |
256 common_params.transition = ui::PAGE_TRANSITION_LINK; | 248 common_params.transition = ui::PAGE_TRANSITION_LINK; |
257 OnBeginNavigation(common_params, begin_params, | 249 OnBeginNavigation(common_params, begin_params, |
258 scoped_refptr<ResourceRequestBody>()); | 250 scoped_refptr<ResourceRequestBody>()); |
259 } | 251 } |
260 } | 252 } |
261 | 253 |
262 void TestRenderFrameHost::DidDisownOpener() { | 254 void TestRenderFrameHost::DidDisownOpener() { |
263 OnDidDisownOpener(); | 255 OnDidDisownOpener(); |
264 } | 256 } |
265 | 257 |
| 258 void TestRenderFrameHost::InitializeRenderFrameIfNeeded() { |
| 259 if (!render_view_host()->IsRenderViewLive()) { |
| 260 RenderViewHostTester::For(render_view_host())->CreateRenderView( |
| 261 base::string16(), MSG_ROUTING_NONE, MSG_ROUTING_NONE, -1, false); |
| 262 } |
| 263 } |
| 264 |
266 void TestRenderFrameHost::PrepareForCommit() { | 265 void TestRenderFrameHost::PrepareForCommit() { |
267 PrepareForCommitWithServerRedirect(GURL()); | 266 PrepareForCommitWithServerRedirect(GURL()); |
268 } | 267 } |
269 | 268 |
270 void TestRenderFrameHost::PrepareForCommitWithServerRedirect( | 269 void TestRenderFrameHost::PrepareForCommitWithServerRedirect( |
271 const GURL& redirect_url) { | 270 const GURL& redirect_url) { |
272 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( | 271 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( |
273 switches::kEnableBrowserSideNavigation)) { | 272 switches::kEnableBrowserSideNavigation)) { |
274 // Non PlzNavigate | 273 // Non PlzNavigate |
275 if (IsWaitingForBeforeUnloadACK()) | 274 if (IsWaitingForBeforeUnloadACK()) |
(...skipping 28 matching lines...) Expand all Loading... |
304 url_loader->SimulateServerRedirect(redirect_url); | 303 url_loader->SimulateServerRedirect(redirect_url); |
305 | 304 |
306 // Simulate the network stack commit. | 305 // Simulate the network stack commit. |
307 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 306 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
308 // TODO(carlosk): ideally with PlzNavigate it should be possible someday to | 307 // TODO(carlosk): ideally with PlzNavigate it should be possible someday to |
309 // fully commit the navigation at this call to CallOnResponseStarted. | 308 // fully commit the navigation at this call to CallOnResponseStarted. |
310 url_loader->CallOnResponseStarted(response, MakeEmptyStream()); | 309 url_loader->CallOnResponseStarted(response, MakeEmptyStream()); |
311 } | 310 } |
312 | 311 |
313 } // namespace content | 312 } // namespace content |
OLD | NEW |