| Index: chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc
|
| diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc
|
| index 536953a5bcc56a381648b9fd31fb4e076962833b..cdc185a982abb103e1b2ad84e91e3a962d1c149c 100644
|
| --- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc
|
| +++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc
|
| @@ -120,10 +120,36 @@ class SafeBrowsingBlockingPageTest : public ChromeRenderViewHostTestHarness {
|
| user_response_ = CANCEL;
|
| }
|
|
|
| - void Navigate(const char* url, int page_id) {
|
| - WebContentsTester::For(web_contents())->TestDidNavigate(
|
| - web_contents()->GetMainFrame(), page_id, GURL(url),
|
| - ui::PAGE_TRANSITION_TYPED);
|
| + void Navigate(const char* url,
|
| + int page_id,
|
| + int nav_entry_id,
|
| + bool did_create_new_entry) {
|
| + NavigateInternal(url, page_id, nav_entry_id, did_create_new_entry, false);
|
| + }
|
| +
|
| + void NavigateCrossSite(const char* url,
|
| + int page_id,
|
| + int nav_entry_id,
|
| + bool did_create_new_entry) {
|
| + NavigateInternal(url, page_id, nav_entry_id, did_create_new_entry, true);
|
| + }
|
| +
|
| + void NavigateInternal(const char* url,
|
| + int page_id,
|
| + int nav_entry_id,
|
| + bool did_create_new_entry,
|
| + bool is_cross_site) {
|
| + // The pending RVH should commit for cross-site navigations.
|
| + content::RenderFrameHost* render_frame_host =
|
| + is_cross_site
|
| + ? content::WebContentsTester::For(web_contents())
|
| + ->GetPendingMainFrame()
|
| + : web_contents()->GetMainFrame();
|
| +
|
| + content::WebContentsTester::For(web_contents())
|
| + ->TestDidNavigate(render_frame_host, page_id, nav_entry_id,
|
| + did_create_new_entry, GURL(url),
|
| + ui::PAGE_TRANSITION_TYPED);
|
| }
|
|
|
| void GoBack(bool is_cross_site) {
|
| @@ -139,7 +165,9 @@ class SafeBrowsingBlockingPageTest : public ChromeRenderViewHostTestHarness {
|
| WebContentsTester::For(web_contents())->TestDidNavigate(
|
| rfh,
|
| entry->GetPageID(),
|
| - GURL(entry->GetURL()),
|
| + entry->GetUniqueID(),
|
| + false,
|
| + entry->GetURL(),
|
| ui::PAGE_TRANSITION_TYPED);
|
| }
|
|
|
| @@ -224,8 +252,7 @@ TEST_F(SafeBrowsingBlockingPageTest, MalwarePageDontProceed) {
|
|
|
| // Simulate the load causing a safe browsing interstitial to be shown.
|
| ShowInterstitial(false, kBadURL);
|
| - SafeBrowsingBlockingPage* sb_interstitial =
|
| - GetSafeBrowsingBlockingPage();
|
| + SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
|
| ASSERT_TRUE(sb_interstitial);
|
|
|
| base::RunLoop().RunUntilIdle();
|
| @@ -256,11 +283,11 @@ TEST_F(SafeBrowsingBlockingPageTest, MalwarePageProceed) {
|
| // Start a load.
|
| controller().LoadURL(GURL(kBadURL), content::Referrer(),
|
| ui::PAGE_TRANSITION_TYPED, std::string());
|
| + int pending_id = controller().GetPendingEntry()->GetUniqueID();
|
|
|
| // Simulate the load causing a safe browsing interstitial to be shown.
|
| ShowInterstitial(false, kBadURL);
|
| - SafeBrowsingBlockingPage* sb_interstitial =
|
| - GetSafeBrowsingBlockingPage();
|
| + SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
|
| ASSERT_TRUE(sb_interstitial);
|
|
|
| // Simulate the user clicking "proceed".
|
| @@ -269,7 +296,7 @@ TEST_F(SafeBrowsingBlockingPageTest, MalwarePageProceed) {
|
| // The interstitial is shown until the navigation commits.
|
| ASSERT_TRUE(InterstitialPage::GetInterstitialPage(web_contents()));
|
| // Commit the navigation.
|
| - Navigate(kBadURL, 1);
|
| + Navigate(kBadURL, 1, pending_id, true);
|
| // The interstitial should be gone now.
|
| ASSERT_FALSE(InterstitialPage::GetInterstitialPage(web_contents()));
|
|
|
| @@ -288,16 +315,15 @@ TEST_F(SafeBrowsingBlockingPageTest, PageWithMalwareResourceDontProceed) {
|
| prefs::kSafeBrowsingExtendedReportingEnabled, true);
|
|
|
| // Navigate somewhere.
|
| - Navigate(kGoogleURL, 1);
|
| + Navigate(kGoogleURL, 1, 0, true);
|
|
|
| // Navigate somewhere else.
|
| - Navigate(kGoodURL, 2);
|
| + Navigate(kGoodURL, 2, 0, true);
|
|
|
| // Simulate that page loading a bad-resource triggering an interstitial.
|
| ShowInterstitial(true, kBadURL);
|
|
|
| - SafeBrowsingBlockingPage* sb_interstitial =
|
| - GetSafeBrowsingBlockingPage();
|
| + SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
|
| ASSERT_TRUE(sb_interstitial);
|
|
|
| // Simulate the user clicking "don't proceed".
|
| @@ -325,13 +351,12 @@ TEST_F(SafeBrowsingBlockingPageTest, PageWithMalwareResourceProceed) {
|
| prefs::kSafeBrowsingExtendedReportingEnabled, true);
|
|
|
| // Navigate somewhere.
|
| - Navigate(kGoodURL, 1);
|
| + Navigate(kGoodURL, 1, 0, true);
|
|
|
| // Simulate that page loading a bad-resource triggering an interstitial.
|
| ShowInterstitial(true, kBadURL);
|
|
|
| - SafeBrowsingBlockingPage* sb_interstitial =
|
| - GetSafeBrowsingBlockingPage();
|
| + SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
|
| ASSERT_TRUE(sb_interstitial);
|
|
|
| // Simulate the user clicking "proceed".
|
| @@ -360,10 +385,10 @@ TEST_F(SafeBrowsingBlockingPageTest,
|
| prefs::kSafeBrowsingExtendedReportingEnabled, true);
|
|
|
| // Navigate somewhere.
|
| - Navigate(kGoogleURL, 1);
|
| + Navigate(kGoogleURL, 1, 0, true);
|
|
|
| // Navigate somewhere else.
|
| - Navigate(kGoodURL, 2);
|
| + Navigate(kGoodURL, 2, 0, true);
|
|
|
| // Simulate that page loading a bad-resource triggering an interstitial.
|
| ShowInterstitial(true, kBadURL);
|
| @@ -373,8 +398,7 @@ TEST_F(SafeBrowsingBlockingPageTest,
|
| ShowInterstitial(true, kBadURL2);
|
| ShowInterstitial(true, kBadURL3);
|
|
|
| - SafeBrowsingBlockingPage* sb_interstitial =
|
| - GetSafeBrowsingBlockingPage();
|
| + SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
|
| ASSERT_TRUE(sb_interstitial);
|
|
|
| // Simulate the user clicking "don't proceed".
|
| @@ -403,10 +427,10 @@ TEST_F(SafeBrowsingBlockingPageTest,
|
| prefs::kSafeBrowsingExtendedReportingEnabled, true);
|
|
|
| // Navigate somewhere.
|
| - Navigate(kGoogleURL, 1);
|
| + Navigate(kGoogleURL, 1, 0, true);
|
|
|
| // Navigate somewhere else.
|
| - Navigate(kGoodURL, 2);
|
| + Navigate(kGoodURL, 2, 0, true);
|
|
|
| // Simulate that page loading a bad-resource triggering an interstitial.
|
| ShowInterstitial(true, kBadURL);
|
| @@ -416,8 +440,7 @@ TEST_F(SafeBrowsingBlockingPageTest,
|
| ShowInterstitial(true, kBadURL2);
|
| ShowInterstitial(true, kBadURL3);
|
|
|
| - SafeBrowsingBlockingPage* sb_interstitial =
|
| - GetSafeBrowsingBlockingPage();
|
| + SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
|
| ASSERT_TRUE(sb_interstitial);
|
|
|
| // Proceed through the 1st interstitial.
|
| @@ -453,8 +476,7 @@ TEST_F(SafeBrowsingBlockingPageTest,
|
|
|
| // Tests showing a blocking page for a page that contains multiple malware
|
| // subresources and proceeding through the multiple interstitials.
|
| -TEST_F(SafeBrowsingBlockingPageTest,
|
| - PageWithMultipleMalwareResourceProceed) {
|
| +TEST_F(SafeBrowsingBlockingPageTest, PageWithMultipleMalwareResourceProceed) {
|
| // Enable malware reports.
|
| Profile* profile = Profile::FromBrowserContext(
|
| web_contents()->GetBrowserContext());
|
| @@ -462,7 +484,7 @@ TEST_F(SafeBrowsingBlockingPageTest,
|
| prefs::kSafeBrowsingExtendedReportingEnabled, true);
|
|
|
| // Navigate somewhere else.
|
| - Navigate(kGoodURL, 1);
|
| + Navigate(kGoodURL, 1, 0, true);
|
|
|
| // Simulate that page loading a bad-resource triggering an interstitial.
|
| ShowInterstitial(true, kBadURL);
|
| @@ -472,8 +494,7 @@ TEST_F(SafeBrowsingBlockingPageTest,
|
| ShowInterstitial(true, kBadURL2);
|
| ShowInterstitial(true, kBadURL3);
|
|
|
| - SafeBrowsingBlockingPage* sb_interstitial =
|
| - GetSafeBrowsingBlockingPage();
|
| + SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
|
| ASSERT_TRUE(sb_interstitial);
|
|
|
| // Proceed through the 1st interstitial.
|
| @@ -515,19 +536,19 @@ TEST_F(SafeBrowsingBlockingPageTest, NavigatingBackAndForth) {
|
| prefs::kSafeBrowsingExtendedReportingEnabled, true);
|
|
|
| // Navigate somewhere.
|
| - Navigate(kGoodURL, 1);
|
| + Navigate(kGoodURL, 1, 0, true);
|
|
|
| // Now navigate to a bad page triggerring an interstitial.
|
| controller().LoadURL(GURL(kBadURL), content::Referrer(),
|
| ui::PAGE_TRANSITION_TYPED, std::string());
|
| + int pending_id = controller().GetPendingEntry()->GetUniqueID();
|
| ShowInterstitial(false, kBadURL);
|
| - SafeBrowsingBlockingPage* sb_interstitial =
|
| - GetSafeBrowsingBlockingPage();
|
| + SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
|
| ASSERT_TRUE(sb_interstitial);
|
|
|
| // Proceed, then navigate back.
|
| ProceedThroughInterstitial(sb_interstitial);
|
| - Navigate(kBadURL, 2); // Commit the navigation.
|
| + Navigate(kBadURL, 2, pending_id, true); // Commit the navigation.
|
| GoBack(true);
|
|
|
| // We are back on the good page.
|
| @@ -538,13 +559,15 @@ TEST_F(SafeBrowsingBlockingPageTest, NavigatingBackAndForth) {
|
|
|
| // Navigate forward to the malware URL.
|
| web_contents()->GetController().GoForward();
|
| + pending_id = controller().GetPendingEntry()->GetUniqueID();
|
| ShowInterstitial(false, kBadURL);
|
| sb_interstitial = GetSafeBrowsingBlockingPage();
|
| ASSERT_TRUE(sb_interstitial);
|
|
|
| // Let's proceed and make sure everything is OK (bug 17627).
|
| ProceedThroughInterstitial(sb_interstitial);
|
| - Navigate(kBadURL, 2); // Commit the navigation.
|
| + // Commit the navigation.
|
| + NavigateCrossSite(kBadURL, 2, pending_id, false);
|
| sb_interstitial = GetSafeBrowsingBlockingPage();
|
| ASSERT_FALSE(sb_interstitial);
|
| ASSERT_EQ(2, controller().GetEntryCount());
|
| @@ -570,8 +593,7 @@ TEST_F(SafeBrowsingBlockingPageTest, ProceedThenDontProceed) {
|
|
|
| // Simulate the load causing a safe browsing interstitial to be shown.
|
| ShowInterstitial(false, kBadURL);
|
| - SafeBrowsingBlockingPage* sb_interstitial =
|
| - GetSafeBrowsingBlockingPage();
|
| + SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
|
| ASSERT_TRUE(sb_interstitial);
|
|
|
| base::RunLoop().RunUntilIdle();
|
| @@ -607,8 +629,7 @@ TEST_F(SafeBrowsingBlockingPageTest, MalwareReportsDisabled) {
|
|
|
| // Simulate the load causing a safe browsing interstitial to be shown.
|
| ShowInterstitial(false, kBadURL);
|
| - SafeBrowsingBlockingPage* sb_interstitial =
|
| - GetSafeBrowsingBlockingPage();
|
| + SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
|
| ASSERT_TRUE(sb_interstitial);
|
|
|
| base::RunLoop().RunUntilIdle();
|
| @@ -642,8 +663,7 @@ TEST_F(SafeBrowsingBlockingPageTest, MalwareReportsToggling) {
|
|
|
| // Simulate the load causing a safe browsing interstitial to be shown.
|
| ShowInterstitial(false, kBadURL);
|
| - SafeBrowsingBlockingPage* sb_interstitial =
|
| - GetSafeBrowsingBlockingPage();
|
| + SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
|
| ASSERT_TRUE(sb_interstitial);
|
|
|
| base::RunLoop().RunUntilIdle();
|
|
|