Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(201)

Side by Side Diff: content/test/test_render_frame_host.cc

Issue 1151973005: Bring RFH/RVH unit tests closer to reality of how RF/RV are initialized (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add workaround to <webview> bug (492830) Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698