| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // This test creates a safebrowsing service using test safebrowsing database | 5 // This test creates a safebrowsing service using test safebrowsing database |
| 6 // and a test protocol manager. It is used to test logics in safebrowsing | 6 // and a test protocol manager. It is used to test logics in safebrowsing |
| 7 // service. | 7 // service. |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 SafeBrowsingProtocolManager::FullHashCallback callback, | 64 SafeBrowsingProtocolManager::FullHashCallback callback, |
| 65 const std::vector<SBFullHashResult>& result) { | 65 const std::vector<SBFullHashResult>& result) { |
| 66 callback.Run(result, base::TimeDelta::FromMinutes(45)); | 66 callback.Run(result, base::TimeDelta::FromMinutes(45)); |
| 67 } | 67 } |
| 68 | 68 |
| 69 class FakeSafeBrowsingService : public SafeBrowsingService { | 69 class FakeSafeBrowsingService : public SafeBrowsingService { |
| 70 public: | 70 public: |
| 71 explicit FakeSafeBrowsingService(const std::string& url_prefix) | 71 explicit FakeSafeBrowsingService(const std::string& url_prefix) |
| 72 : url_prefix_(url_prefix) {} | 72 : url_prefix_(url_prefix) {} |
| 73 | 73 |
| 74 virtual SafeBrowsingProtocolConfig GetProtocolConfig() const override { | 74 SafeBrowsingProtocolConfig GetProtocolConfig() const override { |
| 75 SafeBrowsingProtocolConfig config; | 75 SafeBrowsingProtocolConfig config; |
| 76 config.url_prefix = url_prefix_; | 76 config.url_prefix = url_prefix_; |
| 77 // Makes sure the auto update is not triggered. The tests will force the | 77 // Makes sure the auto update is not triggered. The tests will force the |
| 78 // update when needed. | 78 // update when needed. |
| 79 config.disable_auto_update = true; | 79 config.disable_auto_update = true; |
| 80 #if defined(OS_ANDROID) | 80 #if defined(OS_ANDROID) |
| 81 config.disable_connection_check = true; | 81 config.disable_connection_check = true; |
| 82 #endif | 82 #endif |
| 83 config.client_name = "browser_tests"; | 83 config.client_name = "browser_tests"; |
| 84 return config; | 84 return config; |
| 85 } | 85 } |
| 86 | 86 |
| 87 private: | 87 private: |
| 88 virtual ~FakeSafeBrowsingService() {} | 88 ~FakeSafeBrowsingService() override {} |
| 89 | 89 |
| 90 std::string url_prefix_; | 90 std::string url_prefix_; |
| 91 | 91 |
| 92 DISALLOW_COPY_AND_ASSIGN(FakeSafeBrowsingService); | 92 DISALLOW_COPY_AND_ASSIGN(FakeSafeBrowsingService); |
| 93 }; | 93 }; |
| 94 | 94 |
| 95 // Factory that creates FakeSafeBrowsingService instances. | 95 // Factory that creates FakeSafeBrowsingService instances. |
| 96 class TestSafeBrowsingServiceFactory : public SafeBrowsingServiceFactory { | 96 class TestSafeBrowsingServiceFactory : public SafeBrowsingServiceFactory { |
| 97 public: | 97 public: |
| 98 explicit TestSafeBrowsingServiceFactory(const std::string& url_prefix) | 98 explicit TestSafeBrowsingServiceFactory(const std::string& url_prefix) |
| 99 : url_prefix_(url_prefix) {} | 99 : url_prefix_(url_prefix) {} |
| 100 | 100 |
| 101 virtual SafeBrowsingService* CreateSafeBrowsingService() override { | 101 SafeBrowsingService* CreateSafeBrowsingService() override { |
| 102 return new FakeSafeBrowsingService(url_prefix_); | 102 return new FakeSafeBrowsingService(url_prefix_); |
| 103 } | 103 } |
| 104 | 104 |
| 105 private: | 105 private: |
| 106 std::string url_prefix_; | 106 std::string url_prefix_; |
| 107 }; | 107 }; |
| 108 | 108 |
| 109 // A SafeBrowingDatabase class that allows us to inject the malicious URLs. | 109 // A SafeBrowingDatabase class that allows us to inject the malicious URLs. |
| 110 class TestSafeBrowsingDatabase : public SafeBrowsingDatabase { | 110 class TestSafeBrowsingDatabase : public SafeBrowsingDatabase { |
| 111 public: | 111 public: |
| 112 TestSafeBrowsingDatabase() {} | 112 TestSafeBrowsingDatabase() {} |
| 113 | 113 |
| 114 virtual ~TestSafeBrowsingDatabase() {} | 114 ~TestSafeBrowsingDatabase() override {} |
| 115 | 115 |
| 116 // Initializes the database with the given filename. | 116 // Initializes the database with the given filename. |
| 117 virtual void Init(const base::FilePath& filename) override {} | 117 void Init(const base::FilePath& filename) override {} |
| 118 | 118 |
| 119 // Deletes the current database and creates a new one. | 119 // Deletes the current database and creates a new one. |
| 120 virtual bool ResetDatabase() override { | 120 bool ResetDatabase() override { |
| 121 badurls_.clear(); | 121 badurls_.clear(); |
| 122 return true; | 122 return true; |
| 123 } | 123 } |
| 124 | 124 |
| 125 // Called on the IO thread to check if the given URL is safe or not. If we | 125 // Called on the IO thread to check if the given URL is safe or not. If we |
| 126 // can synchronously determine that the URL is safe, CheckUrl returns true, | 126 // can synchronously determine that the URL is safe, CheckUrl returns true, |
| 127 // otherwise it returns false. | 127 // otherwise it returns false. |
| 128 virtual bool ContainsBrowseUrl( | 128 bool ContainsBrowseUrl(const GURL& url, |
| 129 const GURL& url, | 129 std::vector<SBPrefix>* prefix_hits, |
| 130 std::vector<SBPrefix>* prefix_hits, | 130 std::vector<SBFullHashResult>* cache_hits) override { |
| 131 std::vector<SBFullHashResult>* cache_hits) override { | |
| 132 cache_hits->clear(); | 131 cache_hits->clear(); |
| 133 return ContainsUrl(safe_browsing_util::MALWARE, | 132 return ContainsUrl(safe_browsing_util::MALWARE, |
| 134 safe_browsing_util::PHISH, | 133 safe_browsing_util::PHISH, |
| 135 std::vector<GURL>(1, url), | 134 std::vector<GURL>(1, url), |
| 136 prefix_hits); | 135 prefix_hits); |
| 137 } | 136 } |
| 138 virtual bool ContainsDownloadUrl( | 137 bool ContainsDownloadUrl(const std::vector<GURL>& urls, |
| 139 const std::vector<GURL>& urls, | 138 std::vector<SBPrefix>* prefix_hits) override { |
| 140 std::vector<SBPrefix>* prefix_hits) override { | |
| 141 bool found = ContainsUrl(safe_browsing_util::BINURL, | 139 bool found = ContainsUrl(safe_browsing_util::BINURL, |
| 142 safe_browsing_util::BINURL, | 140 safe_browsing_util::BINURL, |
| 143 urls, | 141 urls, |
| 144 prefix_hits); | 142 prefix_hits); |
| 145 if (!found) | 143 if (!found) |
| 146 return false; | 144 return false; |
| 147 DCHECK_LE(1U, prefix_hits->size()); | 145 DCHECK_LE(1U, prefix_hits->size()); |
| 148 return true; | 146 return true; |
| 149 } | 147 } |
| 150 virtual bool ContainsCsdWhitelistedUrl(const GURL& url) override { | 148 bool ContainsCsdWhitelistedUrl(const GURL& url) override { return true; } |
| 149 bool ContainsDownloadWhitelistedString(const std::string& str) override { |
| 151 return true; | 150 return true; |
| 152 } | 151 } |
| 153 virtual bool ContainsDownloadWhitelistedString( | 152 bool ContainsDownloadWhitelistedUrl(const GURL& url) override { return true; } |
| 154 const std::string& str) override { | 153 bool ContainsExtensionPrefixes(const std::vector<SBPrefix>& prefixes, |
| 154 std::vector<SBPrefix>* prefix_hits) override { |
| 155 return true; | 155 return true; |
| 156 } | 156 } |
| 157 virtual bool ContainsDownloadWhitelistedUrl(const GURL& url) override { | 157 bool ContainsSideEffectFreeWhitelistUrl(const GURL& url) override { |
| 158 return true; | 158 return true; |
| 159 } | 159 } |
| 160 virtual bool ContainsExtensionPrefixes( | 160 bool ContainsMalwareIP(const std::string& ip_address) override { |
| 161 const std::vector<SBPrefix>& prefixes, | |
| 162 std::vector<SBPrefix>* prefix_hits) override { | |
| 163 return true; | 161 return true; |
| 164 } | 162 } |
| 165 virtual bool ContainsSideEffectFreeWhitelistUrl(const GURL& url) override { | 163 bool UpdateStarted(std::vector<SBListChunkRanges>* lists) override { |
| 166 return true; | |
| 167 } | |
| 168 virtual bool ContainsMalwareIP(const std::string& ip_address) override { | |
| 169 return true; | |
| 170 } | |
| 171 virtual bool UpdateStarted(std::vector<SBListChunkRanges>* lists) override { | |
| 172 ADD_FAILURE() << "Not implemented."; | 164 ADD_FAILURE() << "Not implemented."; |
| 173 return false; | 165 return false; |
| 174 } | 166 } |
| 175 virtual void InsertChunks( | 167 void InsertChunks(const std::string& list_name, |
| 176 const std::string& list_name, | 168 const std::vector<SBChunkData*>& chunks) override { |
| 177 const std::vector<SBChunkData*>& chunks) override { | |
| 178 ADD_FAILURE() << "Not implemented."; | 169 ADD_FAILURE() << "Not implemented."; |
| 179 } | 170 } |
| 180 virtual void DeleteChunks( | 171 void DeleteChunks(const std::vector<SBChunkDelete>& chunk_deletes) override { |
| 181 const std::vector<SBChunkDelete>& chunk_deletes) override { | |
| 182 ADD_FAILURE() << "Not implemented."; | 172 ADD_FAILURE() << "Not implemented."; |
| 183 } | 173 } |
| 184 virtual void UpdateFinished(bool update_succeeded) override { | 174 void UpdateFinished(bool update_succeeded) override { |
| 185 ADD_FAILURE() << "Not implemented."; | 175 ADD_FAILURE() << "Not implemented."; |
| 186 } | 176 } |
| 187 virtual void CacheHashResults( | 177 void CacheHashResults(const std::vector<SBPrefix>& prefixes, |
| 188 const std::vector<SBPrefix>& prefixes, | 178 const std::vector<SBFullHashResult>& cache_hits, |
| 189 const std::vector<SBFullHashResult>& cache_hits, | 179 const base::TimeDelta& cache_lifetime) override { |
| 190 const base::TimeDelta& cache_lifetime) override { | |
| 191 // Do nothing for the cache. | 180 // Do nothing for the cache. |
| 192 } | 181 } |
| 193 virtual bool IsMalwareIPMatchKillSwitchOn() override { | 182 bool IsMalwareIPMatchKillSwitchOn() override { return false; } |
| 194 return false; | 183 bool IsCsdWhitelistKillSwitchOn() override { return false; } |
| 195 } | |
| 196 virtual bool IsCsdWhitelistKillSwitchOn() override { | |
| 197 return false; | |
| 198 } | |
| 199 | 184 |
| 200 // Fill up the database with test URL. | 185 // Fill up the database with test URL. |
| 201 void AddUrl(const GURL& url, | 186 void AddUrl(const GURL& url, |
| 202 int list_id, | 187 int list_id, |
| 203 const std::vector<SBPrefix>& prefix_hits) { | 188 const std::vector<SBPrefix>& prefix_hits) { |
| 204 badurls_[url.spec()].list_id = list_id; | 189 badurls_[url.spec()].list_id = list_id; |
| 205 badurls_[url.spec()].prefix_hits = prefix_hits; | 190 badurls_[url.spec()].prefix_hits = prefix_hits; |
| 206 } | 191 } |
| 207 | 192 |
| 208 // Fill up the database with test hash digest. | 193 // Fill up the database with test hash digest. |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 } | 226 } |
| 242 | 227 |
| 243 base::hash_map<std::string, Hits> badurls_; | 228 base::hash_map<std::string, Hits> badurls_; |
| 244 base::hash_set<SBPrefix> download_digest_prefix_; | 229 base::hash_set<SBPrefix> download_digest_prefix_; |
| 245 }; | 230 }; |
| 246 | 231 |
| 247 // Factory that creates TestSafeBrowsingDatabase instances. | 232 // Factory that creates TestSafeBrowsingDatabase instances. |
| 248 class TestSafeBrowsingDatabaseFactory : public SafeBrowsingDatabaseFactory { | 233 class TestSafeBrowsingDatabaseFactory : public SafeBrowsingDatabaseFactory { |
| 249 public: | 234 public: |
| 250 TestSafeBrowsingDatabaseFactory() : db_(NULL) {} | 235 TestSafeBrowsingDatabaseFactory() : db_(NULL) {} |
| 251 virtual ~TestSafeBrowsingDatabaseFactory() {} | 236 ~TestSafeBrowsingDatabaseFactory() override {} |
| 252 | 237 |
| 253 virtual SafeBrowsingDatabase* CreateSafeBrowsingDatabase( | 238 SafeBrowsingDatabase* CreateSafeBrowsingDatabase( |
| 254 bool enable_download_protection, | 239 bool enable_download_protection, |
| 255 bool enable_client_side_whitelist, | 240 bool enable_client_side_whitelist, |
| 256 bool enable_download_whitelist, | 241 bool enable_download_whitelist, |
| 257 bool enable_extension_blacklist, | 242 bool enable_extension_blacklist, |
| 258 bool enable_side_effect_free_whitelist, | 243 bool enable_side_effect_free_whitelist, |
| 259 bool enable_ip_blacklist) override { | 244 bool enable_ip_blacklist) override { |
| 260 db_ = new TestSafeBrowsingDatabase(); | 245 db_ = new TestSafeBrowsingDatabase(); |
| 261 return db_; | 246 return db_; |
| 262 } | 247 } |
| 263 TestSafeBrowsingDatabase* GetDb() { | 248 TestSafeBrowsingDatabase* GetDb() { |
| 264 return db_; | 249 return db_; |
| 265 } | 250 } |
| 266 private: | 251 private: |
| 267 // Owned by the SafebrowsingService. | 252 // Owned by the SafebrowsingService. |
| 268 TestSafeBrowsingDatabase* db_; | 253 TestSafeBrowsingDatabase* db_; |
| 269 }; | 254 }; |
| 270 | 255 |
| 271 // A TestProtocolManager that could return fixed responses from | 256 // A TestProtocolManager that could return fixed responses from |
| 272 // safebrowsing server for testing purpose. | 257 // safebrowsing server for testing purpose. |
| 273 class TestProtocolManager : public SafeBrowsingProtocolManager { | 258 class TestProtocolManager : public SafeBrowsingProtocolManager { |
| 274 public: | 259 public: |
| 275 TestProtocolManager(SafeBrowsingProtocolManagerDelegate* delegate, | 260 TestProtocolManager(SafeBrowsingProtocolManagerDelegate* delegate, |
| 276 net::URLRequestContextGetter* request_context_getter, | 261 net::URLRequestContextGetter* request_context_getter, |
| 277 const SafeBrowsingProtocolConfig& config) | 262 const SafeBrowsingProtocolConfig& config) |
| 278 : SafeBrowsingProtocolManager(delegate, request_context_getter, config) { | 263 : SafeBrowsingProtocolManager(delegate, request_context_getter, config) { |
| 279 create_count_++; | 264 create_count_++; |
| 280 } | 265 } |
| 281 | 266 |
| 282 virtual ~TestProtocolManager() { | 267 ~TestProtocolManager() override { delete_count_++; } |
| 283 delete_count_++; | |
| 284 } | |
| 285 | 268 |
| 286 // This function is called when there is a prefix hit in local safebrowsing | 269 // This function is called when there is a prefix hit in local safebrowsing |
| 287 // database and safebrowsing service issues a get hash request to backends. | 270 // database and safebrowsing service issues a get hash request to backends. |
| 288 // We return a result from the prefilled full_hashes_ hash_map to simulate | 271 // We return a result from the prefilled full_hashes_ hash_map to simulate |
| 289 // server's response. At the same time, latency is added to simulate real | 272 // server's response. At the same time, latency is added to simulate real |
| 290 // life network issues. | 273 // life network issues. |
| 291 virtual void GetFullHash( | 274 void GetFullHash(const std::vector<SBPrefix>& prefixes, |
| 292 const std::vector<SBPrefix>& prefixes, | 275 SafeBrowsingProtocolManager::FullHashCallback callback, |
| 293 SafeBrowsingProtocolManager::FullHashCallback callback, | 276 bool is_download) override { |
| 294 bool is_download) override { | |
| 295 BrowserThread::PostDelayedTask( | 277 BrowserThread::PostDelayedTask( |
| 296 BrowserThread::IO, FROM_HERE, | 278 BrowserThread::IO, FROM_HERE, |
| 297 base::Bind(InvokeFullHashCallback, callback, full_hashes_), | 279 base::Bind(InvokeFullHashCallback, callback, full_hashes_), |
| 298 delay_); | 280 delay_); |
| 299 } | 281 } |
| 300 | 282 |
| 301 // Prepare the GetFullHash results for the next request. | 283 // Prepare the GetFullHash results for the next request. |
| 302 void SetGetFullHashResponse(const SBFullHashResult& full_hash_result) { | 284 void SetGetFullHashResponse(const SBFullHashResult& full_hash_result) { |
| 303 full_hashes_.clear(); | 285 full_hashes_.clear(); |
| 304 full_hashes_.push_back(full_hash_result); | 286 full_hashes_.push_back(full_hash_result); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 325 | 307 |
| 326 // static | 308 // static |
| 327 int TestProtocolManager::create_count_ = 0; | 309 int TestProtocolManager::create_count_ = 0; |
| 328 // static | 310 // static |
| 329 int TestProtocolManager::delete_count_ = 0; | 311 int TestProtocolManager::delete_count_ = 0; |
| 330 | 312 |
| 331 // Factory that creates TestProtocolManager instances. | 313 // Factory that creates TestProtocolManager instances. |
| 332 class TestSBProtocolManagerFactory : public SBProtocolManagerFactory { | 314 class TestSBProtocolManagerFactory : public SBProtocolManagerFactory { |
| 333 public: | 315 public: |
| 334 TestSBProtocolManagerFactory() : pm_(NULL) {} | 316 TestSBProtocolManagerFactory() : pm_(NULL) {} |
| 335 virtual ~TestSBProtocolManagerFactory() {} | 317 ~TestSBProtocolManagerFactory() override {} |
| 336 | 318 |
| 337 virtual SafeBrowsingProtocolManager* CreateProtocolManager( | 319 SafeBrowsingProtocolManager* CreateProtocolManager( |
| 338 SafeBrowsingProtocolManagerDelegate* delegate, | 320 SafeBrowsingProtocolManagerDelegate* delegate, |
| 339 net::URLRequestContextGetter* request_context_getter, | 321 net::URLRequestContextGetter* request_context_getter, |
| 340 const SafeBrowsingProtocolConfig& config) override { | 322 const SafeBrowsingProtocolConfig& config) override { |
| 341 pm_ = new TestProtocolManager(delegate, request_context_getter, config); | 323 pm_ = new TestProtocolManager(delegate, request_context_getter, config); |
| 342 return pm_; | 324 return pm_; |
| 343 } | 325 } |
| 344 | 326 |
| 345 TestProtocolManager* GetProtocolManager() { | 327 TestProtocolManager* GetProtocolManager() { |
| 346 return pm_; | 328 return pm_; |
| 347 } | 329 } |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 507 METADATA_LANDING, | 489 METADATA_LANDING, |
| 508 METADATA_DISTRIBUTION, | 490 METADATA_DISTRIBUTION, |
| 509 }; | 491 }; |
| 510 | 492 |
| 511 class SafeBrowsingServiceMetadataTest | 493 class SafeBrowsingServiceMetadataTest |
| 512 : public SafeBrowsingServiceTest, | 494 : public SafeBrowsingServiceTest, |
| 513 public ::testing::WithParamInterface<MalwareMetadataTestType> { | 495 public ::testing::WithParamInterface<MalwareMetadataTestType> { |
| 514 public: | 496 public: |
| 515 SafeBrowsingServiceMetadataTest() {} | 497 SafeBrowsingServiceMetadataTest() {} |
| 516 | 498 |
| 517 virtual void SetUpOnMainThread() override { | 499 void SetUpOnMainThread() override { |
| 518 SafeBrowsingServiceTest::SetUpOnMainThread(); | 500 SafeBrowsingServiceTest::SetUpOnMainThread(); |
| 519 g_browser_process->safe_browsing_service()->ui_manager()->AddObserver( | 501 g_browser_process->safe_browsing_service()->ui_manager()->AddObserver( |
| 520 &observer_); | 502 &observer_); |
| 521 } | 503 } |
| 522 | 504 |
| 523 virtual void TearDownOnMainThread() override { | 505 void TearDownOnMainThread() override { |
| 524 g_browser_process->safe_browsing_service()->ui_manager()->RemoveObserver( | 506 g_browser_process->safe_browsing_service()->ui_manager()->RemoveObserver( |
| 525 &observer_); | 507 &observer_); |
| 526 SafeBrowsingServiceTest::TearDownOnMainThread(); | 508 SafeBrowsingServiceTest::TearDownOnMainThread(); |
| 527 } | 509 } |
| 528 | 510 |
| 529 void GenUrlFullhashResultWithMetadata(const GURL& url, | 511 void GenUrlFullhashResultWithMetadata(const GURL& url, |
| 530 SBFullHashResult* full_hash) { | 512 SBFullHashResult* full_hash) { |
| 531 GenUrlFullhashResult(url, safe_browsing_util::MALWARE, full_hash); | 513 GenUrlFullhashResult(url, safe_browsing_util::MALWARE, full_hash); |
| 532 | 514 |
| 533 safe_browsing::MalwarePatternType proto; | 515 safe_browsing::MalwarePatternType proto; |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 737 void CheckDownloadUrl(const std::vector<GURL>& url_chain) { | 719 void CheckDownloadUrl(const std::vector<GURL>& url_chain) { |
| 738 BrowserThread::PostTask( | 720 BrowserThread::PostTask( |
| 739 BrowserThread::IO, FROM_HERE, | 721 BrowserThread::IO, FROM_HERE, |
| 740 base::Bind(&TestSBClient::CheckDownloadUrlOnIOThread, | 722 base::Bind(&TestSBClient::CheckDownloadUrlOnIOThread, |
| 741 this, url_chain)); | 723 this, url_chain)); |
| 742 content::RunMessageLoop(); // Will stop in OnCheckDownloadUrlResult. | 724 content::RunMessageLoop(); // Will stop in OnCheckDownloadUrlResult. |
| 743 } | 725 } |
| 744 | 726 |
| 745 private: | 727 private: |
| 746 friend class base::RefCountedThreadSafe<TestSBClient>; | 728 friend class base::RefCountedThreadSafe<TestSBClient>; |
| 747 virtual ~TestSBClient() {} | 729 ~TestSBClient() override {} |
| 748 | 730 |
| 749 void CheckDownloadUrlOnIOThread(const std::vector<GURL>& url_chain) { | 731 void CheckDownloadUrlOnIOThread(const std::vector<GURL>& url_chain) { |
| 750 safe_browsing_service_->database_manager()-> | 732 safe_browsing_service_->database_manager()-> |
| 751 CheckDownloadUrl(url_chain, this); | 733 CheckDownloadUrl(url_chain, this); |
| 752 } | 734 } |
| 753 | 735 |
| 754 // Called when the result of checking a download URL is known. | 736 // Called when the result of checking a download URL is known. |
| 755 virtual void OnCheckDownloadUrlResult(const std::vector<GURL>& url_chain, | 737 void OnCheckDownloadUrlResult(const std::vector<GURL>& url_chain, |
| 756 SBThreatType threat_type) override { | 738 SBThreatType threat_type) override { |
| 757 threat_type_ = threat_type; | 739 threat_type_ = threat_type; |
| 758 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 740 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| 759 base::Bind(&TestSBClient::DownloadCheckDone, this)); | 741 base::Bind(&TestSBClient::DownloadCheckDone, this)); |
| 760 } | 742 } |
| 761 | 743 |
| 762 void DownloadCheckDone() { | 744 void DownloadCheckDone() { |
| 763 base::MessageLoopForUI::current()->Quit(); | 745 base::MessageLoopForUI::current()->Quit(); |
| 764 } | 746 } |
| 765 | 747 |
| 766 SBThreatType threat_type_; | 748 SBThreatType threat_type_; |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1006 | 988 |
| 1007 InProcessBrowserTest::SetUp(); | 989 InProcessBrowserTest::SetUp(); |
| 1008 } | 990 } |
| 1009 | 991 |
| 1010 virtual void TearDown() override { | 992 virtual void TearDown() override { |
| 1011 InProcessBrowserTest::TearDown(); | 993 InProcessBrowserTest::TearDown(); |
| 1012 | 994 |
| 1013 SafeBrowsingService::RegisterFactory(NULL); | 995 SafeBrowsingService::RegisterFactory(NULL); |
| 1014 } | 996 } |
| 1015 | 997 |
| 1016 virtual bool SetUpUserDataDirectory() override { | 998 bool SetUpUserDataDirectory() override { |
| 1017 base::FilePath cookie_path( | 999 base::FilePath cookie_path( |
| 1018 SafeBrowsingService::GetCookieFilePathForTesting()); | 1000 SafeBrowsingService::GetCookieFilePathForTesting()); |
| 1019 EXPECT_FALSE(base::PathExists(cookie_path)); | 1001 EXPECT_FALSE(base::PathExists(cookie_path)); |
| 1020 | 1002 |
| 1021 base::FilePath test_dir; | 1003 base::FilePath test_dir; |
| 1022 if (!PathService::Get(chrome::DIR_TEST_DATA, &test_dir)) { | 1004 if (!PathService::Get(chrome::DIR_TEST_DATA, &test_dir)) { |
| 1023 EXPECT_TRUE(false); | 1005 EXPECT_TRUE(false); |
| 1024 return false; | 1006 return false; |
| 1025 } | 1007 } |
| 1026 | 1008 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1052 return false; | 1034 return false; |
| 1053 } | 1035 } |
| 1054 if (!smt.Run()) { | 1036 if (!smt.Run()) { |
| 1055 EXPECT_TRUE(false); | 1037 EXPECT_TRUE(false); |
| 1056 return false; | 1038 return false; |
| 1057 } | 1039 } |
| 1058 | 1040 |
| 1059 return InProcessBrowserTest::SetUpUserDataDirectory(); | 1041 return InProcessBrowserTest::SetUpUserDataDirectory(); |
| 1060 } | 1042 } |
| 1061 | 1043 |
| 1062 virtual void TearDownInProcessBrowserTestFixture() override { | 1044 void TearDownInProcessBrowserTestFixture() override { |
| 1063 InProcessBrowserTest::TearDownInProcessBrowserTestFixture(); | 1045 InProcessBrowserTest::TearDownInProcessBrowserTestFixture(); |
| 1064 | 1046 |
| 1065 sql::Connection db; | 1047 sql::Connection db; |
| 1066 base::FilePath cookie_path( | 1048 base::FilePath cookie_path( |
| 1067 SafeBrowsingService::GetCookieFilePathForTesting()); | 1049 SafeBrowsingService::GetCookieFilePathForTesting()); |
| 1068 ASSERT_TRUE(db.Open(cookie_path)); | 1050 ASSERT_TRUE(db.Open(cookie_path)); |
| 1069 | 1051 |
| 1070 sql::Statement smt(db.GetUniqueStatement( | 1052 sql::Statement smt(db.GetUniqueStatement( |
| 1071 "SELECT name, value FROM cookies ORDER BY name")); | 1053 "SELECT name, value FROM cookies ORDER BY name")); |
| 1072 ASSERT_TRUE(smt.is_valid()); | 1054 ASSERT_TRUE(smt.is_valid()); |
| 1073 | 1055 |
| 1074 ASSERT_TRUE(smt.Step()); | 1056 ASSERT_TRUE(smt.Step()); |
| 1075 ASSERT_EQ("a", smt.ColumnString(0)); | 1057 ASSERT_EQ("a", smt.ColumnString(0)); |
| 1076 ASSERT_EQ("b", smt.ColumnString(1)); | 1058 ASSERT_EQ("b", smt.ColumnString(1)); |
| 1077 ASSERT_TRUE(smt.Step()); | 1059 ASSERT_TRUE(smt.Step()); |
| 1078 ASSERT_EQ("c", smt.ColumnString(0)); | 1060 ASSERT_EQ("c", smt.ColumnString(0)); |
| 1079 ASSERT_EQ("d", smt.ColumnString(1)); | 1061 ASSERT_EQ("d", smt.ColumnString(1)); |
| 1080 EXPECT_FALSE(smt.Step()); | 1062 EXPECT_FALSE(smt.Step()); |
| 1081 } | 1063 } |
| 1082 | 1064 |
| 1083 virtual void SetUpOnMainThread() override { | 1065 void SetUpOnMainThread() override { |
| 1084 sb_service_ = g_browser_process->safe_browsing_service(); | 1066 sb_service_ = g_browser_process->safe_browsing_service(); |
| 1085 ASSERT_TRUE(sb_service_.get() != NULL); | 1067 ASSERT_TRUE(sb_service_.get() != NULL); |
| 1086 } | 1068 } |
| 1087 | 1069 |
| 1088 virtual void TearDownOnMainThread() override { | 1070 void TearDownOnMainThread() override { sb_service_ = NULL; } |
| 1089 sb_service_ = NULL; | |
| 1090 } | |
| 1091 | 1071 |
| 1092 void ForceUpdate() { | 1072 void ForceUpdate() { |
| 1093 sb_service_->protocol_manager()->ForceScheduleNextUpdate( | 1073 sb_service_->protocol_manager()->ForceScheduleNextUpdate( |
| 1094 base::TimeDelta::FromSeconds(0)); | 1074 base::TimeDelta::FromSeconds(0)); |
| 1095 } | 1075 } |
| 1096 | 1076 |
| 1097 scoped_refptr<SafeBrowsingService> sb_service_; | 1077 scoped_refptr<SafeBrowsingService> sb_service_; |
| 1098 | 1078 |
| 1099 private: | 1079 private: |
| 1100 scoped_ptr<TestSafeBrowsingServiceFactory> sb_factory_; | 1080 scoped_ptr<TestSafeBrowsingServiceFactory> sb_factory_; |
| 1101 | 1081 |
| 1102 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingDatabaseManagerCookieTest); | 1082 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingDatabaseManagerCookieTest); |
| 1103 }; | 1083 }; |
| 1104 | 1084 |
| 1105 // Test that a Safe Browsing database update request both sends cookies and can | 1085 // Test that a Safe Browsing database update request both sends cookies and can |
| 1106 // save cookies. | 1086 // save cookies. |
| 1107 IN_PROC_BROWSER_TEST_F(SafeBrowsingDatabaseManagerCookieTest, | 1087 IN_PROC_BROWSER_TEST_F(SafeBrowsingDatabaseManagerCookieTest, |
| 1108 TestSBUpdateCookies) { | 1088 TestSBUpdateCookies) { |
| 1109 content::WindowedNotificationObserver observer( | 1089 content::WindowedNotificationObserver observer( |
| 1110 chrome::NOTIFICATION_SAFE_BROWSING_UPDATE_COMPLETE, | 1090 chrome::NOTIFICATION_SAFE_BROWSING_UPDATE_COMPLETE, |
| 1111 content::Source<SafeBrowsingDatabaseManager>( | 1091 content::Source<SafeBrowsingDatabaseManager>( |
| 1112 sb_service_->database_manager().get())); | 1092 sb_service_->database_manager().get())); |
| 1113 BrowserThread::PostTask( | 1093 BrowserThread::PostTask( |
| 1114 BrowserThread::IO, | 1094 BrowserThread::IO, |
| 1115 FROM_HERE, | 1095 FROM_HERE, |
| 1116 base::Bind(&SafeBrowsingDatabaseManagerCookieTest::ForceUpdate, this)); | 1096 base::Bind(&SafeBrowsingDatabaseManagerCookieTest::ForceUpdate, this)); |
| 1117 observer.Wait(); | 1097 observer.Wait(); |
| 1118 } | 1098 } |
| OLD | NEW |