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 // Safe Browsing Database Manager implementation that manages a local | 5 // Safe Browsing Database Manager implementation that manages a local |
6 // database. This is used by Desktop Chromium. | 6 // database. This is used by Desktop Chromium. |
7 | 7 |
8 #ifndef CHROME_BROWSER_SAFE_BROWSING_LOCAL_DATABASE_MANAGER_H_ | 8 #ifndef CHROME_BROWSER_SAFE_BROWSING_LOCAL_DATABASE_MANAGER_H_ |
9 #define CHROME_BROWSER_SAFE_BROWSING_LOCAL_DATABASE_MANAGER_H_ | 9 #define CHROME_BROWSER_SAFE_BROWSING_LOCAL_DATABASE_MANAGER_H_ |
10 | 10 |
11 #include <stddef.h> | 11 #include <stddef.h> |
12 | 12 |
13 #include <deque> | 13 #include <deque> |
14 #include <map> | 14 #include <map> |
| 15 #include <memory> |
15 #include <set> | 16 #include <set> |
16 #include <string> | 17 #include <string> |
17 #include <vector> | 18 #include <vector> |
18 | 19 |
19 #include "base/callback.h" | 20 #include "base/callback.h" |
20 #include "base/containers/hash_tables.h" | 21 #include "base/containers/hash_tables.h" |
21 #include "base/gtest_prod_util.h" | 22 #include "base/gtest_prod_util.h" |
22 #include "base/macros.h" | 23 #include "base/macros.h" |
23 #include "base/memory/ref_counted.h" | 24 #include "base/memory/ref_counted.h" |
24 #include "base/memory/scoped_ptr.h" | |
25 #include "base/memory/weak_ptr.h" | 25 #include "base/memory/weak_ptr.h" |
26 #include "base/synchronization/lock.h" | 26 #include "base/synchronization/lock.h" |
27 #include "base/time/time.h" | 27 #include "base/time/time.h" |
28 #include "chrome/browser/safe_browsing/protocol_manager.h" | 28 #include "chrome/browser/safe_browsing/protocol_manager.h" |
29 #include "chrome/browser/safe_browsing/safe_browsing_util.h" | 29 #include "chrome/browser/safe_browsing/safe_browsing_util.h" |
30 #include "components/safe_browsing_db/database_manager.h" | 30 #include "components/safe_browsing_db/database_manager.h" |
31 #include "components/safe_browsing_db/safebrowsing.pb.h" | 31 #include "components/safe_browsing_db/safebrowsing.pb.h" |
32 #include "components/safe_browsing_db/util.h" | 32 #include "components/safe_browsing_db/util.h" |
33 #include "url/gurl.h" | 33 #include "url/gurl.h" |
34 | 34 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 std::vector<SBFullHashResult> cache_hits; | 89 std::vector<SBFullHashResult> cache_hits; |
90 | 90 |
91 // Invoke one of client's callbacks with these results. | 91 // Invoke one of client's callbacks with these results. |
92 void OnSafeBrowsingResult(); | 92 void OnSafeBrowsingResult(); |
93 | 93 |
94 // Vends weak pointers for async callbacks on the IO thread, such as | 94 // Vends weak pointers for async callbacks on the IO thread, such as |
95 // timeout checks and replies from checks performed on the SB task runner. | 95 // timeout checks and replies from checks performed on the SB task runner. |
96 // TODO(lzheng): We should consider to use this time out check | 96 // TODO(lzheng): We should consider to use this time out check |
97 // for browsing too (instead of implementing in | 97 // for browsing too (instead of implementing in |
98 // safe_browsing_resource_handler.cc). | 98 // safe_browsing_resource_handler.cc). |
99 scoped_ptr<base::WeakPtrFactory<LocalSafeBrowsingDatabaseManager>> | 99 std::unique_ptr<base::WeakPtrFactory<LocalSafeBrowsingDatabaseManager>> |
100 weak_ptr_factory_; | 100 weak_ptr_factory_; |
101 | 101 |
102 private: | 102 private: |
103 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingCheck); | 103 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingCheck); |
104 }; | 104 }; |
105 | 105 |
106 // Creates the safe browsing service. Need to initialize before using. | 106 // Creates the safe browsing service. Need to initialize before using. |
107 LocalSafeBrowsingDatabaseManager( | 107 LocalSafeBrowsingDatabaseManager( |
108 const scoped_refptr<SafeBrowsingService>& service); | 108 const scoped_refptr<SafeBrowsingService>& service); |
109 | 109 |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 void OnAddChunksComplete(AddChunksCallback callback); | 244 void OnAddChunksComplete(AddChunksCallback callback); |
245 | 245 |
246 // Notification that the database is done loading its bloom filter. We may | 246 // Notification that the database is done loading its bloom filter. We may |
247 // have had to queue checks until the database is ready, and if so, this | 247 // have had to queue checks until the database is ready, and if so, this |
248 // checks them. | 248 // checks them. |
249 void DatabaseLoadComplete(); | 249 void DatabaseLoadComplete(); |
250 | 250 |
251 // Called on the database thread to add/remove chunks and host keys. | 251 // Called on the database thread to add/remove chunks and host keys. |
252 void AddDatabaseChunks( | 252 void AddDatabaseChunks( |
253 const std::string& list, | 253 const std::string& list, |
254 scoped_ptr<std::vector<scoped_ptr<SBChunkData>>> chunks, | 254 std::unique_ptr<std::vector<std::unique_ptr<SBChunkData>>> chunks, |
255 AddChunksCallback callback); | 255 AddChunksCallback callback); |
256 | 256 |
257 void DeleteDatabaseChunks( | 257 void DeleteDatabaseChunks( |
258 scoped_ptr<std::vector<SBChunkDelete>> chunk_deletes); | 258 std::unique_ptr<std::vector<SBChunkDelete>> chunk_deletes); |
259 | 259 |
260 void NotifyClientBlockingComplete(Client* client, bool proceed); | 260 void NotifyClientBlockingComplete(Client* client, bool proceed); |
261 | 261 |
262 void DatabaseUpdateFinished(bool update_succeeded); | 262 void DatabaseUpdateFinished(bool update_succeeded); |
263 | 263 |
264 // Called on the db thread to close the database. See CloseDatabase(). | 264 // Called on the db thread to close the database. See CloseDatabase(). |
265 void OnCloseDatabase(); | 265 void OnCloseDatabase(); |
266 | 266 |
267 // Runs on the db thread to reset the database. We assume that resetting the | 267 // Runs on the db thread to reset the database. We assume that resetting the |
268 // database is a synchronous operation. | 268 // database is a synchronous operation. |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 // success, otherwise TimeoutCallback will be called. | 306 // success, otherwise TimeoutCallback will be called. |
307 void StartSafeBrowsingCheck( | 307 void StartSafeBrowsingCheck( |
308 SafeBrowsingCheck* check, | 308 SafeBrowsingCheck* check, |
309 const base::Callback<std::vector<SBPrefix>(void)>& task); | 309 const base::Callback<std::vector<SBPrefix>(void)>& task); |
310 | 310 |
311 // SafeBrowsingProtocolManageDelegate override | 311 // SafeBrowsingProtocolManageDelegate override |
312 void ResetDatabase() override; | 312 void ResetDatabase() override; |
313 void UpdateStarted() override; | 313 void UpdateStarted() override; |
314 void UpdateFinished(bool success) override; | 314 void UpdateFinished(bool success) override; |
315 void GetChunks(GetChunksCallback callback) override; | 315 void GetChunks(GetChunksCallback callback) override; |
316 void AddChunks(const std::string& list, | 316 void AddChunks( |
317 scoped_ptr<std::vector<scoped_ptr<SBChunkData>>> chunks, | 317 const std::string& list, |
318 AddChunksCallback callback) override; | 318 std::unique_ptr<std::vector<std::unique_ptr<SBChunkData>>> chunks, |
| 319 AddChunksCallback callback) override; |
319 void DeleteChunks( | 320 void DeleteChunks( |
320 scoped_ptr<std::vector<SBChunkDelete>> chunk_deletes) override; | 321 std::unique_ptr<std::vector<SBChunkDelete>> chunk_deletes) override; |
321 | 322 |
322 scoped_refptr<SafeBrowsingService> sb_service_; | 323 scoped_refptr<SafeBrowsingService> sb_service_; |
323 | 324 |
324 CurrentChecks checks_; | 325 CurrentChecks checks_; |
325 | 326 |
326 // Used for issuing only one GetHash request for a given prefix. | 327 // Used for issuing only one GetHash request for a given prefix. |
327 GetHashRequests gethash_requests_; | 328 GetHashRequests gethash_requests_; |
328 | 329 |
329 // The persistent database. We don't use a scoped_ptr because it | 330 // The persistent database. We don't use a std::unique_ptr because it |
330 // needs to be destroyed on a different thread than this object. | 331 // needs to be destroyed on a different thread than this object. |
331 SafeBrowsingDatabase* database_; | 332 SafeBrowsingDatabase* database_; |
332 | 333 |
333 // Lock used to prevent possible data races due to compiler optimizations. | 334 // Lock used to prevent possible data races due to compiler optimizations. |
334 mutable base::Lock database_lock_; | 335 mutable base::Lock database_lock_; |
335 | 336 |
336 // Whether the service is running. 'enabled_' is used by the | 337 // Whether the service is running. 'enabled_' is used by the |
337 // SafeBrowsingDatabaseManager on the IO thread during normal operations. | 338 // SafeBrowsingDatabaseManager on the IO thread during normal operations. |
338 bool enabled_; | 339 bool enabled_; |
339 | 340 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 | 379 |
379 // Timeout to use for safe browsing checks. | 380 // Timeout to use for safe browsing checks. |
380 base::TimeDelta check_timeout_; | 381 base::TimeDelta check_timeout_; |
381 | 382 |
382 DISALLOW_COPY_AND_ASSIGN(LocalSafeBrowsingDatabaseManager); | 383 DISALLOW_COPY_AND_ASSIGN(LocalSafeBrowsingDatabaseManager); |
383 }; // class LocalSafeBrowsingDatabaseManager | 384 }; // class LocalSafeBrowsingDatabaseManager |
384 | 385 |
385 } // namespace safe_browsing | 386 } // namespace safe_browsing |
386 | 387 |
387 #endif // CHROME_BROWSER_SAFE_BROWSING_LOCAL_DATABASE_MANAGER_H_ | 388 #endif // CHROME_BROWSER_SAFE_BROWSING_LOCAL_DATABASE_MANAGER_H_ |
OLD | NEW |