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

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

Issue 2889003002: Change NavigationEntry to use virtual URL in error pages for blocked navigations (Closed)
Patch Set: Add a test for reload. Created 3 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 "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 <algorithm> 8 #include <algorithm>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 6809 matching lines...) Expand 10 before | Expand all | Expand 10 after
6820 6820
6821 EXPECT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete()); 6821 EXPECT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete());
6822 6822
6823 TestNavigationObserver back_observer(shell()->web_contents()); 6823 TestNavigationObserver back_observer(shell()->web_contents());
6824 controller.GoBack(); 6824 controller.GoBack();
6825 back_observer.Wait(); 6825 back_observer.Wait();
6826 6826
6827 EXPECT_TRUE(back_observer.last_navigation_succeeded()); 6827 EXPECT_TRUE(back_observer.last_navigation_succeeded());
6828 } 6828 }
6829 6829
6830 // Test to verify that navigating to a blocked URL does not result in a
6831 // NavigationEntry that allows the navigation to succeed when using a history
6832 // navigation or a reload. See https://crbug.com/723796.
6833 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
6834 VerifyBlockedErrorPageURL_History) {
Charlie Reis 2017/05/18 22:41:46 Just curious, how is this different from the earli
nasko 2017/05/18 22:55:11 The goal is to use a navigation different than the
Charlie Reis 2017/05/18 23:15:51 Acknowledged.
6835 NavigationControllerImpl& controller = static_cast<NavigationControllerImpl&>(
6836 shell()->web_contents()->GetController());
6837
6838 GURL start_url(embedded_test_server()->GetURL("/title1.html"));
6839 EXPECT_TRUE(NavigateToURL(shell(), start_url));
6840 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex());
6841
6842 // Navigate to an URL, which redirects to a data: URL, since it is an
6843 // unsafe redirect and will result in a blocked navigation and error page.
6844 GURL redirect_to_blank_url(
6845 embedded_test_server()->GetURL("/server-redirect?data:foo"));
6846 EXPECT_FALSE(NavigateToURL(shell(), redirect_to_blank_url));
6847 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex());
6848 EXPECT_EQ(PAGE_TYPE_ERROR, controller.GetLastCommittedEntry()->GetPageType());
6849
6850 // Navigate to a new document, then go back in history trying to load the
6851 // blocked URL.
6852 EXPECT_TRUE(
6853 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")));
6854 EXPECT_EQ(2, controller.GetLastCommittedEntryIndex());
6855
6856 TestNavigationObserver back_load_observer(shell()->web_contents());
6857 controller.GoBack();
6858 back_load_observer.Wait();
6859
6860 // The expectation is that about:blank was loaded and the virtual URL is set
6861 // to the URL that was blocked.
6862 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex());
6863 EXPECT_FALSE(
6864 controller.GetLastCommittedEntry()->GetURL().SchemeIs(url::kDataScheme));
6865 EXPECT_TRUE(controller.GetLastCommittedEntry()->GetVirtualURL().SchemeIs(
6866 url::kDataScheme));
6867 EXPECT_EQ(url::kAboutBlankURL,
6868 controller.GetLastCommittedEntry()->GetURL().spec());
6869 }
6870
6871 // The same as the test above, but uses reload instead of history navigation.
6872 // See https://crbug.com/723796.
6873 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
6874 VerifyBlockedErrorPageURL_Reload) {
6875 NavigationControllerImpl& controller = static_cast<NavigationControllerImpl&>(
6876 shell()->web_contents()->GetController());
6877
6878 GURL start_url(embedded_test_server()->GetURL("/title1.html"));
6879 EXPECT_TRUE(NavigateToURL(shell(), start_url));
6880 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex());
6881
6882 // Navigate to an URL, which redirects to a data: URL, since it is an
6883 // unsafe redirect and will result in a blocked navigation and error page.
6884 GURL redirect_to_blank_url(
6885 embedded_test_server()->GetURL("/server-redirect?data:foo"));
6886 EXPECT_FALSE(NavigateToURL(shell(), redirect_to_blank_url));
6887 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex());
6888 EXPECT_EQ(PAGE_TYPE_ERROR, controller.GetLastCommittedEntry()->GetPageType());
6889
6890 TestNavigationObserver reload_observer(shell()->web_contents());
6891 controller.Reload(ReloadType::NORMAL, false);
6892 reload_observer.Wait();
6893
6894 // The expectation is that about:blank was loaded and the virtual URL is set
6895 // to the URL that was blocked.
6896 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex());
6897 EXPECT_FALSE(
6898 controller.GetLastCommittedEntry()->GetURL().SchemeIs(url::kDataScheme));
6899 EXPECT_TRUE(controller.GetLastCommittedEntry()->GetVirtualURL().SchemeIs(
6900 url::kDataScheme));
6901 EXPECT_EQ(url::kAboutBlankURL,
6902 controller.GetLastCommittedEntry()->GetURL().spec());
6903 }
6904
6830 } // namespace content 6905 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698