| Index: chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
|
| diff --git a/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc b/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
|
| index eeb302d79f77d08aca4d4913651b54c1cdb3345f..b0fd5a477c99fcf06d488e528faa81f46f9cffee 100644
|
| --- a/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
|
| +++ b/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
|
| @@ -379,6 +379,45 @@ IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, Malware) {
|
| EXPECT_TRUE(ShowingInterstitialPage());
|
| }
|
|
|
| +const char kPrefetchMalwarePage[] = "files/safe_browsing/prefetch_malware.html";
|
| +
|
| +// This test confirms that prefetches don't themselves get the
|
| +// interstitial treatment.
|
| +IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, Prefetch) {
|
| + GURL url = test_server()->GetURL(kPrefetchMalwarePage);
|
| + GURL malware_url = test_server()->GetURL(kMalwarePage);
|
| +
|
| + class SetPrefetchForTest {
|
| + public:
|
| + explicit SetPrefetchForTest(bool prefetch)
|
| + : old_prefetch_state_(ResourceDispatcherHost::is_prefetch_enabled()) {
|
| + ResourceDispatcherHost::set_is_prefetch_enabled(prefetch);
|
| + }
|
| +
|
| + ~SetPrefetchForTest() {
|
| + ResourceDispatcherHost::set_is_prefetch_enabled(old_prefetch_state_);
|
| + }
|
| + private:
|
| + bool old_prefetch_state_;
|
| + } set_prefetch_for_test(true);
|
| +
|
| + // Even though we have added this uri to the safebrowsing database and
|
| + // getfullhash result, we should not see the interstitial page since the
|
| + // only malware was a prefetch target.
|
| + SBFullHashResult malware_full_hash;
|
| + int chunk_id = 0;
|
| + GenUrlFullhashResult(malware_url, safe_browsing_util::kMalwareList,
|
| + chunk_id, &malware_full_hash);
|
| + SetupResponseForUrl(malware_url, malware_full_hash);
|
| + ui_test_utils::NavigateToURL(browser(), url);
|
| + EXPECT_FALSE(ShowingInterstitialPage());
|
| +
|
| + // However, when we navigate to the malware page, we should still get
|
| + // the interstitial.
|
| + ui_test_utils::NavigateToURL(browser(), malware_url);
|
| + EXPECT_TRUE(ShowingInterstitialPage());
|
| +}
|
| +
|
| } // namespace
|
|
|
| class TestSBClient
|
|
|