| 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 #include "chrome/browser/safe_browsing/client_side_detection_service.h" | 5 #include "chrome/browser/safe_browsing/client_side_detection_service.h" | 
| 6 | 6 | 
| 7 #include <stdint.h> | 7 #include <stdint.h> | 
| 8 | 8 | 
| 9 #include <map> | 9 #include <map> | 
| 10 #include <memory> | 10 #include <memory> | 
| 11 #include <queue> | 11 #include <queue> | 
| 12 #include <string> | 12 #include <string> | 
| 13 | 13 | 
| 14 #include "base/bind.h" | 14 #include "base/bind.h" | 
| 15 #include "base/callback.h" | 15 #include "base/callback.h" | 
| 16 #include "base/logging.h" | 16 #include "base/logging.h" | 
| 17 #include "base/macros.h" | 17 #include "base/macros.h" | 
|  | 18 #include "base/memory/ptr_util.h" | 
| 18 #include "base/message_loop/message_loop.h" | 19 #include "base/message_loop/message_loop.h" | 
| 19 #include "base/metrics/field_trial.h" | 20 #include "base/metrics/field_trial.h" | 
| 20 #include "base/run_loop.h" | 21 #include "base/run_loop.h" | 
| 21 #include "base/strings/string_number_conversions.h" | 22 #include "base/strings/string_number_conversions.h" | 
| 22 #include "base/time/time.h" | 23 #include "base/time/time.h" | 
| 23 #include "chrome/common/safe_browsing/client_model.pb.h" | 24 #include "chrome/common/safe_browsing/client_model.pb.h" | 
| 24 #include "chrome/common/safe_browsing/csd.pb.h" | 25 #include "chrome/common/safe_browsing/csd.pb.h" | 
| 25 #include "components/variations/variations_associated_data.h" | 26 #include "components/variations/variations_associated_data.h" | 
| 26 #include "content/public/test/test_browser_thread.h" | 27 #include "content/public/test/test_browser_thread.h" | 
| 27 #include "crypto/sha2.h" | 28 #include "crypto/sha2.h" | 
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 148   std::queue<base::Time>& GetPhishingReportTimes() { | 149   std::queue<base::Time>& GetPhishingReportTimes() { | 
| 149     return csd_service_->phishing_report_times_; | 150     return csd_service_->phishing_report_times_; | 
| 150   } | 151   } | 
| 151 | 152 | 
| 152   std::queue<base::Time>& GetMalwareReportTimes() { | 153   std::queue<base::Time>& GetMalwareReportTimes() { | 
| 153     return csd_service_->malware_report_times_; | 154     return csd_service_->malware_report_times_; | 
| 154   } | 155   } | 
| 155 | 156 | 
| 156   void SetCache(const GURL& gurl, bool is_phishing, base::Time time) { | 157   void SetCache(const GURL& gurl, bool is_phishing, base::Time time) { | 
| 157     csd_service_->cache_[gurl] = | 158     csd_service_->cache_[gurl] = | 
| 158         make_linked_ptr(new ClientSideDetectionService::CacheState(is_phishing, | 159         base::MakeUnique<ClientSideDetectionService::CacheState>( | 
| 159                                                                    time)); | 160             is_phishing, time); | 
| 160   } | 161   } | 
| 161 | 162 | 
| 162   void TestCache() { | 163   void TestCache() { | 
| 163     ClientSideDetectionService::PhishingCache& cache = csd_service_->cache_; | 164     auto& cache = csd_service_->cache_; | 
| 164     base::Time now = base::Time::Now(); | 165     base::Time now = base::Time::Now(); | 
| 165     base::Time time = | 166     base::Time time = | 
| 166         now - base::TimeDelta::FromDays( | 167         now - base::TimeDelta::FromDays( | 
| 167             ClientSideDetectionService::kNegativeCacheIntervalDays) + | 168             ClientSideDetectionService::kNegativeCacheIntervalDays) + | 
| 168         base::TimeDelta::FromMinutes(5); | 169         base::TimeDelta::FromMinutes(5); | 
| 169     cache[GURL("http://first.url.com/")] = | 170     cache[GURL("http://first.url.com/")] = | 
| 170         make_linked_ptr(new ClientSideDetectionService::CacheState(false, | 171         base::MakeUnique<ClientSideDetectionService::CacheState>(false, time); | 
| 171                                                                    time)); |  | 
| 172 | 172 | 
| 173     time = | 173     time = | 
| 174         now - base::TimeDelta::FromDays( | 174         now - base::TimeDelta::FromDays( | 
| 175             ClientSideDetectionService::kNegativeCacheIntervalDays) - | 175             ClientSideDetectionService::kNegativeCacheIntervalDays) - | 
| 176         base::TimeDelta::FromHours(1); | 176         base::TimeDelta::FromHours(1); | 
| 177     cache[GURL("http://second.url.com/")] = | 177     cache[GURL("http://second.url.com/")] | 
| 178         make_linked_ptr(new ClientSideDetectionService::CacheState(false, | 178         = base::MakeUnique<ClientSideDetectionService::CacheState>(false, time); | 
| 179                                                                    time)); |  | 
| 180 | 179 | 
| 181     time = | 180     time = | 
| 182         now - base::TimeDelta::FromMinutes( | 181         now - base::TimeDelta::FromMinutes( | 
| 183             ClientSideDetectionService::kPositiveCacheIntervalMinutes) - | 182             ClientSideDetectionService::kPositiveCacheIntervalMinutes) - | 
| 184         base::TimeDelta::FromMinutes(5); | 183         base::TimeDelta::FromMinutes(5); | 
| 185     cache[GURL("http://third.url.com/")] = | 184     cache[GURL("http://third.url.com/")] | 
| 186         make_linked_ptr(new ClientSideDetectionService::CacheState(true, time)); | 185         = base::MakeUnique<ClientSideDetectionService::CacheState>(true, time); | 
| 187 | 186 | 
| 188     time = | 187     time = | 
| 189         now - base::TimeDelta::FromMinutes( | 188         now - base::TimeDelta::FromMinutes( | 
| 190             ClientSideDetectionService::kPositiveCacheIntervalMinutes) + | 189             ClientSideDetectionService::kPositiveCacheIntervalMinutes) + | 
| 191         base::TimeDelta::FromMinutes(5); | 190         base::TimeDelta::FromMinutes(5); | 
| 192     cache[GURL("http://fourth.url.com/")] = | 191     cache[GURL("http://fourth.url.com/")] = | 
| 193         make_linked_ptr(new ClientSideDetectionService::CacheState(true, time)); | 192         base::MakeUnique<ClientSideDetectionService::CacheState>(true, time); | 
| 194 | 193 | 
| 195     csd_service_->UpdateCache(); | 194     csd_service_->UpdateCache(); | 
| 196 | 195 | 
| 197     // 3 elements should be in the cache, the first, third, and fourth. | 196     // 3 elements should be in the cache, the first, third, and fourth. | 
| 198     EXPECT_EQ(3U, cache.size()); | 197     EXPECT_EQ(3U, cache.size()); | 
| 199     EXPECT_TRUE(cache.find(GURL("http://first.url.com/")) != cache.end()); | 198     EXPECT_TRUE(cache.find(GURL("http://first.url.com/")) != cache.end()); | 
| 200     EXPECT_TRUE(cache.find(GURL("http://third.url.com/")) != cache.end()); | 199     EXPECT_TRUE(cache.find(GURL("http://third.url.com/")) != cache.end()); | 
| 201     EXPECT_TRUE(cache.find(GURL("http://fourth.url.com/")) != cache.end()); | 200     EXPECT_TRUE(cache.find(GURL("http://fourth.url.com/")) != cache.end()); | 
| 202 | 201 | 
| 203     // While 3 elements remain, only the first and the fourth are actually | 202     // While 3 elements remain, only the first and the fourth are actually | 
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 482 | 481 | 
| 483   // Check that disabling again doesn't request the model. | 482   // Check that disabling again doesn't request the model. | 
| 484   csd_service_->SetEnabledAndRefreshState(false); | 483   csd_service_->SetEnabledAndRefreshState(false); | 
| 485   // No calls expected. | 484   // No calls expected. | 
| 486   base::RunLoop().RunUntilIdle(); | 485   base::RunLoop().RunUntilIdle(); | 
| 487   Mock::VerifyAndClearExpectations(service); | 486   Mock::VerifyAndClearExpectations(service); | 
| 488   Mock::VerifyAndClearExpectations(loader_1); | 487   Mock::VerifyAndClearExpectations(loader_1); | 
| 489   Mock::VerifyAndClearExpectations(loader_2); | 488   Mock::VerifyAndClearExpectations(loader_2); | 
| 490 } | 489 } | 
| 491 }  // namespace safe_browsing | 490 }  // namespace safe_browsing | 
| OLD | NEW | 
|---|