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/browser/frame_host/navigation_controller_impl_browsertest.cc

Issue 1672373002: Don't rely on the pending NavigationEntry for location.replace. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix merge conflict Created 4 years, 10 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 "content/browser/frame_host/navigation_controller_impl.h" 5 #include "content/browser/frame_host/navigation_controller_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after
646 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); 646 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
647 NavigationEntry* entry = controller.GetLastCommittedEntry(); 647 NavigationEntry* entry = controller.GetLastCommittedEntry();
648 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType()); 648 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType());
649 EXPECT_EQ(2, controller.GetEntryCount()); 649 EXPECT_EQ(2, controller.GetEntryCount());
650 } 650 }
651 651
652 // Make a new entry ... 652 // Make a new entry ...
653 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); 653 NavigateToURL(shell(), GURL(url::kAboutBlankURL));
654 EXPECT_EQ(3, controller.GetEntryCount()); 654 EXPECT_EQ(3, controller.GetEntryCount());
655 655
656 // ... and replace it with a failed load. (Note that when you set the 656 // ... and replace it with a failed load.
657 // should_replace_current_entry flag, the navigation is classified as NEW_PAGE 657 // TODO(creis): Make this be NEW_PAGE along with the other location.replace
658 // because that is a classification of the renderer's behavior, and the flag 658 // cases. There isn't much impact to having this be EXISTING_PAGE for now.
659 // is a browser-side flag.) 659 // See https://crbug.com/317812.
Avi (use Gerrit) 2016/02/08 16:02:29 Wrong bug #; 317872.
Charlie Reis 2016/02/08 17:13:21 Done.
660 { 660 {
661 FrameNavigateParamsCapturer capturer(root); 661 FrameNavigateParamsCapturer capturer(root);
662 NavigateToURLAndReplace(shell(), error_url); 662 NavigateToURLAndReplace(shell(), error_url);
663 capturer.Wait(); 663 capturer.Wait();
664 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); 664 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
665 NavigationEntry* entry = controller.GetLastCommittedEntry(); 665 NavigationEntry* entry = controller.GetLastCommittedEntry();
666 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType()); 666 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType());
667 EXPECT_EQ(3, controller.GetEntryCount()); 667 EXPECT_EQ(3, controller.GetEntryCount());
668 } 668 }
669 669
670 // Make a new web ui page to force a process swap ... 670 // Make a new web ui page to force a process swap ...
671 GURL web_ui_page(std::string(kChromeUIScheme) + "://" + 671 GURL web_ui_page(std::string(kChromeUIScheme) + "://" +
672 std::string(kChromeUIGpuHost)); 672 std::string(kChromeUIGpuHost));
673 NavigateToURL(shell(), web_ui_page); 673 NavigateToURL(shell(), web_ui_page);
674 EXPECT_EQ(4, controller.GetEntryCount()); 674 EXPECT_EQ(4, controller.GetEntryCount());
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
754 FrameNavigateParamsCapturer capturer(root); 754 FrameNavigateParamsCapturer capturer(root);
755 std::string script = 755 std::string script =
756 "history.pushState({}, 'page 1', 'simple_page_1.html')"; 756 "history.pushState({}, 'page 1', 'simple_page_1.html')";
757 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script)); 757 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
758 capturer.Wait(); 758 capturer.Wait();
759 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT, 759 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
760 capturer.params().transition); 760 capturer.params().transition);
761 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); 761 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
762 EXPECT_TRUE(capturer.details().is_in_page); 762 EXPECT_TRUE(capturer.details().is_in_page);
763 } 763 }
764
765 if (AreAllSitesIsolatedForTesting()) {
766 // Cross-process location.replace().
767 FrameNavigateParamsCapturer capturer(root);
768 GURL frame_url(embedded_test_server()->GetURL(
769 "foo.com", "/navigation_controller/simple_page_1.html"));
770 std::string script = "location.replace('" + frame_url.spec() + "')";
771 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
772 capturer.Wait();
773 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
774 capturer.params().transition);
775 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
776 EXPECT_FALSE(capturer.details().is_in_page);
777 }
764 } 778 }
765 779
766 // Verify that navigations for NAVIGATION_TYPE_EXISTING_PAGE are correctly 780 // Verify that navigations for NAVIGATION_TYPE_EXISTING_PAGE are correctly
767 // classified. 781 // classified.
768 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, 782 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
769 NavigationTypeClassification_ExistingPage) { 783 NavigationTypeClassification_ExistingPage) {
770 GURL url1(embedded_test_server()->GetURL( 784 GURL url1(embedded_test_server()->GetURL(
771 "/navigation_controller/simple_page_1.html")); 785 "/navigation_controller/simple_page_1.html"));
772 NavigateToURL(shell(), url1); 786 NavigateToURL(shell(), url1);
773 GURL url2(embedded_test_server()->GetURL( 787 GURL url2(embedded_test_server()->GetURL(
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
877 "location.reload()")); 891 "location.reload()"));
878 capturer.Wait(); 892 capturer.Wait();
879 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT, 893 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
880 capturer.params().transition); 894 capturer.params().transition);
881 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); 895 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
882 EXPECT_FALSE(capturer.details().is_in_page); 896 EXPECT_FALSE(capturer.details().is_in_page);
883 } 897 }
884 898
885 { 899 {
886 // location.replace(). 900 // location.replace().
901 // TODO(creis): Change this to be NEW_PAGE with replacement in
902 // https://crbug.com/317872.
887 FrameNavigateParamsCapturer capturer(root); 903 FrameNavigateParamsCapturer capturer(root);
888 GURL frame_url(embedded_test_server()->GetURL( 904 GURL frame_url(embedded_test_server()->GetURL(
889 "/navigation_controller/simple_page_1.html")); 905 "/navigation_controller/simple_page_1.html"));
890 std::string script = "location.replace('" + frame_url.spec() + "')"; 906 std::string script = "location.replace('" + frame_url.spec() + "')";
891 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script)); 907 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
892 capturer.Wait(); 908 capturer.Wait();
893 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT, 909 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
894 capturer.params().transition); 910 capturer.params().transition);
895 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); 911 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
896 EXPECT_FALSE(capturer.details().is_in_page); 912 EXPECT_FALSE(capturer.details().is_in_page);
(...skipping 2461 matching lines...) Expand 10 before | Expand all | Expand 10 after
3358 observer.Wait(); 3374 observer.Wait();
3359 3375
3360 EXPECT_EQ(3, controller.GetEntryCount()); 3376 EXPECT_EQ(3, controller.GetEntryCount());
3361 EXPECT_EQ(3, RendererHistoryLength(shell())); 3377 EXPECT_EQ(3, RendererHistoryLength(shell()));
3362 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); 3378 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex());
3363 3379
3364 EXPECT_EQ(frame_url_1, frame->current_url()); 3380 EXPECT_EQ(frame_url_1, frame->current_url());
3365 } 3381 }
3366 3382
3367 } // namespace content 3383 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698