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 cfbc90427bca1257770040557be3e8c792b5bb6b..727c2fe7a93e3c5f0b16fe622f4d403fb8bd5702 100644 |
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc |
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc |
@@ -188,6 +188,15 @@ class FakeSafeBrowsingUIManager : public TestSafeBrowsingUIManager { |
threat_details_done_ = true; |
} |
+ void MaybeReportSafeBrowsingHit(const HitReport& hit_report, |
+ WebContents* web_contents) override { |
+ if (SafeBrowsingUIManager::ShouldSendHitReport(hit_report, web_contents)) { |
+ hit_report_sent_ = true; |
+ } |
+ } |
+ |
+ bool hit_report_sent() { return hit_report_sent_; } |
+ |
void set_threat_details_done_callback(const base::Closure& callback) { |
EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
EXPECT_TRUE(threat_details_done_callback_.is_null()); |
@@ -206,6 +215,7 @@ class FakeSafeBrowsingUIManager : public TestSafeBrowsingUIManager { |
std::string report_; |
base::Closure threat_details_done_callback_; |
bool threat_details_done_; |
+ bool hit_report_sent_ = false; |
Jialiu Lin
2017/05/18 22:32:12
nit: since all the other members are initialized i
mortonm
2017/05/19 20:21:03
Done.
|
DISALLOW_COPY_AND_ASSIGN(FakeSafeBrowsingUIManager); |
}; |
@@ -379,10 +389,10 @@ class SafeBrowsingBlockingPageBrowserTest |
->ClearBadURL(url); |
} |
- // The basic version of this method, which uses a HTTP test URL. |
- GURL SetupWarningAndNavigate() { |
+ // The basic version of this method, which uses an HTTP test URL. |
+ GURL SetupWarningAndNavigate(bool is_incognito) { |
return SetupWarningAndNavigateToURL( |
- net::URLRequestMockHTTPJob::GetMockUrl(kEmptyPage)); |
+ net::URLRequestMockHTTPJob::GetMockUrl(kEmptyPage), is_incognito); |
} |
// Navigates to a warning on a valid HTTPS website. |
@@ -395,7 +405,7 @@ class SafeBrowsingBlockingPageBrowserTest |
verify_result.cert_status = 0; |
mock_cert_verifier()->AddResultForCert(cert.get(), verify_result, net::OK); |
GURL url = https_server_.GetURL(kHTTPSPage); |
- return SetupWarningAndNavigateToURL(url); |
+ return SetupWarningAndNavigateToURL(url, false); |
} |
// Navigates through an HTTPS interstitial, then opens up a SB warning on that |
@@ -407,7 +417,7 @@ class SafeBrowsingBlockingPageBrowserTest |
// Proceed through the HTTPS interstitial. |
ui_test_utils::NavigateToURL(browser(), url); |
- EXPECT_TRUE(WaitForReady()); |
+ EXPECT_TRUE(WaitForReady(browser())); |
InterstitialPage* https_warning = browser() |
->tab_strip_model() |
->GetActiveWebContents() |
@@ -418,7 +428,7 @@ class SafeBrowsingBlockingPageBrowserTest |
content::WaitForInterstitialDetach( |
browser()->tab_strip_model()->GetActiveWebContents()); |
- return SetupWarningAndNavigateToURL(url); |
+ return SetupWarningAndNavigateToURL(url, false); |
} |
// Adds a safebrowsing threat results to the fake safebrowsing service, |
@@ -430,7 +440,7 @@ class SafeBrowsingBlockingPageBrowserTest |
SetURLThreatType(iframe_url, testing::get<0>(GetParam())); |
ui_test_utils::NavigateToURL(browser(), url); |
- EXPECT_TRUE(WaitForReady()); |
+ EXPECT_TRUE(WaitForReady(browser())); |
return url; |
} |
@@ -451,7 +461,7 @@ class SafeBrowsingBlockingPageBrowserTest |
SetURLThreatType(*iframe_url, testing::get<0>(GetParam())); |
ui_test_utils::NavigateToURL(browser(), url); |
- EXPECT_TRUE(WaitForReady()); |
+ EXPECT_TRUE(WaitForReady(browser())); |
return url; |
} |
@@ -550,9 +560,9 @@ class SafeBrowsingBlockingPageBrowserTest |
return interstitial->GetMainFrame(); |
} |
- bool WaitForReady() { |
+ bool WaitForReady(Browser* browser) { |
InterstitialPage* interstitial = InterstitialPage::GetInterstitialPage( |
- browser()->tab_strip_model()->GetActiveWebContents()); |
+ browser->tab_strip_model()->GetActiveWebContents()); |
if (!interstitial) |
return false; |
return content::WaitForRenderFrameReady(interstitial->GetMainFrame()); |
@@ -619,7 +629,7 @@ class SafeBrowsingBlockingPageBrowserTest |
void TestReportingDisabledAndDontProceed(const GURL& url) { |
SetURLThreatType(url, testing::get<0>(GetParam())); |
ui_test_utils::NavigateToURL(browser(), url); |
- ASSERT_TRUE(WaitForReady()); |
+ ASSERT_TRUE(WaitForReady(browser())); |
EXPECT_EQ(HIDDEN, GetVisibility("extended-reporting-opt-in")); |
EXPECT_EQ(HIDDEN, GetVisibility("opt-in-checkbox")); |
@@ -698,6 +708,12 @@ class SafeBrowsingBlockingPageBrowserTest |
security_info.malicious_content_status); |
} |
+ bool hit_report_sent() { |
+ return static_cast<FakeSafeBrowsingUIManager*>( |
+ factory_.test_safe_browsing_service()->ui_manager().get()) |
+ ->hit_report_sent(); |
+ } |
+ |
protected: |
TestThreatDetailsFactory details_factory_; |
@@ -705,16 +721,23 @@ class SafeBrowsingBlockingPageBrowserTest |
// Adds a safebrowsing result of the current test threat to the fake |
// safebrowsing service, navigates to that page, and returns the url. |
// The various wrappers supply different URLs. |
- GURL SetupWarningAndNavigateToURL(GURL url) { |
+ GURL SetupWarningAndNavigateToURL(GURL url, bool is_incognito) { |
SetURLThreatType(url, testing::get<0>(GetParam())); |
- ui_test_utils::NavigateToURL(browser(), url); |
- EXPECT_TRUE(WaitForReady()); |
+ if (is_incognito) { |
+ Browser* incognito_browser = CreateIncognitoBrowser(); |
+ ui_test_utils::NavigateToURL(incognito_browser, url); |
+ EXPECT_TRUE(WaitForReady(incognito_browser)); |
+ } else { |
+ ui_test_utils::NavigateToURL(browser(), url); |
+ EXPECT_TRUE(WaitForReady(browser())); |
+ } |
return url; |
} |
TestSafeBrowsingServiceFactory factory_; |
TestSafeBrowsingBlockingPageFactory blocking_page_factory_; |
net::EmbeddedTestServer https_server_; |
+ // Browser* incognito_browser; |
Jialiu Lin
2017/05/18 22:32:12
You probably need this one. See my comments below.
mortonm
2017/05/19 20:21:03
Done.
|
DISALLOW_COPY_AND_ASSIGN(SafeBrowsingBlockingPageBrowserTest); |
}; |
@@ -744,7 +767,7 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, RedirectCanceled) { |
} |
IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, DontProceed) { |
- SetupWarningAndNavigate(); |
+ SetupWarningAndNavigate(false); |
EXPECT_EQ(VISIBLE, GetVisibility("primary-button")); |
EXPECT_EQ(HIDDEN, GetVisibility("details")); |
@@ -762,7 +785,7 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, DontProceed) { |
} |
IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, Proceed) { |
- GURL url = SetupWarningAndNavigate(); |
+ GURL url = SetupWarningAndNavigate(false); |
EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); |
AssertNoInterstitial(true); // Assert the interstitial is gone. |
@@ -908,7 +931,7 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
// Start navigation to bad page (kEmptyPage), which will be blocked before it |
// is committed. |
- GURL url = SetupWarningAndNavigate(); |
+ GURL url = SetupWarningAndNavigate(false); |
ThreatDetails* threat_details = details_factory_.get_details(); |
EXPECT_EQ(expect_threat_details, threat_details != nullptr); |
@@ -959,7 +982,7 @@ IN_PROC_BROWSER_TEST_P( |
// Start navigation to bad page (kEmptyPage), which will be blocked before it |
// is committed. |
- GURL url = SetupWarningAndNavigate(); |
+ GURL url = SetupWarningAndNavigate(false); |
ThreatDetails* threat_details = details_factory_.get_details(); |
EXPECT_EQ(expect_threat_details, threat_details != nullptr); |
@@ -996,7 +1019,7 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, ProceedDisabled) { |
browser()->profile()->GetPrefs()->SetBoolean( |
prefs::kSafeBrowsingProceedAnywayDisabled, true); |
- SetupWarningAndNavigate(); |
+ SetupWarningAndNavigate(false); |
EXPECT_EQ(VISIBLE, GetVisibility("primary-button")); |
EXPECT_EQ(HIDDEN, GetVisibility("details")); |
@@ -1031,7 +1054,7 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
ReloadWhileInterstitialShowing) { |
// Start navigation to bad page (kEmptyPage), which will be blocked before it |
// is committed. |
- const GURL url = SetupWarningAndNavigate(); |
+ const GURL url = SetupWarningAndNavigate(false); |
// Checkbox should be showing. |
EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); |
@@ -1049,7 +1072,7 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
EXPECT_EQ(url, controller.GetPendingEntry()->GetURL()); |
// "Reload" the tab. |
- SetupWarningAndNavigate(); |
+ SetupWarningAndNavigate(false); |
// Checkbox should be showing. |
EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); |
@@ -1066,7 +1089,7 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
} |
IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, LearnMore) { |
- SetupWarningAndNavigate(); |
+ SetupWarningAndNavigate(false); |
EXPECT_TRUE(ClickAndWaitForDetach("learn-more-link")); |
AssertNoInterstitial(false); // Assert the interstitial is gone |
@@ -1104,7 +1127,7 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
histograms.ExpectTotalCount(interaction_histogram, 0); |
// After navigating to the page, the totals should be set. |
- SetupWarningAndNavigate(); |
+ SetupWarningAndNavigate(false); |
histograms.ExpectTotalCount(decision_histogram, 1); |
histograms.ExpectBucketCount(decision_histogram, |
security_interstitials::MetricsHelper::SHOW, 1); |
@@ -1148,7 +1171,7 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
histograms.ExpectTotalCount(interaction_histogram, 0); |
// After navigating to the page, the totals should be set. |
- GURL url = SetupWarningAndNavigate(); |
+ GURL url = SetupWarningAndNavigate(false); |
histograms.ExpectTotalCount(decision_histogram, 1); |
histograms.ExpectBucketCount(decision_histogram, |
security_interstitials::MetricsHelper::SHOW, 1); |
@@ -1170,7 +1193,7 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
} |
IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, WhitelistRevisit) { |
- GURL url = SetupWarningAndNavigate(); |
+ GURL url = SetupWarningAndNavigate(false); |
EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); |
AssertNoInterstitial(true); // Assert the interstitial is gone. |
@@ -1205,7 +1228,7 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
} |
IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, WhitelistUnsaved) { |
- GURL url = SetupWarningAndNavigate(); |
+ GURL url = SetupWarningAndNavigate(false); |
// Navigate without making a decision. |
ui_test_utils::NavigateToURL(browser(), GURL(kUnrelatedUrl)); |
@@ -1213,11 +1236,68 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, WhitelistUnsaved) { |
// The non-whitelisted page should now show an interstitial. |
ui_test_utils::NavigateToURL(browser(), url); |
- EXPECT_TRUE(WaitForReady()); |
+ EXPECT_TRUE(WaitForReady(browser())); |
EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); |
AssertNoInterstitial(true); |
} |
+IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
+ VerifyHitReportSentOnSBERAndNotIncognito) { |
+ // The extended reporting opt-in is presented in the interstitial for malware, |
+ // phishing, and UwS threats. |
+ const bool expect_threat_details = |
+ SafeBrowsingBlockingPage::ShouldReportThreatDetails( |
+ testing::get<0>(GetParam())); |
+ |
+ scoped_refptr<content::MessageLoopRunner> threat_report_sent_runner( |
+ new content::MessageLoopRunner); |
+ if (expect_threat_details) |
+ SetReportSentCallback(threat_report_sent_runner->QuitClosure()); |
+ |
+ browser()->profile()->GetPrefs()->SetBoolean( |
+ prefs::kSafeBrowsingExtendedReportingEnabled, true); // set up SBER |
+ GURL url = SetupWarningAndNavigate(false); // not incognito |
+ EXPECT_TRUE(hit_report_sent()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
+ VerifyHitReportNotSentOnIncognito) { |
+ // The extended reporting opt-in is presented in the interstitial for malware, |
+ // phishing, and UwS threats. |
+ const bool expect_threat_details = |
+ SafeBrowsingBlockingPage::ShouldReportThreatDetails( |
+ testing::get<0>(GetParam())); |
+ |
+ scoped_refptr<content::MessageLoopRunner> threat_report_sent_runner( |
+ new content::MessageLoopRunner); |
+ if (expect_threat_details) |
+ SetReportSentCallback(threat_report_sent_runner->QuitClosure()); |
+ |
+ browser()->profile()->GetPrefs()->SetBoolean( |
Jialiu Lin
2017/05/18 22:32:12
You're configuring the extended reporting prefs on
mortonm
2017/05/19 20:21:03
Done.
|
+ prefs::kSafeBrowsingExtendedReportingEnabled, true); // set up SBER |
+ GURL url = SetupWarningAndNavigate(true); // incognito |
+ EXPECT_FALSE(hit_report_sent()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
+ VerifyHitReportNotSentWithoutSBER) { |
+ // The extended reporting opt-in is presented in the interstitial for malware, |
+ // phishing, and UwS threats. |
+ const bool expect_threat_details = |
+ SafeBrowsingBlockingPage::ShouldReportThreatDetails( |
+ testing::get<0>(GetParam())); |
+ |
+ scoped_refptr<content::MessageLoopRunner> threat_report_sent_runner( |
+ new content::MessageLoopRunner); |
+ if (expect_threat_details) |
+ SetReportSentCallback(threat_report_sent_runner->QuitClosure()); |
+ |
+ browser()->profile()->GetPrefs()->SetBoolean( |
+ prefs::kSafeBrowsingExtendedReportingEnabled, false); // no SBER |
+ GURL url = SetupWarningAndNavigate(false); // not incognito |
+ EXPECT_FALSE(hit_report_sent()); |
+} |
+ |
namespace { |
class SecurityStyleTestObserver : public content::WebContentsObserver { |
@@ -1286,7 +1366,7 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
// The security indicator should be downgraded while the interstitial shows. |
GURL bad_url = net::URLRequestMockHTTPJob::GetMockUrl(kEmptyPage); |
- SetupWarningAndNavigate(); |
+ SetupWarningAndNavigate(false); |
WebContents* error_tab = browser()->tab_strip_model()->GetActiveWebContents(); |
ASSERT_TRUE(error_tab); |
ExpectSecurityIndicatorDowngrade(error_tab, 0u); |
@@ -1377,7 +1457,7 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
SecurityState_HTTP) { |
// The security indicator should be downgraded while the interstitial shows. |
- SetupWarningAndNavigate(); |
+ SetupWarningAndNavigate(false); |
WebContents* error_tab = browser()->tab_strip_model()->GetActiveWebContents(); |
ASSERT_TRUE(error_tab); |
ExpectSecurityIndicatorDowngrade(error_tab, 0u); |