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

Unified Diff: chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc

Issue 273022: Fixing a bug with interstitial pages triggered with malware.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc
===================================================================
--- chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc (revision 28624)
+++ chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc (working copy)
@@ -102,6 +102,13 @@
contents()->TestDidNavigate(contents_->render_view_host(), params);
}
+ void GoBack() {
+ NavigationEntry* entry = contents()->controller().GetEntryAtOffset(-1);
+ ASSERT_TRUE(entry);
+ contents()->controller().GoBack();
+ Navigate(entry->url().spec().c_str(), entry->page_id());
+ }
+
void ShowInterstitial(ResourceType::Type resource_type,
const char* url) {
SafeBrowsingService::UnsafeResource resource;
@@ -355,3 +362,41 @@
ASSERT_EQ(1, controller().entry_count());
EXPECT_EQ(kGoodURL, controller().GetActiveEntry()->url().spec());
}
+
+// Tests showing a blocking page then navigating back and forth to make sure the
+// controller entries are OK. http://crbug.com/17627
+TEST_F(SafeBrowsingBlockingPageTest, NavigatingBackAndForth) {
+ // Navigate somewhere.
+ Navigate(kGoodURL, 1);
+
+ // Now navigate to a bad page triggerring an interstitial.
+ controller().LoadURL(GURL(kBadURL), GURL(), PageTransition::TYPED);
+ ShowInterstitial(ResourceType::MAIN_FRAME, kBadURL);
+ SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
+ ASSERT_TRUE(sb_interstitial);
+
+ // Proceed, then navigate back.
+ ProceedThroughInterstitial(sb_interstitial);
+ Navigate(kBadURL, 2); // Commit the navigation.
+ GoBack();
+
+ // We are back on the good page.
+ sb_interstitial = GetSafeBrowsingBlockingPage();
+ ASSERT_FALSE(sb_interstitial);
+ ASSERT_EQ(2, controller().entry_count());
+ EXPECT_EQ(kGoodURL, controller().GetActiveEntry()->url().spec());
+
+ // Navigate forward to the malware URL.
+ contents()->controller().GoForward();
+ ShowInterstitial(ResourceType::MAIN_FRAME, 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.
+ sb_interstitial = GetSafeBrowsingBlockingPage();
+ ASSERT_FALSE(sb_interstitial);
+ ASSERT_EQ(2, controller().entry_count());
+ EXPECT_EQ(kBadURL, controller().GetActiveEntry()->url().spec());
+}

Powered by Google App Engine
This is Rietveld 408576698