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

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

Issue 2451623005: Remove Dangerous indicator after going back from interstitial (Closed)
Patch Set: another typo fix Created 4 years, 1 month 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_test.cc
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
index 468adf7f11532a578712a079b0c2613db5377aab..e02fecbdad4a909dc0c2f2f7d314efaddd56a61b 100644
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
@@ -44,6 +44,7 @@
#include "components/security_interstitials/core/metrics_helper.h"
#include "content/public/browser/interstitial_page.h"
#include "content/public/browser/navigation_controller.h"
+#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/notification_types.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
@@ -117,6 +118,8 @@ class FakeSafeBrowsingDatabaseManager : public TestSafeBrowsingDatabaseManager {
badurls[url.spec()] = threat_type;
}
+ void ClearBadURL(const GURL& url) { badurls.erase(url.spec()); }
+
// These are called when checking URLs, so we implement them.
bool IsSupported() const override { return true; }
bool ChecksAreAlwaysAsync() const override { return false; }
@@ -327,6 +330,15 @@ class SafeBrowsingBlockingPageBrowserTest
->SetURLThreatType(url, threat_type);
}
+ void ClearBadURL(const GURL& url) {
+ TestSafeBrowsingService* service = factory_.test_safe_browsing_service();
+ ASSERT_TRUE(service);
+
+ static_cast<FakeSafeBrowsingDatabaseManager*>(
+ service->database_manager().get())
+ ->ClearBadURL(url);
+ }
+
// The basic version of this method, which uses a HTTP test URL.
GURL SetupWarningAndNavigate() {
return SetupWarningAndNavigateToURL(
@@ -581,6 +593,17 @@ class SafeBrowsingBlockingPageBrowserTest
// EXPECT_EQ(cert_status, model_client->GetSecurityInfo().cert_status);
}
+ void ExpectNoSecurityIndicatorDowngrade(content::WebContents* tab) {
+ ChromeSecurityStateModelClient* model_client =
+ ChromeSecurityStateModelClient::FromWebContents(tab);
+ ASSERT_TRUE(model_client);
+ security_state::SecurityStateModel::SecurityInfo security_info;
+ model_client->GetSecurityInfo(&security_info);
+ EXPECT_EQ(security_state::SecurityStateModel::NONE,
+ security_info.security_level);
+ EXPECT_FALSE(security_info.fails_malware_check);
+ }
+
protected:
TestThreatDetailsFactory details_factory_;
@@ -1053,7 +1076,7 @@ class SecurityStyleTestObserver : public content::WebContentsObserver {
public:
explicit SecurityStyleTestObserver(content::WebContents* web_contents)
: content::WebContentsObserver(web_contents),
- latest_security_style_(blink::WebSecurityStyleUnknown){};
+ latest_security_style_(blink::WebSecurityStyleUnknown) {}
blink::WebSecurityStyle latest_security_style() const {
return latest_security_style_;
@@ -1095,6 +1118,92 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
ExpectSecurityIndicatorDowngrade(post_tab, 0u);
}
+// Test that the security indicator does not stay downgraded after
+// clicking back from a Safe Browsing interstitial. Regression test for
+// https://crbug.com/659709.
+IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
+ SecurityStateGoBack) {
+ // Navigate to a page so that there is somewhere to go back to.
+ GURL start_url =
+ net::URLRequestMockHTTPJob::GetMockUrl("http://example.test");
+ ui_test_utils::NavigateToURL(browser(), start_url);
+
+ // The security indicator should be downgraded while the interstitial shows.
+ GURL bad_url = net::URLRequestMockHTTPJob::GetMockUrl(kEmptyPage);
+ SetupWarningAndNavigate();
+ WebContents* error_tab = browser()->tab_strip_model()->GetActiveWebContents();
+ ASSERT_TRUE(error_tab);
+ ExpectSecurityIndicatorDowngrade(error_tab, 0u);
+ content::NavigationEntry* entry =
+ error_tab->GetController().GetVisibleEntry();
+ ASSERT_TRUE(entry);
+ ASSERT_EQ(bad_url, entry->GetURL());
+
+ // Go back.
+ EXPECT_EQ(VISIBLE, GetVisibility("primary-button"));
+ EXPECT_EQ(HIDDEN, GetVisibility("details"));
+ EXPECT_EQ(HIDDEN, GetVisibility("proceed-link"));
+ EXPECT_EQ(HIDDEN, GetVisibility("error-code"));
+ EXPECT_TRUE(Click("details-button"));
+ EXPECT_EQ(VISIBLE, GetVisibility("details"));
+ EXPECT_EQ(VISIBLE, GetVisibility("proceed-link"));
+ EXPECT_EQ(HIDDEN, GetVisibility("error-code"));
+ EXPECT_TRUE(ClickAndWaitForDetach("primary-button"));
+
+ // The security indicator should *not* still be downgraded after going back.
+ AssertNoInterstitial(true);
+ WebContents* post_tab = browser()->tab_strip_model()->GetActiveWebContents();
+ ASSERT_TRUE(post_tab);
+ entry = post_tab->GetController().GetVisibleEntry();
+ ASSERT_TRUE(entry);
+ EXPECT_EQ(start_url, entry->GetURL());
+ ExpectNoSecurityIndicatorDowngrade(post_tab);
+
+ ClearBadURL(bad_url);
+ // Navigate to the URL that the interstitial was on, and check that it
+ // is no longer marked as dangerous.
+ ui_test_utils::NavigateToURL(browser(), bad_url);
+ ExpectNoSecurityIndicatorDowngrade(
+ browser()->tab_strip_model()->GetActiveWebContents());
+}
+
+// Test that the security indicator does not stay downgraded after
+// clicking back from a Safe Browsing interstitial triggered by a
+// subresource. Regression test for https://crbug.com/659709.
+IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
+ SecurityStateGoBackOnSubresourceInterstitial) {
+ // Navigate to a page so that there is somewhere to go back to.
+ GURL start_url =
+ net::URLRequestMockHTTPJob::GetMockUrl("http://example.test");
+ ui_test_utils::NavigateToURL(browser(), start_url);
+
+ // The security indicator should be downgraded while the interstitial shows.
+ SetupThreatIframeWarningAndNavigate();
+ WebContents* error_tab = browser()->tab_strip_model()->GetActiveWebContents();
+ ASSERT_TRUE(error_tab);
+ ExpectSecurityIndicatorDowngrade(error_tab, 0u);
+
+ // Go back.
+ EXPECT_EQ(VISIBLE, GetVisibility("primary-button"));
+ EXPECT_EQ(HIDDEN, GetVisibility("details"));
+ EXPECT_EQ(HIDDEN, GetVisibility("proceed-link"));
+ EXPECT_EQ(HIDDEN, GetVisibility("error-code"));
+ EXPECT_TRUE(Click("details-button"));
+ EXPECT_EQ(VISIBLE, GetVisibility("details"));
+ EXPECT_EQ(VISIBLE, GetVisibility("proceed-link"));
+ EXPECT_EQ(HIDDEN, GetVisibility("error-code"));
+ EXPECT_TRUE(ClickAndWaitForDetach("primary-button"));
+
+ // The security indicator should *not* still be downgraded after going back.
+ AssertNoInterstitial(true);
+ WebContents* post_tab = browser()->tab_strip_model()->GetActiveWebContents();
+ ASSERT_TRUE(post_tab);
+ content::NavigationEntry* entry = post_tab->GetController().GetVisibleEntry();
+ ASSERT_TRUE(entry);
+ EXPECT_EQ(start_url, entry->GetURL());
+ ExpectNoSecurityIndicatorDowngrade(post_tab);
+}
+
// Test that the security indicator is downgraded after clicking through a
// Safe Browsing interstitial.
IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
@@ -1170,6 +1279,7 @@ class SafeBrowsingBlockingPageIDNTest
SecurityInterstitialPage* CreateInterstitial(
content::WebContents* contents,
const GURL& request_url) const override {
+ SafeBrowsingUIManager::CreateWhitelistForTesting(contents);
const bool is_subresource = testing::get<0>(GetParam());
SafeBrowsingService* sb_service =

Powered by Google App Engine
This is Rietveld 408576698