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

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

Issue 7408001: If we show a SafeBrowsing warning we always send the client-side detection (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 9 years, 5 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_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 8311dc016870ccfe8a29af365b5ae44f919f19f6..7ad5d463515dc28aab4de92ccca4d6a0478245f0 100644
--- a/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
@@ -24,10 +24,15 @@
#include "content/browser/renderer_host/resource_dispatcher_host.h"
#include "content/browser/tab_contents/tab_contents.h"
#include "content/browser/tab_contents/tab_contents_view.h"
+#include "testing/gmock/include/gmock/gmock.h"
using base::Histogram;
using base::StatisticsRecorder;
+using ::testing::_;
+using ::testing::Mock;
+using ::testing::StrictMock;
+
// A SafeBrowingDatabase class that allows us to inject the malicious URLs.
class TestSafeBrowsingDatabase : public SafeBrowsingDatabase {
public:
@@ -251,6 +256,19 @@ class TestSBProtocolManagerFactory : public SBProtocolManagerFactory {
TestProtocolManager* pm_;
};
+class MockObserver : public SafeBrowsingService::Observer {
+ public:
+ MockObserver() {}
+ virtual ~MockObserver() {}
+ MOCK_METHOD1(OnSafeBrowsingHit,
+ void(const SafeBrowsingService::UnsafeResource&));
+};
+
+MATCHER_P(IsUnsafeResourceFor, url, "") {
+ return (arg.url.spec() == url.spec() &&
+ arg.threat_type != SafeBrowsingService::SAFE);
+}
+
// Tests the safe browsing blocking page in a browser.
class SafeBrowsingServiceTest : public InProcessBrowserTest {
public:
@@ -362,6 +380,9 @@ class SafeBrowsingServiceTest : public InProcessBrowserTest {
sb_service->download_hashcheck_timeout_ms_ = ms;
}
+ protected:
+ StrictMock<MockObserver> observer_;
+
private:
TestSafeBrowsingDatabaseFactory db_factory_;
TestSBProtocolManagerFactory pm_factory_;
@@ -379,6 +400,7 @@ const char kMalwarePage[] = "files/safe_browsing/malware.html";
// This test goes through DownloadResourceHandler.
IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, Malware) {
GURL url = test_server()->GetURL(kEmptyPage);
+ g_browser_process->safe_browsing_service()->AddObserver(&observer_);
// After adding the url to safebrowsing database and getfullhash result,
// we should see the interstitial page.
@@ -386,9 +408,11 @@ IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, Malware) {
int chunk_id = 0;
GenUrlFullhashResult(url, safe_browsing_util::kMalwareList, chunk_id,
&malware_full_hash);
+ EXPECT_CALL(observer_, OnSafeBrowsingHit(IsUnsafeResourceFor(url))).Times(1);
SetupResponseForUrl(url, malware_full_hash);
ui_test_utils::NavigateToURL(browser(), url);
EXPECT_TRUE(ShowingInterstitialPage());
+ g_browser_process->safe_browsing_service()->RemoveObserver(&observer_);
}
const char kPrefetchMalwarePage[] = "files/safe_browsing/prefetch_malware.html";
@@ -398,6 +422,7 @@ const char kPrefetchMalwarePage[] = "files/safe_browsing/prefetch_malware.html";
IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, Prefetch) {
GURL url = test_server()->GetURL(kPrefetchMalwarePage);
GURL malware_url = test_server()->GetURL(kMalwarePage);
+ g_browser_process->safe_browsing_service()->AddObserver(&observer_);
class SetPrefetchForTest {
public:
@@ -426,13 +451,19 @@ IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, Prefetch) {
GenUrlFullhashResult(malware_url, safe_browsing_util::kMalwareList,
chunk_id, &malware_full_hash);
SetupResponseForUrl(malware_url, malware_full_hash);
+ EXPECT_CALL(observer_, OnSafeBrowsingHit(_)).Times(0);
mattm 2011/07/19 21:25:55 Is this unnecessary due to using StrictMock?
noelutz 2011/07/19 22:28:08 Done.
ui_test_utils::NavigateToURL(browser(), url);
EXPECT_FALSE(ShowingInterstitialPage());
+ Mock::VerifyAndClear(&observer_);
// However, when we navigate to the malware page, we should still get
// the interstitial.
+ EXPECT_CALL(observer_, OnSafeBrowsingHit(IsUnsafeResourceFor(malware_url)))
+ .Times(1);
ui_test_utils::NavigateToURL(browser(), malware_url);
EXPECT_TRUE(ShowingInterstitialPage());
+ Mock::VerifyAndClear(&observer_);
+ g_browser_process->safe_browsing_service()->RemoveObserver(&observer_);
}
} // namespace

Powered by Google App Engine
This is Rietveld 408576698