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

Side by Side Diff: content/browser/frame_host/navigator_impl_unittest.cc

Issue 1721813002: Adding DRP specfic UMA for FirstContentfulPaint (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixing drp -> data_reduction_proxy Created 4 years, 7 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/memory/ptr_util.h"
8 #include "base/time/time.h" 9 #include "base/time/time.h"
9 #include "build/build_config.h" 10 #include "build/build_config.h"
10 #include "content/browser/frame_host/navigation_controller_impl.h" 11 #include "content/browser/frame_host/navigation_controller_impl.h"
11 #include "content/browser/frame_host/navigation_entry_impl.h" 12 #include "content/browser/frame_host/navigation_entry_impl.h"
12 #include "content/browser/frame_host/navigation_request.h" 13 #include "content/browser/frame_host/navigation_request.h"
13 #include "content/browser/frame_host/navigation_request_info.h" 14 #include "content/browser/frame_host/navigation_request_info.h"
14 #include "content/browser/frame_host/navigator.h" 15 #include "content/browser/frame_host/navigator.h"
15 #include "content/browser/frame_host/navigator_impl.h" 16 #include "content/browser/frame_host/navigator_impl.h"
16 #include "content/browser/frame_host/render_frame_host_manager.h" 17 #include "content/browser/frame_host/render_frame_host_manager.h"
17 #include "content/browser/site_instance_impl.h" 18 #include "content/browser/site_instance_impl.h"
18 #include "content/browser/streams/stream.h" 19 #include "content/browser/streams/stream.h"
19 #include "content/common/frame_messages.h" 20 #include "content/common/frame_messages.h"
20 #include "content/common/navigation_params.h" 21 #include "content/common/navigation_params.h"
21 #include "content/common/site_isolation_policy.h" 22 #include "content/common/site_isolation_policy.h"
23 #include "content/public/browser/navigation_data.h"
22 #include "content/public/browser/stream_handle.h" 24 #include "content/public/browser/stream_handle.h"
23 #include "content/public/common/url_constants.h" 25 #include "content/public/common/url_constants.h"
24 #include "content/public/common/url_utils.h" 26 #include "content/public/common/url_utils.h"
25 #include "content/public/test/mock_render_process_host.h" 27 #include "content/public/test/mock_render_process_host.h"
26 #include "content/public/test/test_utils.h" 28 #include "content/public/test/test_utils.h"
27 #include "content/test/browser_side_navigation_test_utils.h" 29 #include "content/test/browser_side_navigation_test_utils.h"
28 #include "content/test/test_navigation_url_loader.h" 30 #include "content/test/test_navigation_url_loader.h"
29 #include "content/test/test_render_frame_host.h" 31 #include "content/test/test_render_frame_host.h"
30 #include "content/test/test_web_contents.h" 32 #include "content/test/test_web_contents.h"
31 #include "net/base/load_flags.h" 33 #include "net/base/load_flags.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 } 112 }
111 113
112 scoped_refptr<SiteInstance> ConvertToSiteInstance( 114 scoped_refptr<SiteInstance> ConvertToSiteInstance(
113 RenderFrameHostManager* rfhm, 115 RenderFrameHostManager* rfhm,
114 const SiteInstanceDescriptor& descriptor, 116 const SiteInstanceDescriptor& descriptor,
115 SiteInstance* candidate_instance) { 117 SiteInstance* candidate_instance) {
116 return rfhm->ConvertToSiteInstance(descriptor, candidate_instance); 118 return rfhm->ConvertToSiteInstance(descriptor, candidate_instance);
117 } 119 }
118 }; 120 };
119 121
122 class TestNavigationData : public NavigationData {
nasko 2016/05/02 22:02:49 Defining the same class over multiple unit tests f
RyanSturm 2016/05/02 23:02:56 Removing this from the file.
123 public:
124 TestNavigationData() {}
125 ~TestNavigationData() override {}
126 std::unique_ptr<NavigationData> Clone() const override {
127 return base::WrapUnique(new TestNavigationData());
128 }
129 };
130
120 // PlzNavigate: Test a complete browser-initiated navigation starting with a 131 // PlzNavigate: Test a complete browser-initiated navigation starting with a
121 // non-live renderer. 132 // non-live renderer.
122 TEST_F(NavigatorTestWithBrowserSideNavigation, 133 TEST_F(NavigatorTestWithBrowserSideNavigation,
123 SimpleBrowserInitiatedNavigationFromNonLiveRenderer) { 134 SimpleBrowserInitiatedNavigationFromNonLiveRenderer) {
124 const GURL kUrl("http://chromium.org/"); 135 const GURL kUrl("http://chromium.org/");
125 136
126 EXPECT_FALSE(main_test_rfh()->IsRenderFrameLive()); 137 EXPECT_FALSE(main_test_rfh()->IsRenderFrameLive());
127 138
128 // Start a browser-initiated navigation. 139 // Start a browser-initiated navigation.
129 int32_t site_instance_id = main_test_rfh()->GetSiteInstance()->GetId(); 140 int32_t site_instance_id = main_test_rfh()->GetSiteInstance()->GetId();
130 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 141 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
131 int entry_id = RequestNavigation(node, kUrl); 142 int entry_id = RequestNavigation(node, kUrl);
132 NavigationRequest* request = node->navigation_request(); 143 NavigationRequest* request = node->navigation_request();
133 ASSERT_TRUE(request); 144 ASSERT_TRUE(request);
134 EXPECT_EQ(kUrl, request->common_params().url); 145 EXPECT_EQ(kUrl, request->common_params().url);
135 EXPECT_TRUE(request->browser_initiated()); 146 EXPECT_TRUE(request->browser_initiated());
136 147
137 // As there's no live renderer the navigation should not wait for a 148 // As there's no live renderer the navigation should not wait for a
138 // beforeUnload ACK from the renderer and start right away. 149 // beforeUnload ACK from the renderer and start right away.
139 EXPECT_EQ(NavigationRequest::STARTED, request->state()); 150 EXPECT_EQ(NavigationRequest::STARTED, request->state());
140 ASSERT_TRUE(GetLoaderForNavigationRequest(request)); 151 ASSERT_TRUE(GetLoaderForNavigationRequest(request));
141 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 152 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
142 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 153 EXPECT_FALSE(node->render_manager()->pending_frame_host());
143 154
144 // Have the current RenderFrameHost commit the navigation. 155 // Have the current RenderFrameHost commit the navigation.
145 scoped_refptr<ResourceResponse> response(new ResourceResponse); 156 scoped_refptr<ResourceResponse> response(new ResourceResponse);
146 GetLoaderForNavigationRequest(request) 157 GetLoaderForNavigationRequest(request)->CallOnResponseStarted(
147 ->CallOnResponseStarted(response, MakeEmptyStream()); 158 response, MakeEmptyStream(), base::WrapUnique(new TestNavigationData()));
nasko 2016/05/02 22:02:49 So this change requires always passing NavigationD
RyanSturm 2016/05/02 23:02:56 I can pass in an null NavigationData; it's a good
148 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 159 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
149 EXPECT_TRUE(main_test_rfh()->is_loading()); 160 EXPECT_TRUE(main_test_rfh()->is_loading());
150 EXPECT_FALSE(node->navigation_request()); 161 EXPECT_FALSE(node->navigation_request());
151 162
152 // Commit the navigation. 163 // Commit the navigation.
153 main_test_rfh()->SendNavigate(0, entry_id, true, kUrl); 164 main_test_rfh()->SendNavigate(0, entry_id, true, kUrl);
154 EXPECT_TRUE(main_test_rfh()->is_active()); 165 EXPECT_TRUE(main_test_rfh()->is_active());
155 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), 166 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl),
156 main_test_rfh()->GetSiteInstance()->GetSiteURL()); 167 main_test_rfh()->GetSiteInstance()->GetSiteURL());
157 EXPECT_EQ(kUrl, contents()->GetLastCommittedURL()); 168 EXPECT_EQ(kUrl, contents()->GetLastCommittedURL());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 // The navigation is immediately started as there's no need to wait for 200 // The navigation is immediately started as there's no need to wait for
190 // beforeUnload to be executed. 201 // beforeUnload to be executed.
191 EXPECT_EQ(NavigationRequest::STARTED, request->state()); 202 EXPECT_EQ(NavigationRequest::STARTED, request->state());
192 EXPECT_FALSE(request->begin_params().has_user_gesture); 203 EXPECT_FALSE(request->begin_params().has_user_gesture);
193 EXPECT_EQ(kUrl2, request->common_params().url); 204 EXPECT_EQ(kUrl2, request->common_params().url);
194 EXPECT_FALSE(request->browser_initiated()); 205 EXPECT_FALSE(request->browser_initiated());
195 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 206 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
196 207
197 // Have the current RenderFrameHost commit the navigation. 208 // Have the current RenderFrameHost commit the navigation.
198 scoped_refptr<ResourceResponse> response(new ResourceResponse); 209 scoped_refptr<ResourceResponse> response(new ResourceResponse);
199 GetLoaderForNavigationRequest(request) 210 GetLoaderForNavigationRequest(request)->CallOnResponseStarted(
200 ->CallOnResponseStarted(response, MakeEmptyStream()); 211 response, MakeEmptyStream(), base::WrapUnique(new TestNavigationData()));
201 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 212 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
202 EXPECT_TRUE(main_test_rfh()->is_loading()); 213 EXPECT_TRUE(main_test_rfh()->is_loading());
203 EXPECT_FALSE(node->navigation_request()); 214 EXPECT_FALSE(node->navigation_request());
204 215
205 // Commit the navigation. 216 // Commit the navigation.
206 main_test_rfh()->SendNavigate(1, 0, true, kUrl2); 217 main_test_rfh()->SendNavigate(1, 0, true, kUrl2);
207 EXPECT_TRUE(main_test_rfh()->is_active()); 218 EXPECT_TRUE(main_test_rfh()->is_active());
208 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl2), 219 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl2),
209 main_test_rfh()->GetSiteInstance()->GetSiteURL()); 220 main_test_rfh()->GetSiteInstance()->GetSiteURL());
210 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 221 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
(...skipping 27 matching lines...) Expand all
238 EXPECT_EQ(kUrl2, request->common_params().url); 249 EXPECT_EQ(kUrl2, request->common_params().url);
239 EXPECT_FALSE(request->browser_initiated()); 250 EXPECT_FALSE(request->browser_initiated());
240 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 251 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
241 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 252 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
242 } else { 253 } else {
243 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 254 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
244 } 255 }
245 256
246 // Have the current RenderFrameHost commit the navigation. 257 // Have the current RenderFrameHost commit the navigation.
247 scoped_refptr<ResourceResponse> response(new ResourceResponse); 258 scoped_refptr<ResourceResponse> response(new ResourceResponse);
248 GetLoaderForNavigationRequest(request) 259 GetLoaderForNavigationRequest(request)->CallOnResponseStarted(
249 ->CallOnResponseStarted(response, MakeEmptyStream()); 260 response, MakeEmptyStream(), base::WrapUnique(new TestNavigationData()));
250 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 261 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
251 EXPECT_TRUE( 262 EXPECT_TRUE(
252 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node))); 263 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
253 } else { 264 } else {
254 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 265 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
255 } 266 }
256 EXPECT_TRUE(main_test_rfh()->is_loading()); 267 EXPECT_TRUE(main_test_rfh()->is_loading());
257 EXPECT_FALSE(node->navigation_request()); 268 EXPECT_FALSE(node->navigation_request());
258 269
259 // Commit the navigation. 270 // Commit the navigation.
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 ASSERT_TRUE(main_request); 402 ASSERT_TRUE(main_request);
392 403
393 // Navigations to a different site do create a speculative RenderFrameHost. 404 // Navigations to a different site do create a speculative RenderFrameHost.
394 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 405 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
395 406
396 // Commit an HTTP 204 response. 407 // Commit an HTTP 204 response.
397 scoped_refptr<ResourceResponse> response(new ResourceResponse); 408 scoped_refptr<ResourceResponse> response(new ResourceResponse);
398 const char kNoContentHeaders[] = "HTTP/1.1 204 No Content\0\0"; 409 const char kNoContentHeaders[] = "HTTP/1.1 204 No Content\0\0";
399 response->head.headers = new net::HttpResponseHeaders( 410 response->head.headers = new net::HttpResponseHeaders(
400 std::string(kNoContentHeaders, arraysize(kNoContentHeaders))); 411 std::string(kNoContentHeaders, arraysize(kNoContentHeaders)));
401 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( 412 GetLoaderForNavigationRequest(main_request)
402 response, MakeEmptyStream()); 413 ->CallOnResponseStarted(response, MakeEmptyStream(),
414 base::WrapUnique(new TestNavigationData()));
403 415
404 // There should be no pending nor speculative RenderFrameHost; the navigation 416 // There should be no pending nor speculative RenderFrameHost; the navigation
405 // was aborted. 417 // was aborted.
406 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); 418 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
407 EXPECT_FALSE(node->navigation_request()); 419 EXPECT_FALSE(node->navigation_request());
408 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 420 EXPECT_FALSE(node->render_manager()->pending_frame_host());
409 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 421 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
410 422
411 // Now, repeat the test with 205 Reset Content. 423 // Now, repeat the test with 205 Reset Content.
412 424
413 // Navigate to a different site again. 425 // Navigate to a different site again.
414 process()->sink().ClearMessages(); 426 process()->sink().ClearMessages();
415 RequestNavigation(node, kUrl2); 427 RequestNavigation(node, kUrl2);
416 main_test_rfh()->SendBeforeUnloadACK(true); 428 main_test_rfh()->SendBeforeUnloadACK(true);
417 429
418 main_request = node->navigation_request(); 430 main_request = node->navigation_request();
419 ASSERT_TRUE(main_request); 431 ASSERT_TRUE(main_request);
420 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 432 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
421 433
422 // Commit an HTTP 205 response. 434 // Commit an HTTP 205 response.
423 response = new ResourceResponse; 435 response = new ResourceResponse;
424 const char kResetContentHeaders[] = "HTTP/1.1 205 Reset Content\0\0"; 436 const char kResetContentHeaders[] = "HTTP/1.1 205 Reset Content\0\0";
425 response->head.headers = new net::HttpResponseHeaders( 437 response->head.headers = new net::HttpResponseHeaders(
426 std::string(kResetContentHeaders, arraysize(kResetContentHeaders))); 438 std::string(kResetContentHeaders, arraysize(kResetContentHeaders)));
427 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( 439 GetLoaderForNavigationRequest(main_request)
428 response, MakeEmptyStream()); 440 ->CallOnResponseStarted(response, MakeEmptyStream(),
441 base::WrapUnique(new TestNavigationData()));
429 442
430 // There should be no pending nor speculative RenderFrameHost; the navigation 443 // There should be no pending nor speculative RenderFrameHost; the navigation
431 // was aborted. 444 // was aborted.
432 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); 445 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
433 EXPECT_FALSE(node->navigation_request()); 446 EXPECT_FALSE(node->navigation_request());
434 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 447 EXPECT_FALSE(node->render_manager()->pending_frame_host());
435 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 448 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
436 } 449 }
437 450
438 // PlzNavigate: Test that a new RenderFrameHost is created when doing a cross 451 // PlzNavigate: Test that a new RenderFrameHost is created when doing a cross
(...skipping 12 matching lines...) Expand all
451 NavigationRequest* main_request = node->navigation_request(); 464 NavigationRequest* main_request = node->navigation_request();
452 ASSERT_TRUE(main_request); 465 ASSERT_TRUE(main_request);
453 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); 466 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node);
454 ASSERT_TRUE(speculative_rfh); 467 ASSERT_TRUE(speculative_rfh);
455 468
456 // Receive the beforeUnload ACK. 469 // Receive the beforeUnload ACK.
457 main_test_rfh()->SendBeforeUnloadACK(true); 470 main_test_rfh()->SendBeforeUnloadACK(true);
458 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); 471 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node));
459 472
460 scoped_refptr<ResourceResponse> response(new ResourceResponse); 473 scoped_refptr<ResourceResponse> response(new ResourceResponse);
461 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( 474 GetLoaderForNavigationRequest(main_request)
462 response, MakeEmptyStream()); 475 ->CallOnResponseStarted(response, MakeEmptyStream(),
476 base::WrapUnique(new TestNavigationData()));
463 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); 477 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node));
464 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); 478 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh));
465 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); 479 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
466 480
467 speculative_rfh->SendNavigate(0, entry_id, true, kUrl2); 481 speculative_rfh->SendNavigate(0, entry_id, true, kUrl2);
468 482
469 RenderFrameHostImpl* final_rfh = main_test_rfh(); 483 RenderFrameHostImpl* final_rfh = main_test_rfh();
470 EXPECT_EQ(speculative_rfh, final_rfh); 484 EXPECT_EQ(speculative_rfh, final_rfh);
471 EXPECT_NE(initial_rfh, final_rfh); 485 EXPECT_NE(initial_rfh, final_rfh);
472 EXPECT_TRUE(final_rfh->IsRenderFrameLive()); 486 EXPECT_TRUE(final_rfh->IsRenderFrameLive());
(...skipping 21 matching lines...) Expand all
494 508
495 // It then redirects to another site. 509 // It then redirects to another site.
496 GetLoaderForNavigationRequest(main_request)->SimulateServerRedirect(kUrl2); 510 GetLoaderForNavigationRequest(main_request)->SimulateServerRedirect(kUrl2);
497 511
498 // The redirect should have been followed. 512 // The redirect should have been followed.
499 EXPECT_EQ(1, GetLoaderForNavigationRequest(main_request)->redirect_count()); 513 EXPECT_EQ(1, GetLoaderForNavigationRequest(main_request)->redirect_count());
500 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 514 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
501 515
502 // Have the RenderFrameHost commit the navigation. 516 // Have the RenderFrameHost commit the navigation.
503 scoped_refptr<ResourceResponse> response(new ResourceResponse); 517 scoped_refptr<ResourceResponse> response(new ResourceResponse);
504 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( 518 GetLoaderForNavigationRequest(main_request)
505 response, MakeEmptyStream()); 519 ->CallOnResponseStarted(response, MakeEmptyStream(),
520 base::WrapUnique(new TestNavigationData()));
506 TestRenderFrameHost* final_speculative_rfh = 521 TestRenderFrameHost* final_speculative_rfh =
507 GetSpeculativeRenderFrameHost(node); 522 GetSpeculativeRenderFrameHost(node);
508 EXPECT_TRUE(final_speculative_rfh); 523 EXPECT_TRUE(final_speculative_rfh);
509 EXPECT_TRUE(DidRenderFrameHostRequestCommit(final_speculative_rfh)); 524 EXPECT_TRUE(DidRenderFrameHostRequestCommit(final_speculative_rfh));
510 525
511 // Commit the navigation. 526 // Commit the navigation.
512 final_speculative_rfh->SendNavigate(0, entry_id, true, kUrl2); 527 final_speculative_rfh->SendNavigate(0, entry_id, true, kUrl2);
513 RenderFrameHostImpl* final_rfh = main_test_rfh(); 528 RenderFrameHostImpl* final_rfh = main_test_rfh();
514 ASSERT_TRUE(final_rfh); 529 ASSERT_TRUE(final_rfh);
515 EXPECT_NE(rfh, final_rfh); 530 EXPECT_NE(rfh, final_rfh);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 581
567 // Confirm that a new speculative RenderFrameHost was created. 582 // Confirm that a new speculative RenderFrameHost was created.
568 speculative_rfh = GetSpeculativeRenderFrameHost(node); 583 speculative_rfh = GetSpeculativeRenderFrameHost(node);
569 ASSERT_TRUE(speculative_rfh); 584 ASSERT_TRUE(speculative_rfh);
570 int32_t site_instance_id_2 = speculative_rfh->GetSiteInstance()->GetId(); 585 int32_t site_instance_id_2 = speculative_rfh->GetSiteInstance()->GetId();
571 EXPECT_NE(site_instance_id_1, site_instance_id_2); 586 EXPECT_NE(site_instance_id_1, site_instance_id_2);
572 587
573 // Have the RenderFrameHost commit the navigation. 588 // Have the RenderFrameHost commit the navigation.
574 scoped_refptr<ResourceResponse> response(new ResourceResponse); 589 scoped_refptr<ResourceResponse> response(new ResourceResponse);
575 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted( 590 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted(
576 response, MakeEmptyStream()); 591 response, MakeEmptyStream(), base::WrapUnique(new TestNavigationData()));
577 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); 592 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh));
578 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); 593 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
579 594
580 // Commit the navigation. 595 // Commit the navigation.
581 speculative_rfh->SendNavigate(0, entry_id, true, kUrl2); 596 speculative_rfh->SendNavigate(0, entry_id, true, kUrl2);
582 597
583 // Confirm that the commit corresponds to the new request. 598 // Confirm that the commit corresponds to the new request.
584 ASSERT_TRUE(main_test_rfh()); 599 ASSERT_TRUE(main_test_rfh());
585 EXPECT_EQ(kUrl2_site, main_test_rfh()->GetSiteInstance()->GetSiteURL()); 600 EXPECT_EQ(kUrl2_site, main_test_rfh()->GetSiteInstance()->GetSiteURL());
586 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 601 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 // Confirm that the speculative RenderFrameHost was destroyed in the non 647 // Confirm that the speculative RenderFrameHost was destroyed in the non
633 // SitePerProcess case. 648 // SitePerProcess case.
634 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 649 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
635 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 650 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
636 } else { 651 } else {
637 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 652 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
638 } 653 }
639 654
640 // Have the RenderFrameHost commit the navigation. 655 // Have the RenderFrameHost commit the navigation.
641 scoped_refptr<ResourceResponse> response(new ResourceResponse); 656 scoped_refptr<ResourceResponse> response(new ResourceResponse);
642 GetLoaderForNavigationRequest(request2) 657 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted(
643 ->CallOnResponseStarted(response, MakeEmptyStream()); 658 response, MakeEmptyStream(), base::WrapUnique(new TestNavigationData()));
644 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 659 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
645 EXPECT_TRUE( 660 EXPECT_TRUE(
646 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node))); 661 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
647 } else { 662 } else {
648 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 663 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
649 } 664 }
650 665
651 // Commit the navigation. 666 // Commit the navigation.
652 main_test_rfh()->SendNavigate(1, 0, true, kUrl2); 667 main_test_rfh()->SendNavigate(1, 0, true, kUrl2);
653 668
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 EXPECT_FALSE(request2->browser_initiated()); 708 EXPECT_FALSE(request2->browser_initiated());
694 EXPECT_TRUE(request2->begin_params().has_user_gesture); 709 EXPECT_TRUE(request2->begin_params().has_user_gesture);
695 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 710 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
696 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 711 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
697 } else { 712 } else {
698 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 713 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
699 } 714 }
700 715
701 // Have the RenderFrameHost commit the navigation. 716 // Have the RenderFrameHost commit the navigation.
702 scoped_refptr<ResourceResponse> response(new ResourceResponse); 717 scoped_refptr<ResourceResponse> response(new ResourceResponse);
703 GetLoaderForNavigationRequest(request2) 718 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted(
704 ->CallOnResponseStarted(response, MakeEmptyStream()); 719 response, MakeEmptyStream(), base::WrapUnique(new TestNavigationData()));
705 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 720 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
706 EXPECT_TRUE( 721 EXPECT_TRUE(
707 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node))); 722 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
708 } else { 723 } else {
709 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 724 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
710 } 725 }
711 726
712 // Commit the navigation. 727 // Commit the navigation.
713 main_test_rfh()->SendNavigate(1, 0, true, kUrl1); 728 main_test_rfh()->SendNavigate(1, 0, true, kUrl1);
714 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); 729 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL());
(...skipping 30 matching lines...) Expand all
745 EXPECT_TRUE(request2->browser_initiated()); 760 EXPECT_TRUE(request2->browser_initiated());
746 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 761 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
747 762
748 // Now receive the beforeUnload ACK from the still ongoing navigation. 763 // Now receive the beforeUnload ACK from the still ongoing navigation.
749 main_test_rfh()->SendBeforeUnloadACK(true); 764 main_test_rfh()->SendBeforeUnloadACK(true);
750 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); 765 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node);
751 ASSERT_TRUE(speculative_rfh); 766 ASSERT_TRUE(speculative_rfh);
752 767
753 // Have the RenderFrameHost commit the navigation. 768 // Have the RenderFrameHost commit the navigation.
754 scoped_refptr<ResourceResponse> response(new ResourceResponse); 769 scoped_refptr<ResourceResponse> response(new ResourceResponse);
755 GetLoaderForNavigationRequest(request2) 770 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted(
756 ->CallOnResponseStarted(response, MakeEmptyStream()); 771 response, MakeEmptyStream(), base::WrapUnique(new TestNavigationData()));
757 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); 772 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh));
758 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); 773 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
759 774
760 // Commit the navigation. 775 // Commit the navigation.
761 speculative_rfh->SendNavigate(0, entry_id, true, kUrl1); 776 speculative_rfh->SendNavigate(0, entry_id, true, kUrl1);
762 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); 777 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL());
763 } 778 }
764 779
765 // PlzNavigate: Test that a renderer-initiated non-user-initiated navigation is 780 // PlzNavigate: Test that a renderer-initiated non-user-initiated navigation is
766 // canceled if a another similar request is issued in the meantime. 781 // canceled if a another similar request is issued in the meantime.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
802 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 817 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
803 } else { 818 } else {
804 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 819 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
805 } 820 }
806 821
807 // Confirm that the first loader got destroyed. 822 // Confirm that the first loader got destroyed.
808 EXPECT_FALSE(loader1); 823 EXPECT_FALSE(loader1);
809 824
810 // Have the RenderFrameHost commit the navigation. 825 // Have the RenderFrameHost commit the navigation.
811 scoped_refptr<ResourceResponse> response(new ResourceResponse); 826 scoped_refptr<ResourceResponse> response(new ResourceResponse);
812 GetLoaderForNavigationRequest(request2) 827 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted(
813 ->CallOnResponseStarted(response, MakeEmptyStream()); 828 response, MakeEmptyStream(), base::WrapUnique(new TestNavigationData()));
814 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 829 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
815 EXPECT_TRUE( 830 EXPECT_TRUE(
816 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node))); 831 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
817 } else { 832 } else {
818 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 833 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
819 } 834 }
820 835
821 // Commit the navigation. 836 // Commit the navigation.
822 main_test_rfh()->SendNavigate(1, 0, true, kUrl2); 837 main_test_rfh()->SendNavigate(1, 0, true, kUrl2);
823 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 838 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); 895 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node));
881 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), 896 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl),
882 speculative_rfh->GetSiteInstance()->GetSiteURL()); 897 speculative_rfh->GetSiteInstance()->GetSiteURL());
883 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 898 EXPECT_FALSE(node->render_manager()->pending_frame_host());
884 int32_t site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); 899 int32_t site_instance_id = speculative_rfh->GetSiteInstance()->GetId();
885 900
886 // Ask Navigator to commit the navigation by simulating a call to 901 // Ask Navigator to commit the navigation by simulating a call to
887 // OnResponseStarted. 902 // OnResponseStarted.
888 scoped_refptr<ResourceResponse> response(new ResourceResponse); 903 scoped_refptr<ResourceResponse> response(new ResourceResponse);
889 GetLoaderForNavigationRequest(node->navigation_request()) 904 GetLoaderForNavigationRequest(node->navigation_request())
890 ->CallOnResponseStarted(response, MakeEmptyStream()); 905 ->CallOnResponseStarted(response, MakeEmptyStream(),
906 base::WrapUnique(new TestNavigationData()));
891 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); 907 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node));
892 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); 908 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh));
893 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); 909 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId());
894 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 910 EXPECT_FALSE(node->render_manager()->pending_frame_host());
895 911
896 // Invoke OnDidCommitProvisionalLoad. 912 // Invoke OnDidCommitProvisionalLoad.
897 speculative_rfh->SendNavigate(0, entry_id, true, kUrl); 913 speculative_rfh->SendNavigate(0, entry_id, true, kUrl);
898 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); 914 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId());
899 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 915 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
900 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 916 EXPECT_FALSE(node->render_manager()->pending_frame_host());
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 // the redirect. 956 // the redirect.
941 // TODO(carlosk): once the speculative RenderFrameHost updates with redirects 957 // TODO(carlosk): once the speculative RenderFrameHost updates with redirects
942 // this next check will be changed to verify that it actually happens. 958 // this next check will be changed to verify that it actually happens.
943 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); 959 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node));
944 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); 960 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId());
945 EXPECT_FALSE(rfh_deleted_observer.deleted()); 961 EXPECT_FALSE(rfh_deleted_observer.deleted());
946 962
947 // Commit the navigation with Navigator by simulating the call to 963 // Commit the navigation with Navigator by simulating the call to
948 // OnResponseStarted. 964 // OnResponseStarted.
949 scoped_refptr<ResourceResponse> response(new ResourceResponse); 965 scoped_refptr<ResourceResponse> response(new ResourceResponse);
966 std::unique_ptr<NavigationData> empty_navigation_data;
950 GetLoaderForNavigationRequest(main_request) 967 GetLoaderForNavigationRequest(main_request)
951 ->CallOnResponseStarted(response, MakeEmptyStream()); 968 ->CallOnResponseStarted(response, MakeEmptyStream(),
969 std::move(empty_navigation_data));
952 speculative_rfh = GetSpeculativeRenderFrameHost(node); 970 speculative_rfh = GetSpeculativeRenderFrameHost(node);
953 ASSERT_TRUE(speculative_rfh); 971 ASSERT_TRUE(speculative_rfh);
954 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); 972 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh));
955 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); 973 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId());
956 EXPECT_TRUE(rfh_deleted_observer.deleted()); 974 EXPECT_TRUE(rfh_deleted_observer.deleted());
957 975
958 // Once commit happens the speculative RenderFrameHost is updated to match the 976 // Once commit happens the speculative RenderFrameHost is updated to match the
959 // known final SiteInstance. 977 // known final SiteInstance.
960 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrlRedirect), 978 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrlRedirect),
961 speculative_rfh->GetSiteInstance()->GetSiteURL()); 979 speculative_rfh->GetSiteInstance()->GetSiteURL());
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
1160 main_test_rfh()->PrepareForCommit(); 1178 main_test_rfh()->PrepareForCommit();
1161 1179
1162 // Claim that the navigation was within same page. 1180 // Claim that the navigation was within same page.
1163 int bad_msg_count = process()->bad_msg_count(); 1181 int bad_msg_count = process()->bad_msg_count();
1164 GetSpeculativeRenderFrameHost(node)->SendNavigateWithModificationCallback( 1182 GetSpeculativeRenderFrameHost(node)->SendNavigateWithModificationCallback(
1165 0, entry_id, true, kUrl2, base::Bind(SetWithinPage, kUrl1)); 1183 0, entry_id, true, kUrl2, base::Bind(SetWithinPage, kUrl1));
1166 EXPECT_EQ(process()->bad_msg_count(), bad_msg_count + 1); 1184 EXPECT_EQ(process()->bad_msg_count(), bad_msg_count + 1);
1167 } 1185 }
1168 1186
1169 } // namespace content 1187 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698