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 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 const std::string& client_name, | 215 const std::string& client_name, |
206 net::URLRequestContextGetter* request_context_getter, | 216 net::URLRequestContextGetter* request_context_getter, |
207 const std::string& url_prefix, | 217 const std::string& url_prefix, |
208 bool disable_auto_update) | 218 bool disable_auto_update) |
209 : SafeBrowsingProtocolManager(sb_service, client_name, | 219 : SafeBrowsingProtocolManager(sb_service, client_name, |
210 request_context_getter, url_prefix, | 220 request_context_getter, url_prefix, |
211 disable_auto_update), | 221 disable_auto_update), |
212 sb_service_(sb_service), | |
213 delay_ms_(0) { | 222 delay_ms_(0) { |
214 create_count_++; | 223 create_count_++; |
215 } | 224 } |
216 | 225 |
217 ~TestProtocolManager() { | 226 ~TestProtocolManager() { |
218 delete_count_++; | 227 delete_count_++; |
219 } | 228 } |
220 | 229 |
221 // This function is called when there is a prefix hit in local safebrowsing | 230 // This function is called when there is a prefix hit in local safebrowsing |
222 // database and safebrowsing service issues a get hash request to backends. | 231 // database and safebrowsing service issues a get hash request to backends. |
223 // We return a result from the prefilled full_hashes_ hash_map to simulate | 232 // We return a result from the prefilled full_hashes_ hash_map to simulate |
224 // server's response. At the same time, latency is added to simulate real | 233 // server's response. At the same time, latency is added to simulate real |
225 // life network issues. | 234 // life network issues. |
226 virtual void GetFullHash(SafeBrowsingService::SafeBrowsingCheck* check, | 235 virtual void GetFullHash( |
227 const std::vector<SBPrefix>& prefixes) { | 236 const std::vector<SBPrefix>& prefixes, |
228 // When we get a valid response, always cache the result. | 237 SafeBrowsingProtocolManager::FullHashCallback callback, |
229 bool cancache = true; | 238 bool is_download) OVERRIDE { |
230 BrowserThread::PostDelayedTask( | 239 BrowserThread::PostDelayedTask( |
231 BrowserThread::IO, FROM_HERE, | 240 BrowserThread::IO, FROM_HERE, |
232 base::Bind(&SafeBrowsingService::HandleGetHashResults, | 241 base::Bind(InvokeFullHashCallback, callback, full_hashes_), |
233 sb_service_, check, full_hashes_, cancache), | |
234 base::TimeDelta::FromMilliseconds(delay_ms_)); | 242 base::TimeDelta::FromMilliseconds(delay_ms_)); |
235 } | 243 } |
236 | 244 |
237 // Prepare the GetFullHash results for the next request. | 245 // Prepare the GetFullHash results for the next request. |
238 void SetGetFullHashResponse(const SBFullHashResult& full_hash_result) { | 246 void SetGetFullHashResponse(const SBFullHashResult& full_hash_result) { |
239 full_hashes_.clear(); | 247 full_hashes_.clear(); |
240 full_hashes_.push_back(full_hash_result); | 248 full_hashes_.push_back(full_hash_result); |
241 } | 249 } |
242 | 250 |
243 void IntroduceDelay(int64 ms) { | 251 void IntroduceDelay(int64 ms) { |
244 delay_ms_ = ms; | 252 delay_ms_ = ms; |
245 } | 253 } |
246 | 254 |
247 static int create_count() { | 255 static int create_count() { |
248 return create_count_; | 256 return create_count_; |
249 } | 257 } |
250 | 258 |
251 static int delete_count() { | 259 static int delete_count() { |
252 return delete_count_; | 260 return delete_count_; |
253 } | 261 } |
254 | 262 |
255 private: | 263 private: |
256 std::vector<SBFullHashResult> full_hashes_; | 264 std::vector<SBFullHashResult> full_hashes_; |
257 SafeBrowsingService* sb_service_; | |
258 int64 delay_ms_; | 265 int64 delay_ms_; |
259 static int create_count_; | 266 static int create_count_; |
260 static int delete_count_; | 267 static int delete_count_; |
261 }; | 268 }; |
262 | 269 |
263 // static | 270 // static |
264 int TestProtocolManager::create_count_ = 0; | 271 int TestProtocolManager::create_count_ = 0; |
265 // static | 272 // static |
266 int TestProtocolManager::delete_count_ = 0; | 273 int TestProtocolManager::delete_count_ = 0; |
267 | 274 |
(...skipping 701 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
969 // save cookies. | 976 // save cookies. |
970 IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceCookieTest, TestSBUpdateCookies) { | 977 IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceCookieTest, TestSBUpdateCookies) { |
971 content::WindowedNotificationObserver observer( | 978 content::WindowedNotificationObserver observer( |
972 chrome::NOTIFICATION_SAFE_BROWSING_UPDATE_COMPLETE, | 979 chrome::NOTIFICATION_SAFE_BROWSING_UPDATE_COMPLETE, |
973 content::Source<SafeBrowsingService>(sb_service_.get())); | 980 content::Source<SafeBrowsingService>(sb_service_.get())); |
974 BrowserThread::PostTask( | 981 BrowserThread::PostTask( |
975 BrowserThread::IO, FROM_HERE, | 982 BrowserThread::IO, FROM_HERE, |
976 base::Bind(&SafeBrowsingServiceCookieTest::ForceUpdate, this)); | 983 base::Bind(&SafeBrowsingServiceCookieTest::ForceUpdate, this)); |
977 observer.Wait(); | 984 observer.Wait(); |
978 } | 985 } |
OLD | NEW |