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

Unified Diff: chrome/browser/prerender/prerender_browsertest.cc

Issue 1943993006: Create test fixture for SafeBrowsingService (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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/prerender/prerender_browsertest.cc
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
index 9eec60fa294f02a3d36490018784ad8e1cc5b9c2..cafa98ee6b1fb8b1336d502bc49307d57c797fb1 100644
--- a/chrome/browser/prerender/prerender_browsertest.cc
+++ b/chrome/browser/prerender/prerender_browsertest.cc
@@ -50,7 +50,7 @@
#include "chrome/browser/profiles/profile_io_data.h"
#include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.h"
#include "chrome/browser/safe_browsing/local_database_manager.h"
-#include "chrome/browser/safe_browsing/safe_browsing_service.h"
+#include "chrome/browser/safe_browsing/test_safe_browsing_service.h"
#include "chrome/browser/task_management/providers/web_contents/web_contents_tags_manager.h"
#include "chrome/browser/task_management/task_management_browsertest_util.h"
#include "chrome/browser/task_manager/task_manager.h"
@@ -741,20 +741,13 @@ class TestPrerenderContentsFactory : public PrerenderContents::Factory {
std::deque<ExpectedContents> expected_contents_queue_;
};
-// TODO(nparker): Switch this to use TestSafeBrowsingDatabaseManager and run
-// with SAFE_BROWSING_DB_LOCAL || SAFE_BROWSING_DB_REMOTE.
-// Note: don't forget to override GetProtocolManagerDelegate and return NULL,
-// because FakeSafeBrowsingDatabaseManager does not implement
-// LocalSafeBrowsingDatabaseManager.
-#if defined(FULL_SAFE_BROWSING)
+#if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
Nathan Parker 2016/05/07 00:05:32 Is this file included in Android tests? If so, th
Jialiu Lin 2016/05/12 21:53:58 Good to know. ifdefs removed. Thanks!
// A SafeBrowsingDatabaseManager implementation that returns a fixed result for
// a given URL.
class FakeSafeBrowsingDatabaseManager
- : public LocalSafeBrowsingDatabaseManager {
+ : public safe_browsing::TestSafeBrowsingDatabaseManager {
public:
- explicit FakeSafeBrowsingDatabaseManager(SafeBrowsingService* service)
- : LocalSafeBrowsingDatabaseManager(service),
- threat_type_(safe_browsing::SB_THREAT_TYPE_SAFE) {}
+ FakeSafeBrowsingDatabaseManager() {}
// Called on the IO thread to check if the given url is safe or not. If we
// can synchronously determine that the url is safe, CheckUrl returns true.
@@ -766,7 +759,8 @@ class FakeSafeBrowsingDatabaseManager
// client, and false will be returned).
// Overrides SafeBrowsingDatabaseManager::CheckBrowseUrl.
bool CheckBrowseUrl(const GURL& gurl, Client* client) override {
- if (gurl != url_ || threat_type_ == safe_browsing::SB_THREAT_TYPE_SAFE)
+ if (badurls_.find(gurl.spec())==badurls_.end() ||
Nathan Parker 2016/05/07 00:05:32 nit: spaces around ==
Jialiu Lin 2016/05/12 21:53:58 Done.
+ badurls_[gurl.spec()] == safe_browsing::SB_THREAT_TYPE_SAFE)
return true;
BrowserThread::PostTask(
@@ -777,8 +771,20 @@ class FakeSafeBrowsingDatabaseManager
}
void SetThreatTypeForUrl(const GURL& url, SBThreatType threat_type) {
- url_ = url;
- threat_type_ = threat_type;
+ badurls_[url.spec()] = threat_type;
+ }
+
+ // These are called when checking URLs, so we implement them.
+ bool IsSupported() const override { return true; }
+ bool ChecksAreAlwaysAsync() const override { return false; }
+ bool CanCheckResourceType(
+ content::ResourceType /* resource_type */) const override {
+ return true;
+ }
+
+ bool CheckExtensionIDs(const std::set<std::string>& extension_ids,
+ Client* client) override {
+ return true;
}
private:
@@ -796,59 +802,14 @@ class FakeSafeBrowsingDatabaseManager
client,
safe_browsing::MALWARE,
expected_threats);
- sb_check.url_results[0] = threat_type_;
+ sb_check.url_results[0] = badurls_[gurl.spec()];
sb_check.OnSafeBrowsingResult();
}
- GURL url_;
- SBThreatType threat_type_;
+ base::hash_map<std::string, SBThreatType> badurls_;
DISALLOW_COPY_AND_ASSIGN(FakeSafeBrowsingDatabaseManager);
};
-class FakeSafeBrowsingService : public SafeBrowsingService {
- public:
- FakeSafeBrowsingService() { }
-
- // Returned pointer has the same lifespan as the database_manager_ refcounted
- // object.
- FakeSafeBrowsingDatabaseManager* fake_database_manager() {
- return fake_database_manager_;
- }
-
- protected:
- ~FakeSafeBrowsingService() override {}
-
- safe_browsing::SafeBrowsingDatabaseManager* CreateDatabaseManager() override {
- fake_database_manager_ = new FakeSafeBrowsingDatabaseManager(this);
- return fake_database_manager_;
- }
-
- private:
- FakeSafeBrowsingDatabaseManager* fake_database_manager_;
-
- DISALLOW_COPY_AND_ASSIGN(FakeSafeBrowsingService);
-};
-
-// Factory that creates FakeSafeBrowsingService instances.
-class TestSafeBrowsingServiceFactory
- : public safe_browsing::SafeBrowsingServiceFactory {
- public:
- TestSafeBrowsingServiceFactory() :
- most_recent_service_(NULL) { }
- ~TestSafeBrowsingServiceFactory() override {}
-
- SafeBrowsingService* CreateSafeBrowsingService() override {
- most_recent_service_ = new FakeSafeBrowsingService();
- return most_recent_service_;
- }
-
- FakeSafeBrowsingService* most_recent_service() const {
- return most_recent_service_;
- }
-
- private:
- FakeSafeBrowsingService* most_recent_service_;
-};
#endif
class FakeDevToolsClient : public content::DevToolsAgentHostClient {
@@ -1130,8 +1091,9 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest {
PrerenderBrowserTest()
: autostart_test_server_(true),
prerender_contents_factory_(NULL),
-#if defined(FULL_SAFE_BROWSING)
- safe_browsing_factory_(new TestSafeBrowsingServiceFactory()),
+#if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
+ safe_browsing_factory_(
+ new safe_browsing::TestSafeBrowsingServiceFactory()),
#endif
call_javascript_(true),
check_load_events_(true),
@@ -1149,13 +1111,15 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest {
}
void SetUpInProcessBrowserTestFixture() override {
-#if defined(FULL_SAFE_BROWSING)
+#if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
+ safe_browsing_factory_->SetTestDatabaseManager(
+ new FakeSafeBrowsingDatabaseManager());
SafeBrowsingService::RegisterFactory(safe_browsing_factory_.get());
#endif
}
void TearDownInProcessBrowserTestFixture() override {
-#if defined(FULL_SAFE_BROWSING)
+#if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
SafeBrowsingService::RegisterFactory(NULL);
#endif
}
@@ -1186,6 +1150,12 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest {
ASSERT_TRUE(prerender_contents_factory_ == NULL);
prerender_contents_factory_ = new TestPrerenderContentsFactory;
prerender_manager->SetPrerenderContentsFactory(prerender_contents_factory_);
+#if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
+ // Note: Need to make GetProtocolManagerDelegate return NULL,
+ // because FakeSafeBrowsingDatabaseManager does not implement
+ // LocalSafeBrowsingDatabaseManager.
+ DCHECK(safe_browsing_factory_->test_safe_browsing_service());
Nathan Parker 2016/05/07 00:05:32 I'm not not sure how the comment applies to this D
Jialiu Lin 2016/05/12 21:53:58 Oops, sorry it is a todo for myself. Comments remo
+#endif
}
// Convenience function to get the currently active WebContents in
@@ -1482,10 +1452,11 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest {
return static_cast<int>(history_list->GetSize());
}
-#if defined(FULL_SAFE_BROWSING)
+#if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
FakeSafeBrowsingDatabaseManager* GetFakeSafeBrowsingDatabaseManager() {
- return safe_browsing_factory_->most_recent_service()->
- fake_database_manager();
+ return static_cast<FakeSafeBrowsingDatabaseManager*>(
+ safe_browsing_factory_->test_safe_browsing_service()
+ ->database_manager().get());
}
#endif
@@ -1724,8 +1695,9 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest {
}
TestPrerenderContentsFactory* prerender_contents_factory_;
-#if defined(FULL_SAFE_BROWSING)
- std::unique_ptr<TestSafeBrowsingServiceFactory> safe_browsing_factory_;
+#if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
+ std::unique_ptr<
+ safe_browsing::TestSafeBrowsingServiceFactory> safe_browsing_factory_;
#endif
NeverRunsExternalProtocolHandlerDelegate external_protocol_handler_delegate_;
GURL dest_url_;
@@ -2996,7 +2968,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLClientCertIframe) {
0);
}
-#if defined(FULL_SAFE_BROWSING)
+#if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
// Ensures that we do not prerender pages with a safe browsing
// interstitial.
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSafeBrowsingTopLevel) {

Powered by Google App Engine
This is Rietveld 408576698