Chromium Code Reviews| 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) { |