| 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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 #include "sql/statement.h" | 42 #include "sql/statement.h" |
| 43 #include "testing/gmock/include/gmock/gmock.h" | 43 #include "testing/gmock/include/gmock/gmock.h" |
| 44 | 44 |
| 45 using content::BrowserThread; | 45 using content::BrowserThread; |
| 46 using content::InterstitialPage; | 46 using content::InterstitialPage; |
| 47 using content::WebContents; | 47 using content::WebContents; |
| 48 using ::testing::_; | 48 using ::testing::_; |
| 49 using ::testing::Mock; | 49 using ::testing::Mock; |
| 50 using ::testing::StrictMock; | 50 using ::testing::StrictMock; |
| 51 | 51 |
| 52 namespace { |
| 53 |
| 54 void InvokeFullHashCallback( |
| 55 SafeBrowsingProtocolManager::FullHashCallback callback, |
| 56 const std::vector<SBFullHashResult>& result) { |
| 57 callback.Run(result, true); |
| 58 } |
| 59 |
| 60 } // namespace |
| 61 |
| 52 // A SafeBrowingDatabase class that allows us to inject the malicious URLs. | 62 // A SafeBrowingDatabase class that allows us to inject the malicious URLs. |
| 53 class TestSafeBrowsingDatabase : public SafeBrowsingDatabase { | 63 class TestSafeBrowsingDatabase : public SafeBrowsingDatabase { |
| 54 public: | 64 public: |
| 55 TestSafeBrowsingDatabase() {} | 65 TestSafeBrowsingDatabase() {} |
| 56 | 66 |
| 57 virtual ~TestSafeBrowsingDatabase() {} | 67 virtual ~TestSafeBrowsingDatabase() {} |
| 58 | 68 |
| 59 // Initializes the database with the given filename. | 69 // Initializes the database with the given filename. |
| 60 virtual void Init(const FilePath& filename) {} | 70 virtual void Init(const FilePath& filename) {} |
| 61 | 71 |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 }; | 208 }; |
| 199 | 209 |
| 200 // A TestProtocolManager that could return fixed responses from | 210 // A TestProtocolManager that could return fixed responses from |
| 201 // safebrowsing server for testing purpose. | 211 // safebrowsing server for testing purpose. |
| 202 class TestProtocolManager : public SafeBrowsingProtocolManager { | 212 class TestProtocolManager : public SafeBrowsingProtocolManager { |
| 203 public: | 213 public: |
| 204 TestProtocolManager(SafeBrowsingService* sb_service, | 214 TestProtocolManager(SafeBrowsingService* sb_service, |
| 205 net::URLRequestContextGetter* request_context_getter, | 215 net::URLRequestContextGetter* request_context_getter, |
| 206 const SafeBrowsingProtocolConfig& config) | 216 const SafeBrowsingProtocolConfig& config) |
| 207 : SafeBrowsingProtocolManager(sb_service, request_context_getter, config), | 217 : SafeBrowsingProtocolManager(sb_service, request_context_getter, config), |
| 208 sb_service_(sb_service), | |
| 209 delay_ms_(0) { | 218 delay_ms_(0) { |
| 210 create_count_++; | 219 create_count_++; |
| 211 } | 220 } |
| 212 | 221 |
| 213 ~TestProtocolManager() { | 222 ~TestProtocolManager() { |
| 214 delete_count_++; | 223 delete_count_++; |
| 215 } | 224 } |
| 216 | 225 |
| 217 // This function is called when there is a prefix hit in local safebrowsing | 226 // This function is called when there is a prefix hit in local safebrowsing |
| 218 // database and safebrowsing service issues a get hash request to backends. | 227 // database and safebrowsing service issues a get hash request to backends. |
| 219 // We return a result from the prefilled full_hashes_ hash_map to simulate | 228 // We return a result from the prefilled full_hashes_ hash_map to simulate |
| 220 // server's response. At the same time, latency is added to simulate real | 229 // server's response. At the same time, latency is added to simulate real |
| 221 // life network issues. | 230 // life network issues. |
| 222 virtual void GetFullHash(SafeBrowsingService::SafeBrowsingCheck* check, | 231 virtual void GetFullHash( |
| 223 const std::vector<SBPrefix>& prefixes) OVERRIDE { | 232 const std::vector<SBPrefix>& prefixes, |
| 224 // When we get a valid response, always cache the result. | 233 SafeBrowsingProtocolManager::FullHashCallback callback, |
| 225 bool cancache = true; | 234 bool is_download) OVERRIDE { |
| 226 BrowserThread::PostDelayedTask( | 235 BrowserThread::PostDelayedTask( |
| 227 BrowserThread::IO, FROM_HERE, | 236 BrowserThread::IO, FROM_HERE, |
| 228 base::Bind(&SafeBrowsingService::HandleGetHashResults, | 237 base::Bind(InvokeFullHashCallback, callback, full_hashes_), |
| 229 sb_service_, check, full_hashes_, cancache), | |
| 230 base::TimeDelta::FromMilliseconds(delay_ms_)); | 238 base::TimeDelta::FromMilliseconds(delay_ms_)); |
| 231 } | 239 } |
| 232 | 240 |
| 233 // Prepare the GetFullHash results for the next request. | 241 // Prepare the GetFullHash results for the next request. |
| 234 void SetGetFullHashResponse(const SBFullHashResult& full_hash_result) { | 242 void SetGetFullHashResponse(const SBFullHashResult& full_hash_result) { |
| 235 full_hashes_.clear(); | 243 full_hashes_.clear(); |
| 236 full_hashes_.push_back(full_hash_result); | 244 full_hashes_.push_back(full_hash_result); |
| 237 } | 245 } |
| 238 | 246 |
| 239 void IntroduceDelay(int64 ms) { | 247 void IntroduceDelay(int64 ms) { |
| 240 delay_ms_ = ms; | 248 delay_ms_ = ms; |
| 241 } | 249 } |
| 242 | 250 |
| 243 static int create_count() { | 251 static int create_count() { |
| 244 return create_count_; | 252 return create_count_; |
| 245 } | 253 } |
| 246 | 254 |
| 247 static int delete_count() { | 255 static int delete_count() { |
| 248 return delete_count_; | 256 return delete_count_; |
| 249 } | 257 } |
| 250 | 258 |
| 251 private: | 259 private: |
| 252 std::vector<SBFullHashResult> full_hashes_; | 260 std::vector<SBFullHashResult> full_hashes_; |
| 253 SafeBrowsingService* sb_service_; | |
| 254 int64 delay_ms_; | 261 int64 delay_ms_; |
| 255 static int create_count_; | 262 static int create_count_; |
| 256 static int delete_count_; | 263 static int delete_count_; |
| 257 }; | 264 }; |
| 258 | 265 |
| 259 // static | 266 // static |
| 260 int TestProtocolManager::create_count_ = 0; | 267 int TestProtocolManager::create_count_ = 0; |
| 261 // static | 268 // static |
| 262 int TestProtocolManager::delete_count_ = 0; | 269 int TestProtocolManager::delete_count_ = 0; |
| 263 | 270 |
| (...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 964 // save cookies. | 971 // save cookies. |
| 965 IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceCookieTest, TestSBUpdateCookies) { | 972 IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceCookieTest, TestSBUpdateCookies) { |
| 966 content::WindowedNotificationObserver observer( | 973 content::WindowedNotificationObserver observer( |
| 967 chrome::NOTIFICATION_SAFE_BROWSING_UPDATE_COMPLETE, | 974 chrome::NOTIFICATION_SAFE_BROWSING_UPDATE_COMPLETE, |
| 968 content::Source<SafeBrowsingService>(sb_service_.get())); | 975 content::Source<SafeBrowsingService>(sb_service_.get())); |
| 969 BrowserThread::PostTask( | 976 BrowserThread::PostTask( |
| 970 BrowserThread::IO, FROM_HERE, | 977 BrowserThread::IO, FROM_HERE, |
| 971 base::Bind(&SafeBrowsingServiceCookieTest::ForceUpdate, this)); | 978 base::Bind(&SafeBrowsingServiceCookieTest::ForceUpdate, this)); |
| 972 observer.Wait(); | 979 observer.Wait(); |
| 973 } | 980 } |
| OLD | NEW |