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

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: making NavigationData const after clone 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/time/time.h" 8 #include "base/time/time.h"
9 #include "build/build_config.h" 9 #include "build/build_config.h"
10 #include "content/browser/frame_host/navigation_controller_impl.h" 10 #include "content/browser/frame_host/navigation_controller_impl.h"
11 #include "content/browser/frame_host/navigation_entry_impl.h" 11 #include "content/browser/frame_host/navigation_entry_impl.h"
12 #include "content/browser/frame_host/navigation_request.h" 12 #include "content/browser/frame_host/navigation_request.h"
13 #include "content/browser/frame_host/navigation_request_info.h" 13 #include "content/browser/frame_host/navigation_request_info.h"
14 #include "content/browser/frame_host/navigator.h" 14 #include "content/browser/frame_host/navigator.h"
15 #include "content/browser/frame_host/navigator_impl.h" 15 #include "content/browser/frame_host/navigator_impl.h"
16 #include "content/browser/frame_host/render_frame_host_manager.h" 16 #include "content/browser/frame_host/render_frame_host_manager.h"
17 #include "content/browser/site_instance_impl.h" 17 #include "content/browser/site_instance_impl.h"
18 #include "content/browser/streams/stream.h" 18 #include "content/browser/streams/stream.h"
19 #include "content/common/frame_messages.h" 19 #include "content/common/frame_messages.h"
20 #include "content/common/navigation_params.h" 20 #include "content/common/navigation_params.h"
21 #include "content/common/site_isolation_policy.h" 21 #include "content/common/site_isolation_policy.h"
22 #include "content/public/browser/navigation_data.h"
nasko 2016/05/09 17:35:43 Do we need an include if all calls use nullptr?
RyanSturm 2016/05/09 18:27:31 Because it's a unique_ptr param the compiler has t
nasko 2016/05/09 18:40:46 Acknowledged.
22 #include "content/public/browser/stream_handle.h" 23 #include "content/public/browser/stream_handle.h"
23 #include "content/public/common/url_constants.h" 24 #include "content/public/common/url_constants.h"
24 #include "content/public/common/url_utils.h" 25 #include "content/public/common/url_utils.h"
25 #include "content/public/test/mock_render_process_host.h" 26 #include "content/public/test/mock_render_process_host.h"
26 #include "content/public/test/test_utils.h" 27 #include "content/public/test/test_utils.h"
27 #include "content/test/browser_side_navigation_test_utils.h" 28 #include "content/test/browser_side_navigation_test_utils.h"
28 #include "content/test/test_navigation_url_loader.h" 29 #include "content/test/test_navigation_url_loader.h"
29 #include "content/test/test_render_frame_host.h" 30 #include "content/test/test_render_frame_host.h"
30 #include "content/test/test_web_contents.h" 31 #include "content/test/test_web_contents.h"
31 #include "net/base/load_flags.h" 32 #include "net/base/load_flags.h"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 137
137 // As there's no live renderer the navigation should not wait for a 138 // As there's no live renderer the navigation should not wait for a
138 // beforeUnload ACK from the renderer and start right away. 139 // beforeUnload ACK from the renderer and start right away.
139 EXPECT_EQ(NavigationRequest::STARTED, request->state()); 140 EXPECT_EQ(NavigationRequest::STARTED, request->state());
140 ASSERT_TRUE(GetLoaderForNavigationRequest(request)); 141 ASSERT_TRUE(GetLoaderForNavigationRequest(request));
141 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 142 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
142 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 143 EXPECT_FALSE(node->render_manager()->pending_frame_host());
143 144
144 // Have the current RenderFrameHost commit the navigation. 145 // Have the current RenderFrameHost commit the navigation.
145 scoped_refptr<ResourceResponse> response(new ResourceResponse); 146 scoped_refptr<ResourceResponse> response(new ResourceResponse);
146 GetLoaderForNavigationRequest(request) 147 GetLoaderForNavigationRequest(request)->CallOnResponseStarted(
147 ->CallOnResponseStarted(response, MakeEmptyStream()); 148 response, MakeEmptyStream(), nullptr);
148 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 149 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
149 EXPECT_TRUE(main_test_rfh()->is_loading()); 150 EXPECT_TRUE(main_test_rfh()->is_loading());
150 EXPECT_FALSE(node->navigation_request()); 151 EXPECT_FALSE(node->navigation_request());
151 152
152 // Commit the navigation. 153 // Commit the navigation.
153 main_test_rfh()->SendNavigate(0, entry_id, true, kUrl); 154 main_test_rfh()->SendNavigate(0, entry_id, true, kUrl);
154 EXPECT_TRUE(main_test_rfh()->is_active()); 155 EXPECT_TRUE(main_test_rfh()->is_active());
155 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), 156 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl),
156 main_test_rfh()->GetSiteInstance()->GetSiteURL()); 157 main_test_rfh()->GetSiteInstance()->GetSiteURL());
157 EXPECT_EQ(kUrl, contents()->GetLastCommittedURL()); 158 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 190 // The navigation is immediately started as there's no need to wait for
190 // beforeUnload to be executed. 191 // beforeUnload to be executed.
191 EXPECT_EQ(NavigationRequest::STARTED, request->state()); 192 EXPECT_EQ(NavigationRequest::STARTED, request->state());
192 EXPECT_FALSE(request->begin_params().has_user_gesture); 193 EXPECT_FALSE(request->begin_params().has_user_gesture);
193 EXPECT_EQ(kUrl2, request->common_params().url); 194 EXPECT_EQ(kUrl2, request->common_params().url);
194 EXPECT_FALSE(request->browser_initiated()); 195 EXPECT_FALSE(request->browser_initiated());
195 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 196 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
196 197
197 // Have the current RenderFrameHost commit the navigation. 198 // Have the current RenderFrameHost commit the navigation.
198 scoped_refptr<ResourceResponse> response(new ResourceResponse); 199 scoped_refptr<ResourceResponse> response(new ResourceResponse);
199 GetLoaderForNavigationRequest(request) 200 GetLoaderForNavigationRequest(request)->CallOnResponseStarted(
200 ->CallOnResponseStarted(response, MakeEmptyStream()); 201 response, MakeEmptyStream(), nullptr);
201 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 202 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
202 EXPECT_TRUE(main_test_rfh()->is_loading()); 203 EXPECT_TRUE(main_test_rfh()->is_loading());
203 EXPECT_FALSE(node->navigation_request()); 204 EXPECT_FALSE(node->navigation_request());
204 205
205 // Commit the navigation. 206 // Commit the navigation.
206 main_test_rfh()->SendNavigate(1, 0, true, kUrl2); 207 main_test_rfh()->SendNavigate(1, 0, true, kUrl2);
207 EXPECT_TRUE(main_test_rfh()->is_active()); 208 EXPECT_TRUE(main_test_rfh()->is_active());
208 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl2), 209 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl2),
209 main_test_rfh()->GetSiteInstance()->GetSiteURL()); 210 main_test_rfh()->GetSiteInstance()->GetSiteURL());
210 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 211 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
(...skipping 27 matching lines...) Expand all
238 EXPECT_EQ(kUrl2, request->common_params().url); 239 EXPECT_EQ(kUrl2, request->common_params().url);
239 EXPECT_FALSE(request->browser_initiated()); 240 EXPECT_FALSE(request->browser_initiated());
240 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 241 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
241 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 242 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
242 } else { 243 } else {
243 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 244 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
244 } 245 }
245 246
246 // Have the current RenderFrameHost commit the navigation. 247 // Have the current RenderFrameHost commit the navigation.
247 scoped_refptr<ResourceResponse> response(new ResourceResponse); 248 scoped_refptr<ResourceResponse> response(new ResourceResponse);
248 GetLoaderForNavigationRequest(request) 249 GetLoaderForNavigationRequest(request)->CallOnResponseStarted(
249 ->CallOnResponseStarted(response, MakeEmptyStream()); 250 response, MakeEmptyStream(), nullptr);
250 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 251 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
251 EXPECT_TRUE( 252 EXPECT_TRUE(
252 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node))); 253 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
253 } else { 254 } else {
254 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 255 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
255 } 256 }
256 EXPECT_TRUE(main_test_rfh()->is_loading()); 257 EXPECT_TRUE(main_test_rfh()->is_loading());
257 EXPECT_FALSE(node->navigation_request()); 258 EXPECT_FALSE(node->navigation_request());
258 259
259 // Commit the navigation. 260 // Commit the navigation.
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 ASSERT_TRUE(main_request); 392 ASSERT_TRUE(main_request);
392 393
393 // Navigations to a different site do create a speculative RenderFrameHost. 394 // Navigations to a different site do create a speculative RenderFrameHost.
394 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 395 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
395 396
396 // Commit an HTTP 204 response. 397 // Commit an HTTP 204 response.
397 scoped_refptr<ResourceResponse> response(new ResourceResponse); 398 scoped_refptr<ResourceResponse> response(new ResourceResponse);
398 const char kNoContentHeaders[] = "HTTP/1.1 204 No Content\0\0"; 399 const char kNoContentHeaders[] = "HTTP/1.1 204 No Content\0\0";
399 response->head.headers = new net::HttpResponseHeaders( 400 response->head.headers = new net::HttpResponseHeaders(
400 std::string(kNoContentHeaders, arraysize(kNoContentHeaders))); 401 std::string(kNoContentHeaders, arraysize(kNoContentHeaders)));
401 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( 402 GetLoaderForNavigationRequest(main_request)
402 response, MakeEmptyStream()); 403 ->CallOnResponseStarted(response, MakeEmptyStream(), nullptr);
403 404
404 // There should be no pending nor speculative RenderFrameHost; the navigation 405 // There should be no pending nor speculative RenderFrameHost; the navigation
405 // was aborted. 406 // was aborted.
406 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); 407 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
407 EXPECT_FALSE(node->navigation_request()); 408 EXPECT_FALSE(node->navigation_request());
408 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 409 EXPECT_FALSE(node->render_manager()->pending_frame_host());
409 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 410 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
410 411
411 // Now, repeat the test with 205 Reset Content. 412 // Now, repeat the test with 205 Reset Content.
412 413
413 // Navigate to a different site again. 414 // Navigate to a different site again.
414 process()->sink().ClearMessages(); 415 process()->sink().ClearMessages();
415 RequestNavigation(node, kUrl2); 416 RequestNavigation(node, kUrl2);
416 main_test_rfh()->SendBeforeUnloadACK(true); 417 main_test_rfh()->SendBeforeUnloadACK(true);
417 418
418 main_request = node->navigation_request(); 419 main_request = node->navigation_request();
419 ASSERT_TRUE(main_request); 420 ASSERT_TRUE(main_request);
420 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 421 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
421 422
422 // Commit an HTTP 205 response. 423 // Commit an HTTP 205 response.
423 response = new ResourceResponse; 424 response = new ResourceResponse;
424 const char kResetContentHeaders[] = "HTTP/1.1 205 Reset Content\0\0"; 425 const char kResetContentHeaders[] = "HTTP/1.1 205 Reset Content\0\0";
425 response->head.headers = new net::HttpResponseHeaders( 426 response->head.headers = new net::HttpResponseHeaders(
426 std::string(kResetContentHeaders, arraysize(kResetContentHeaders))); 427 std::string(kResetContentHeaders, arraysize(kResetContentHeaders)));
427 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( 428 GetLoaderForNavigationRequest(main_request)
428 response, MakeEmptyStream()); 429 ->CallOnResponseStarted(response, MakeEmptyStream(), nullptr);
429 430
430 // There should be no pending nor speculative RenderFrameHost; the navigation 431 // There should be no pending nor speculative RenderFrameHost; the navigation
431 // was aborted. 432 // was aborted.
432 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); 433 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
433 EXPECT_FALSE(node->navigation_request()); 434 EXPECT_FALSE(node->navigation_request());
434 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 435 EXPECT_FALSE(node->render_manager()->pending_frame_host());
435 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 436 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
436 } 437 }
437 438
438 // PlzNavigate: Test that a new RenderFrameHost is created when doing a cross 439 // 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(); 452 NavigationRequest* main_request = node->navigation_request();
452 ASSERT_TRUE(main_request); 453 ASSERT_TRUE(main_request);
453 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); 454 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node);
454 ASSERT_TRUE(speculative_rfh); 455 ASSERT_TRUE(speculative_rfh);
455 456
456 // Receive the beforeUnload ACK. 457 // Receive the beforeUnload ACK.
457 main_test_rfh()->SendBeforeUnloadACK(true); 458 main_test_rfh()->SendBeforeUnloadACK(true);
458 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); 459 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node));
459 460
460 scoped_refptr<ResourceResponse> response(new ResourceResponse); 461 scoped_refptr<ResourceResponse> response(new ResourceResponse);
461 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( 462 GetLoaderForNavigationRequest(main_request)
462 response, MakeEmptyStream()); 463 ->CallOnResponseStarted(response, MakeEmptyStream(), nullptr);
463 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); 464 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node));
464 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); 465 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh));
465 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); 466 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
466 467
467 speculative_rfh->SendNavigate(0, entry_id, true, kUrl2); 468 speculative_rfh->SendNavigate(0, entry_id, true, kUrl2);
468 469
469 RenderFrameHostImpl* final_rfh = main_test_rfh(); 470 RenderFrameHostImpl* final_rfh = main_test_rfh();
470 EXPECT_EQ(speculative_rfh, final_rfh); 471 EXPECT_EQ(speculative_rfh, final_rfh);
471 EXPECT_NE(initial_rfh, final_rfh); 472 EXPECT_NE(initial_rfh, final_rfh);
472 EXPECT_TRUE(final_rfh->IsRenderFrameLive()); 473 EXPECT_TRUE(final_rfh->IsRenderFrameLive());
(...skipping 21 matching lines...) Expand all
494 495
495 // It then redirects to another site. 496 // It then redirects to another site.
496 GetLoaderForNavigationRequest(main_request)->SimulateServerRedirect(kUrl2); 497 GetLoaderForNavigationRequest(main_request)->SimulateServerRedirect(kUrl2);
497 498
498 // The redirect should have been followed. 499 // The redirect should have been followed.
499 EXPECT_EQ(1, GetLoaderForNavigationRequest(main_request)->redirect_count()); 500 EXPECT_EQ(1, GetLoaderForNavigationRequest(main_request)->redirect_count());
500 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 501 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
501 502
502 // Have the RenderFrameHost commit the navigation. 503 // Have the RenderFrameHost commit the navigation.
503 scoped_refptr<ResourceResponse> response(new ResourceResponse); 504 scoped_refptr<ResourceResponse> response(new ResourceResponse);
504 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( 505 GetLoaderForNavigationRequest(main_request)
505 response, MakeEmptyStream()); 506 ->CallOnResponseStarted(response, MakeEmptyStream(), nullptr);
506 TestRenderFrameHost* final_speculative_rfh = 507 TestRenderFrameHost* final_speculative_rfh =
507 GetSpeculativeRenderFrameHost(node); 508 GetSpeculativeRenderFrameHost(node);
508 EXPECT_TRUE(final_speculative_rfh); 509 EXPECT_TRUE(final_speculative_rfh);
509 EXPECT_TRUE(DidRenderFrameHostRequestCommit(final_speculative_rfh)); 510 EXPECT_TRUE(DidRenderFrameHostRequestCommit(final_speculative_rfh));
510 511
511 // Commit the navigation. 512 // Commit the navigation.
512 final_speculative_rfh->SendNavigate(0, entry_id, true, kUrl2); 513 final_speculative_rfh->SendNavigate(0, entry_id, true, kUrl2);
513 RenderFrameHostImpl* final_rfh = main_test_rfh(); 514 RenderFrameHostImpl* final_rfh = main_test_rfh();
514 ASSERT_TRUE(final_rfh); 515 ASSERT_TRUE(final_rfh);
515 EXPECT_NE(rfh, final_rfh); 516 EXPECT_NE(rfh, final_rfh);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 567
567 // Confirm that a new speculative RenderFrameHost was created. 568 // Confirm that a new speculative RenderFrameHost was created.
568 speculative_rfh = GetSpeculativeRenderFrameHost(node); 569 speculative_rfh = GetSpeculativeRenderFrameHost(node);
569 ASSERT_TRUE(speculative_rfh); 570 ASSERT_TRUE(speculative_rfh);
570 int32_t site_instance_id_2 = speculative_rfh->GetSiteInstance()->GetId(); 571 int32_t site_instance_id_2 = speculative_rfh->GetSiteInstance()->GetId();
571 EXPECT_NE(site_instance_id_1, site_instance_id_2); 572 EXPECT_NE(site_instance_id_1, site_instance_id_2);
572 573
573 // Have the RenderFrameHost commit the navigation. 574 // Have the RenderFrameHost commit the navigation.
574 scoped_refptr<ResourceResponse> response(new ResourceResponse); 575 scoped_refptr<ResourceResponse> response(new ResourceResponse);
575 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted( 576 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted(
576 response, MakeEmptyStream()); 577 response, MakeEmptyStream(), nullptr);
577 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); 578 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh));
578 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); 579 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
579 580
580 // Commit the navigation. 581 // Commit the navigation.
581 speculative_rfh->SendNavigate(0, entry_id, true, kUrl2); 582 speculative_rfh->SendNavigate(0, entry_id, true, kUrl2);
582 583
583 // Confirm that the commit corresponds to the new request. 584 // Confirm that the commit corresponds to the new request.
584 ASSERT_TRUE(main_test_rfh()); 585 ASSERT_TRUE(main_test_rfh());
585 EXPECT_EQ(kUrl2_site, main_test_rfh()->GetSiteInstance()->GetSiteURL()); 586 EXPECT_EQ(kUrl2_site, main_test_rfh()->GetSiteInstance()->GetSiteURL());
586 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 587 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 633 // Confirm that the speculative RenderFrameHost was destroyed in the non
633 // SitePerProcess case. 634 // SitePerProcess case.
634 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 635 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
635 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 636 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
636 } else { 637 } else {
637 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 638 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
638 } 639 }
639 640
640 // Have the RenderFrameHost commit the navigation. 641 // Have the RenderFrameHost commit the navigation.
641 scoped_refptr<ResourceResponse> response(new ResourceResponse); 642 scoped_refptr<ResourceResponse> response(new ResourceResponse);
642 GetLoaderForNavigationRequest(request2) 643 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted(
643 ->CallOnResponseStarted(response, MakeEmptyStream()); 644 response, MakeEmptyStream(), nullptr);
644 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 645 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
645 EXPECT_TRUE( 646 EXPECT_TRUE(
646 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node))); 647 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
647 } else { 648 } else {
648 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 649 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
649 } 650 }
650 651
651 // Commit the navigation. 652 // Commit the navigation.
652 main_test_rfh()->SendNavigate(1, 0, true, kUrl2); 653 main_test_rfh()->SendNavigate(1, 0, true, kUrl2);
653 654
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 EXPECT_FALSE(request2->browser_initiated()); 694 EXPECT_FALSE(request2->browser_initiated());
694 EXPECT_TRUE(request2->begin_params().has_user_gesture); 695 EXPECT_TRUE(request2->begin_params().has_user_gesture);
695 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 696 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
696 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 697 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
697 } else { 698 } else {
698 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 699 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
699 } 700 }
700 701
701 // Have the RenderFrameHost commit the navigation. 702 // Have the RenderFrameHost commit the navigation.
702 scoped_refptr<ResourceResponse> response(new ResourceResponse); 703 scoped_refptr<ResourceResponse> response(new ResourceResponse);
703 GetLoaderForNavigationRequest(request2) 704 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted(
704 ->CallOnResponseStarted(response, MakeEmptyStream()); 705 response, MakeEmptyStream(), nullptr);
705 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 706 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
706 EXPECT_TRUE( 707 EXPECT_TRUE(
707 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node))); 708 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
708 } else { 709 } else {
709 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 710 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
710 } 711 }
711 712
712 // Commit the navigation. 713 // Commit the navigation.
713 main_test_rfh()->SendNavigate(1, 0, true, kUrl1); 714 main_test_rfh()->SendNavigate(1, 0, true, kUrl1);
714 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); 715 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL());
(...skipping 30 matching lines...) Expand all
745 EXPECT_TRUE(request2->browser_initiated()); 746 EXPECT_TRUE(request2->browser_initiated());
746 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 747 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
747 748
748 // Now receive the beforeUnload ACK from the still ongoing navigation. 749 // Now receive the beforeUnload ACK from the still ongoing navigation.
749 main_test_rfh()->SendBeforeUnloadACK(true); 750 main_test_rfh()->SendBeforeUnloadACK(true);
750 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); 751 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node);
751 ASSERT_TRUE(speculative_rfh); 752 ASSERT_TRUE(speculative_rfh);
752 753
753 // Have the RenderFrameHost commit the navigation. 754 // Have the RenderFrameHost commit the navigation.
754 scoped_refptr<ResourceResponse> response(new ResourceResponse); 755 scoped_refptr<ResourceResponse> response(new ResourceResponse);
755 GetLoaderForNavigationRequest(request2) 756 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted(
756 ->CallOnResponseStarted(response, MakeEmptyStream()); 757 response, MakeEmptyStream(), nullptr);
757 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); 758 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh));
758 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); 759 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
759 760
760 // Commit the navigation. 761 // Commit the navigation.
761 speculative_rfh->SendNavigate(0, entry_id, true, kUrl1); 762 speculative_rfh->SendNavigate(0, entry_id, true, kUrl1);
762 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); 763 EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL());
763 } 764 }
764 765
765 // PlzNavigate: Test that a renderer-initiated non-user-initiated navigation is 766 // PlzNavigate: Test that a renderer-initiated non-user-initiated navigation is
766 // canceled if a another similar request is issued in the meantime. 767 // 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)); 803 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
803 } else { 804 } else {
804 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 805 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
805 } 806 }
806 807
807 // Confirm that the first loader got destroyed. 808 // Confirm that the first loader got destroyed.
808 EXPECT_FALSE(loader1); 809 EXPECT_FALSE(loader1);
809 810
810 // Have the RenderFrameHost commit the navigation. 811 // Have the RenderFrameHost commit the navigation.
811 scoped_refptr<ResourceResponse> response(new ResourceResponse); 812 scoped_refptr<ResourceResponse> response(new ResourceResponse);
812 GetLoaderForNavigationRequest(request2) 813 GetLoaderForNavigationRequest(request2)->CallOnResponseStarted(
813 ->CallOnResponseStarted(response, MakeEmptyStream()); 814 response, MakeEmptyStream(), nullptr);
814 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) { 815 if (SiteIsolationPolicy::AreCrossProcessFramesPossible()) {
815 EXPECT_TRUE( 816 EXPECT_TRUE(
816 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node))); 817 DidRenderFrameHostRequestCommit(GetSpeculativeRenderFrameHost(node)));
817 } else { 818 } else {
818 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 819 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
819 } 820 }
820 821
821 // Commit the navigation. 822 // Commit the navigation.
822 main_test_rfh()->SendNavigate(1, 0, true, kUrl2); 823 main_test_rfh()->SendNavigate(1, 0, true, kUrl2);
823 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 824 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); 881 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node));
881 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), 882 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl),
882 speculative_rfh->GetSiteInstance()->GetSiteURL()); 883 speculative_rfh->GetSiteInstance()->GetSiteURL());
883 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 884 EXPECT_FALSE(node->render_manager()->pending_frame_host());
884 int32_t site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); 885 int32_t site_instance_id = speculative_rfh->GetSiteInstance()->GetId();
885 886
886 // Ask Navigator to commit the navigation by simulating a call to 887 // Ask Navigator to commit the navigation by simulating a call to
887 // OnResponseStarted. 888 // OnResponseStarted.
888 scoped_refptr<ResourceResponse> response(new ResourceResponse); 889 scoped_refptr<ResourceResponse> response(new ResourceResponse);
889 GetLoaderForNavigationRequest(node->navigation_request()) 890 GetLoaderForNavigationRequest(node->navigation_request())
890 ->CallOnResponseStarted(response, MakeEmptyStream()); 891 ->CallOnResponseStarted(response, MakeEmptyStream(), nullptr);
891 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); 892 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node));
892 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); 893 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh));
893 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); 894 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId());
894 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 895 EXPECT_FALSE(node->render_manager()->pending_frame_host());
895 896
896 // Invoke OnDidCommitProvisionalLoad. 897 // Invoke OnDidCommitProvisionalLoad.
897 speculative_rfh->SendNavigate(0, entry_id, true, kUrl); 898 speculative_rfh->SendNavigate(0, entry_id, true, kUrl);
898 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); 899 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId());
899 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 900 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
900 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 901 EXPECT_FALSE(node->render_manager()->pending_frame_host());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
941 // TODO(carlosk): once the speculative RenderFrameHost updates with redirects 942 // TODO(carlosk): once the speculative RenderFrameHost updates with redirects
942 // this next check will be changed to verify that it actually happens. 943 // this next check will be changed to verify that it actually happens.
943 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); 944 EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node));
944 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); 945 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId());
945 EXPECT_FALSE(rfh_deleted_observer.deleted()); 946 EXPECT_FALSE(rfh_deleted_observer.deleted());
946 947
947 // Commit the navigation with Navigator by simulating the call to 948 // Commit the navigation with Navigator by simulating the call to
948 // OnResponseStarted. 949 // OnResponseStarted.
949 scoped_refptr<ResourceResponse> response(new ResourceResponse); 950 scoped_refptr<ResourceResponse> response(new ResourceResponse);
950 GetLoaderForNavigationRequest(main_request) 951 GetLoaderForNavigationRequest(main_request)
951 ->CallOnResponseStarted(response, MakeEmptyStream()); 952 ->CallOnResponseStarted(response, MakeEmptyStream(), nullptr);
952 speculative_rfh = GetSpeculativeRenderFrameHost(node); 953 speculative_rfh = GetSpeculativeRenderFrameHost(node);
953 ASSERT_TRUE(speculative_rfh); 954 ASSERT_TRUE(speculative_rfh);
954 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); 955 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh));
955 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); 956 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId());
956 EXPECT_TRUE(rfh_deleted_observer.deleted()); 957 EXPECT_TRUE(rfh_deleted_observer.deleted());
957 958
958 // Once commit happens the speculative RenderFrameHost is updated to match the 959 // Once commit happens the speculative RenderFrameHost is updated to match the
959 // known final SiteInstance. 960 // known final SiteInstance.
960 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrlRedirect), 961 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrlRedirect),
961 speculative_rfh->GetSiteInstance()->GetSiteURL()); 962 speculative_rfh->GetSiteInstance()->GetSiteURL());
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
1160 main_test_rfh()->PrepareForCommit(); 1161 main_test_rfh()->PrepareForCommit();
1161 1162
1162 // Claim that the navigation was within same page. 1163 // Claim that the navigation was within same page.
1163 int bad_msg_count = process()->bad_msg_count(); 1164 int bad_msg_count = process()->bad_msg_count();
1164 GetSpeculativeRenderFrameHost(node)->SendNavigateWithModificationCallback( 1165 GetSpeculativeRenderFrameHost(node)->SendNavigateWithModificationCallback(
1165 0, entry_id, true, kUrl2, base::Bind(SetWithinPage, kUrl1)); 1166 0, entry_id, true, kUrl2, base::Bind(SetWithinPage, kUrl1));
1166 EXPECT_EQ(process()->bad_msg_count(), bad_msg_count + 1); 1167 EXPECT_EQ(process()->bad_msg_count(), bad_msg_count + 1);
1167 } 1168 }
1168 1169
1169 } // namespace content 1170 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698