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

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

Issue 953503002: PlzNavigate: test updates post beforeUnload IPC refactor. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move some methods around. Created 5 years, 9 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 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 false, 182 false,
183 file_path_for_history_item ? "data" : NULL, 183 file_path_for_history_item ? "data" : NULL,
184 file_path_for_history_item); 184 file_path_for_history_item);
185 185
186 FrameHostMsg_DidCommitProvisionalLoad msg(GetRoutingID(), params); 186 FrameHostMsg_DidCommitProvisionalLoad msg(GetRoutingID(), params);
187 OnDidCommitProvisionalLoad(msg); 187 OnDidCommitProvisionalLoad(msg);
188 } 188 }
189 189
190 void TestRenderFrameHost::SendBeginNavigationWithURL(const GURL& url, 190 void TestRenderFrameHost::SendBeginNavigationWithURL(const GURL& url,
191 bool has_user_gesture) { 191 bool has_user_gesture) {
192 BeginNavigationParams begin_params("GET", std::string(), net::LOAD_NORMAL, 192 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
193 has_user_gesture); 193 switches::kEnableBrowserSideNavigation)) {
194 CommonNavigationParams common_params; 194 BeginNavigationParams begin_params("GET", std::string(), net::LOAD_NORMAL,
195 common_params.url = url; 195 has_user_gesture);
196 common_params.referrer = Referrer(GURL(), blink::WebReferrerPolicyDefault); 196 CommonNavigationParams common_params;
197 common_params.transition = ui::PAGE_TRANSITION_LINK; 197 common_params.url = url;
198 OnBeginNavigation(common_params, begin_params, 198 common_params.referrer = Referrer(GURL(), blink::WebReferrerPolicyDefault);
199 scoped_refptr<ResourceRequestBody>()); 199 common_params.transition = ui::PAGE_TRANSITION_LINK;
200 OnBeginNavigation(common_params, begin_params,
201 scoped_refptr<ResourceRequestBody>());
202 }
200 } 203 }
201 204
202 void TestRenderFrameHost::DidDisownOpener() { 205 void TestRenderFrameHost::DidDisownOpener() {
203 OnDidDisownOpener(); 206 OnDidDisownOpener();
204 } 207 }
205 208
206 void TestRenderFrameHost::PrepareForCommit(const GURL& url) { 209 void TestRenderFrameHost::PrepareForCommit() {
207 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( 210 PrepareForCommitInternal(nullptr);
208 switches::kEnableBrowserSideNavigation)) { 211 }
209 SendBeforeUnloadACK(true);
210 return;
211 }
212 212
213 // PlzNavigate 213 void TestRenderFrameHost::PrepareForCommitWithServerRedirect(
214 // Simulate the network stack commit without any redirects. 214 const GURL& redirect_url) {
215 NavigationRequest* request = 215 PrepareForCommitInternal(&redirect_url);
216 static_cast<NavigatorImpl*>(frame_tree_node_->navigator())
217 ->GetNavigationRequestForNodeForTesting(frame_tree_node_);
218
219 // We are simulating a renderer-initiated user-initiated navigation.
220 if (!request) {
221 SendBeginNavigationWithURL(url, true);
222 request = static_cast<NavigatorImpl*>(frame_tree_node_->navigator())
223 ->GetNavigationRequestForNodeForTesting(frame_tree_node_);
224 }
225 ASSERT_TRUE(request);
226
227 // We may not have simulated the renderer response to the navigation request.
228 // Do that now.
229 if (request->state() == NavigationRequest::WAITING_FOR_RENDERER_RESPONSE)
230 SendBeforeUnloadACK(true);
231
232 // We have already simulated the IO thread commit. Only the
233 // DidCommitProvisionalLoad from the renderer is missing.
234 if (request->state() == NavigationRequest::RESPONSE_STARTED)
235 return;
236
237 ASSERT_TRUE(request->state() == NavigationRequest::STARTED);
238 TestNavigationURLLoader* url_loader =
239 static_cast<TestNavigationURLLoader*>(request->loader_for_testing());
240 ASSERT_TRUE(url_loader);
241 scoped_refptr<ResourceResponse> response(new ResourceResponse);
242 url_loader->CallOnResponseStarted(response, MakeEmptyStream());
243 } 216 }
244 217
245 void TestRenderFrameHost::SendBeforeUnloadHandlersPresent(bool present) { 218 void TestRenderFrameHost::SendBeforeUnloadHandlersPresent(bool present) {
246 OnBeforeUnloadHandlersPresent(present); 219 OnBeforeUnloadHandlersPresent(present);
247 } 220 }
248 221
249 void TestRenderFrameHost::SendUnloadHandlersPresent(bool present) { 222 void TestRenderFrameHost::SendUnloadHandlersPresent(bool present) {
250 OnUnloadHandlersPresent(present); 223 OnUnloadHandlersPresent(present);
251 } 224 }
252 225
226 void TestRenderFrameHost::PrepareForCommitInternal(
227 const GURL* redirect_url) {
228 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
229 switches::kEnableBrowserSideNavigation)) {
230 // Non PlzNavigate
231 SendBeforeUnloadACK(true);
232 return;
233 }
234
235 // PlzNavigate
236 NavigationRequest* request =
237 static_cast<NavigatorImpl*>(frame_tree_node_->navigator())
238 ->GetNavigationRequestForNodeForTesting(frame_tree_node_);
239 CHECK(request);
240
241 // Simulate a beforeUnload ACK from the renderer if it's being expected.
clamy 2015/02/25 14:29:49 nit: s/it's being expected/the browser is waiting
carlosk 2015/02/25 16:08:00 Done.
242 if (request->state() == NavigationRequest::WAITING_FOR_RENDERER_RESPONSE)
243 SendBeforeUnloadACK(true);
244
245 // We have already simulated the IO thread commit. Only the
246 // DidCommitProvisionalLoad from the renderer is missing.
247 if (request->state() == NavigationRequest::RESPONSE_STARTED) {
248 CHECK(!redirect_url) << "Unable to simulate server redirect to \"" <<
clamy 2015/02/25 14:29:49 I noticed you like to add log to the CHECKs. This
carlosk 2015/02/25 16:08:00 I think this still makes it easier when running a
clamy 2015/02/25 17:10:33 I would be fine if this was a DCHECK, but it is a
carlosk 2015/02/25 19:30:21 Acknowledged.
249 redirect_url << "\"";
250 return;
251 }
252
253 CHECK(request->state() == NavigationRequest::STARTED);
254
255 TestNavigationURLLoader* url_loader =
256 static_cast<TestNavigationURLLoader*>(request->loader_for_testing());
257 CHECK(url_loader);
258
259 // If a |redirect_url| was provided, simulate a server redirect
260 if (redirect_url)
261 url_loader->SimulateServerRedirect(*redirect_url);
262
263 // Simulate the network stack commit
264 scoped_refptr<ResourceResponse> response(new ResourceResponse);
265 url_loader->CallOnResponseStarted(response, MakeEmptyStream());
266 }
267
253 } // namespace content 268 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698