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