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 "chrome/browser/safe_browsing/safe_browsing_service.h" | 9 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
10 | 10 |
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 // database and safebrowsing service issues a get hash request to backends. | 398 // database and safebrowsing service issues a get hash request to backends. |
399 // We return a result from the prefilled full_hashes_ hash_map to simulate | 399 // We return a result from the prefilled full_hashes_ hash_map to simulate |
400 // server's response. At the same time, latency is added to simulate real | 400 // server's response. At the same time, latency is added to simulate real |
401 // life network issues. | 401 // life network issues. |
402 void GetFullHash(const std::vector<SBPrefix>& prefixes, | 402 void GetFullHash(const std::vector<SBPrefix>& prefixes, |
403 SafeBrowsingProtocolManager::FullHashCallback callback, | 403 SafeBrowsingProtocolManager::FullHashCallback callback, |
404 bool is_download, | 404 bool is_download, |
405 ExtendedReportingLevel reporting_level) override { | 405 ExtendedReportingLevel reporting_level) override { |
406 BrowserThread::PostDelayedTask( | 406 BrowserThread::PostDelayedTask( |
407 BrowserThread::IO, FROM_HERE, | 407 BrowserThread::IO, FROM_HERE, |
408 base::Bind(InvokeFullHashCallback, callback, full_hashes_), delay_); | 408 base::BindOnce(InvokeFullHashCallback, callback, full_hashes_), delay_); |
409 } | 409 } |
410 | 410 |
411 // Prepare the GetFullHash results for the next request. | 411 // Prepare the GetFullHash results for the next request. |
412 void AddGetFullHashResponse(const SBFullHashResult& full_hash_result) { | 412 void AddGetFullHashResponse(const SBFullHashResult& full_hash_result) { |
413 full_hashes_.push_back(full_hash_result); | 413 full_hashes_.push_back(full_hash_result); |
414 } | 414 } |
415 | 415 |
416 void IntroduceDelay(const base::TimeDelta& delay) { delay_ = delay; } | 416 void IntroduceDelay(const base::TimeDelta& delay) { delay_ = delay; } |
417 | 417 |
418 static int create_count() { return create_count_; } | 418 static int create_count() { return create_count_; } |
(...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1186 : threat_type_(SB_THREAT_TYPE_SAFE), | 1186 : threat_type_(SB_THREAT_TYPE_SAFE), |
1187 safe_browsing_service_(g_browser_process->safe_browsing_service()) {} | 1187 safe_browsing_service_(g_browser_process->safe_browsing_service()) {} |
1188 | 1188 |
1189 SBThreatType GetThreatType() const { return threat_type_; } | 1189 SBThreatType GetThreatType() const { return threat_type_; } |
1190 | 1190 |
1191 std::string GetThreatHash() const { return threat_hash_; } | 1191 std::string GetThreatHash() const { return threat_hash_; } |
1192 | 1192 |
1193 void CheckDownloadUrl(const std::vector<GURL>& url_chain) { | 1193 void CheckDownloadUrl(const std::vector<GURL>& url_chain) { |
1194 BrowserThread::PostTask( | 1194 BrowserThread::PostTask( |
1195 BrowserThread::IO, FROM_HERE, | 1195 BrowserThread::IO, FROM_HERE, |
1196 base::Bind(&TestSBClient::CheckDownloadUrlOnIOThread, this, url_chain)); | 1196 base::BindOnce(&TestSBClient::CheckDownloadUrlOnIOThread, this, |
| 1197 url_chain)); |
1197 content::RunMessageLoop(); // Will stop in OnCheckDownloadUrlResult. | 1198 content::RunMessageLoop(); // Will stop in OnCheckDownloadUrlResult. |
1198 } | 1199 } |
1199 | 1200 |
1200 void CheckBrowseUrl(const GURL& url) { | 1201 void CheckBrowseUrl(const GURL& url) { |
1201 BrowserThread::PostTask( | 1202 BrowserThread::PostTask( |
1202 BrowserThread::IO, FROM_HERE, | 1203 BrowserThread::IO, FROM_HERE, |
1203 base::Bind(&TestSBClient::CheckBrowseUrlOnIOThread, this, url)); | 1204 base::BindOnce(&TestSBClient::CheckBrowseUrlOnIOThread, this, url)); |
1204 content::RunMessageLoop(); // Will stop in OnCheckBrowseUrlResult. | 1205 content::RunMessageLoop(); // Will stop in OnCheckBrowseUrlResult. |
1205 } | 1206 } |
1206 | 1207 |
1207 void CheckResourceUrl(const GURL& url) { | 1208 void CheckResourceUrl(const GURL& url) { |
1208 BrowserThread::PostTask( | 1209 BrowserThread::PostTask( |
1209 BrowserThread::IO, FROM_HERE, | 1210 BrowserThread::IO, FROM_HERE, |
1210 base::Bind(&TestSBClient::CheckResourceUrlOnIOThread, this, url)); | 1211 base::BindOnce(&TestSBClient::CheckResourceUrlOnIOThread, this, url)); |
1211 content::RunMessageLoop(); // Will stop in OnCheckResourceUrlResult. | 1212 content::RunMessageLoop(); // Will stop in OnCheckResourceUrlResult. |
1212 } | 1213 } |
1213 | 1214 |
1214 private: | 1215 private: |
1215 friend class base::RefCountedThreadSafe<TestSBClient>; | 1216 friend class base::RefCountedThreadSafe<TestSBClient>; |
1216 ~TestSBClient() override {} | 1217 ~TestSBClient() override {} |
1217 | 1218 |
1218 void CheckDownloadUrlOnIOThread(const std::vector<GURL>& url_chain) { | 1219 void CheckDownloadUrlOnIOThread(const std::vector<GURL>& url_chain) { |
1219 bool synchronous_safe_signal = | 1220 bool synchronous_safe_signal = |
1220 safe_browsing_service_->database_manager()->CheckDownloadUrl(url_chain, | 1221 safe_browsing_service_->database_manager()->CheckDownloadUrl(url_chain, |
1221 this); | 1222 this); |
1222 if (synchronous_safe_signal) { | 1223 if (synchronous_safe_signal) { |
1223 threat_type_ = SB_THREAT_TYPE_SAFE; | 1224 threat_type_ = SB_THREAT_TYPE_SAFE; |
1224 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 1225 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
1225 base::Bind(&TestSBClient::CheckDone, this)); | 1226 base::BindOnce(&TestSBClient::CheckDone, this)); |
1226 } | 1227 } |
1227 } | 1228 } |
1228 | 1229 |
1229 void CheckBrowseUrlOnIOThread(const GURL& url) { | 1230 void CheckBrowseUrlOnIOThread(const GURL& url) { |
1230 // The async CheckDone() hook will not be called when we have a synchronous | 1231 // The async CheckDone() hook will not be called when we have a synchronous |
1231 // safe signal, handle it right away. | 1232 // safe signal, handle it right away. |
1232 bool synchronous_safe_signal = | 1233 bool synchronous_safe_signal = |
1233 safe_browsing_service_->database_manager()->CheckBrowseUrl(url, this); | 1234 safe_browsing_service_->database_manager()->CheckBrowseUrl(url, this); |
1234 if (synchronous_safe_signal) { | 1235 if (synchronous_safe_signal) { |
1235 threat_type_ = SB_THREAT_TYPE_SAFE; | 1236 threat_type_ = SB_THREAT_TYPE_SAFE; |
1236 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 1237 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
1237 base::Bind(&TestSBClient::CheckDone, this)); | 1238 base::BindOnce(&TestSBClient::CheckDone, this)); |
1238 } | 1239 } |
1239 } | 1240 } |
1240 | 1241 |
1241 void CheckResourceUrlOnIOThread(const GURL& url) { | 1242 void CheckResourceUrlOnIOThread(const GURL& url) { |
1242 bool synchronous_safe_signal = | 1243 bool synchronous_safe_signal = |
1243 safe_browsing_service_->database_manager()->CheckResourceUrl(url, this); | 1244 safe_browsing_service_->database_manager()->CheckResourceUrl(url, this); |
1244 if (synchronous_safe_signal) { | 1245 if (synchronous_safe_signal) { |
1245 threat_type_ = SB_THREAT_TYPE_SAFE; | 1246 threat_type_ = SB_THREAT_TYPE_SAFE; |
1246 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 1247 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
1247 base::Bind(&TestSBClient::CheckDone, this)); | 1248 base::BindOnce(&TestSBClient::CheckDone, this)); |
1248 } | 1249 } |
1249 } | 1250 } |
1250 | 1251 |
1251 // Called when the result of checking a download URL is known. | 1252 // Called when the result of checking a download URL is known. |
1252 void OnCheckDownloadUrlResult(const std::vector<GURL>& /* url_chain */, | 1253 void OnCheckDownloadUrlResult(const std::vector<GURL>& /* url_chain */, |
1253 SBThreatType threat_type) override { | 1254 SBThreatType threat_type) override { |
1254 threat_type_ = threat_type; | 1255 threat_type_ = threat_type; |
1255 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 1256 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
1256 base::Bind(&TestSBClient::CheckDone, this)); | 1257 base::BindOnce(&TestSBClient::CheckDone, this)); |
1257 } | 1258 } |
1258 | 1259 |
1259 // Called when the result of checking a browse URL is known. | 1260 // Called when the result of checking a browse URL is known. |
1260 void OnCheckBrowseUrlResult(const GURL& /* url */, | 1261 void OnCheckBrowseUrlResult(const GURL& /* url */, |
1261 SBThreatType threat_type, | 1262 SBThreatType threat_type, |
1262 const ThreatMetadata& /* metadata */) override { | 1263 const ThreatMetadata& /* metadata */) override { |
1263 threat_type_ = threat_type; | 1264 threat_type_ = threat_type; |
1264 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 1265 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
1265 base::Bind(&TestSBClient::CheckDone, this)); | 1266 base::BindOnce(&TestSBClient::CheckDone, this)); |
1266 } | 1267 } |
1267 | 1268 |
1268 // Called when the result of checking a resource URL is known. | 1269 // Called when the result of checking a resource URL is known. |
1269 void OnCheckResourceUrlResult(const GURL& /* url */, | 1270 void OnCheckResourceUrlResult(const GURL& /* url */, |
1270 SBThreatType threat_type, | 1271 SBThreatType threat_type, |
1271 const std::string& threat_hash) override { | 1272 const std::string& threat_hash) override { |
1272 threat_type_ = threat_type; | 1273 threat_type_ = threat_type; |
1273 threat_hash_ = threat_hash; | 1274 threat_hash_ = threat_hash; |
1274 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 1275 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
1275 base::Bind(&TestSBClient::CheckDone, this)); | 1276 base::BindOnce(&TestSBClient::CheckDone, this)); |
1276 } | 1277 } |
1277 | 1278 |
1278 void CheckDone() { base::MessageLoopForUI::current()->QuitWhenIdle(); } | 1279 void CheckDone() { base::MessageLoopForUI::current()->QuitWhenIdle(); } |
1279 | 1280 |
1280 SBThreatType threat_type_; | 1281 SBThreatType threat_type_; |
1281 std::string threat_hash_; | 1282 std::string threat_hash_; |
1282 SafeBrowsingService* safe_browsing_service_; | 1283 SafeBrowsingService* safe_browsing_service_; |
1283 | 1284 |
1284 DISALLOW_COPY_AND_ASSIGN(TestSBClient); | 1285 DISALLOW_COPY_AND_ASSIGN(TestSBClient); |
1285 }; | 1286 }; |
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1773 // Test that a Local Safe Browsing database update request both sends cookies | 1774 // Test that a Local Safe Browsing database update request both sends cookies |
1774 // and can save cookies. | 1775 // and can save cookies. |
1775 IN_PROC_BROWSER_TEST_F(SafeBrowsingDatabaseManagerCookieTest, | 1776 IN_PROC_BROWSER_TEST_F(SafeBrowsingDatabaseManagerCookieTest, |
1776 TestSBUpdateCookies) { | 1777 TestSBUpdateCookies) { |
1777 content::WindowedNotificationObserver observer( | 1778 content::WindowedNotificationObserver observer( |
1778 chrome::NOTIFICATION_SAFE_BROWSING_UPDATE_COMPLETE, | 1779 chrome::NOTIFICATION_SAFE_BROWSING_UPDATE_COMPLETE, |
1779 content::Source<SafeBrowsingDatabaseManager>( | 1780 content::Source<SafeBrowsingDatabaseManager>( |
1780 sb_factory_->test_safe_browsing_service()->database_manager().get())); | 1781 sb_factory_->test_safe_browsing_service()->database_manager().get())); |
1781 BrowserThread::PostTask( | 1782 BrowserThread::PostTask( |
1782 BrowserThread::IO, FROM_HERE, | 1783 BrowserThread::IO, FROM_HERE, |
1783 base::Bind(&SafeBrowsingDatabaseManagerCookieTest::ForceUpdate, | 1784 base::BindOnce(&SafeBrowsingDatabaseManagerCookieTest::ForceUpdate, |
1784 base::Unretained(this))); | 1785 base::Unretained(this))); |
1785 observer.Wait(); | 1786 observer.Wait(); |
1786 } | 1787 } |
1787 | 1788 |
1788 // Tests the safe browsing blocking page in a browser. | 1789 // Tests the safe browsing blocking page in a browser. |
1789 class V4SafeBrowsingServiceTest : public SafeBrowsingServiceTest { | 1790 class V4SafeBrowsingServiceTest : public SafeBrowsingServiceTest { |
1790 public: | 1791 public: |
1791 V4SafeBrowsingServiceTest() : SafeBrowsingServiceTest() {} | 1792 V4SafeBrowsingServiceTest() : SafeBrowsingServiceTest() {} |
1792 | 1793 |
1793 void SetUp() override { | 1794 void SetUp() override { |
1794 sb_factory_ = base::MakeUnique<TestSafeBrowsingServiceFactory>( | 1795 sb_factory_ = base::MakeUnique<TestSafeBrowsingServiceFactory>( |
(...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2497 } | 2498 } |
2498 | 2499 |
2499 INSTANTIATE_TEST_CASE_P( | 2500 INSTANTIATE_TEST_CASE_P( |
2500 MaybeSetMetadata, | 2501 MaybeSetMetadata, |
2501 V4SafeBrowsingServiceMetadataTest, | 2502 V4SafeBrowsingServiceMetadataTest, |
2502 testing::Values(ThreatPatternType::NONE, | 2503 testing::Values(ThreatPatternType::NONE, |
2503 ThreatPatternType::MALWARE_LANDING, | 2504 ThreatPatternType::MALWARE_LANDING, |
2504 ThreatPatternType::MALWARE_DISTRIBUTION)); | 2505 ThreatPatternType::MALWARE_DISTRIBUTION)); |
2505 | 2506 |
2506 } // namespace safe_browsing | 2507 } // namespace safe_browsing |
OLD | NEW |