| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 #ifndef COMPONENTS_SAFE_BROWSING_DB_V4_LOCAL_DATABASE_MANAGER_H_ | 5 #ifndef COMPONENTS_SAFE_BROWSING_DB_V4_LOCAL_DATABASE_MANAGER_H_ |
| 6 #define COMPONENTS_SAFE_BROWSING_DB_V4_LOCAL_DATABASE_MANAGER_H_ | 6 #define COMPONENTS_SAFE_BROWSING_DB_V4_LOCAL_DATABASE_MANAGER_H_ |
| 7 | 7 |
| 8 // A class that provides the interface between the SafeBrowsing protocol manager | 8 // A class that provides the interface between the SafeBrowsing protocol manager |
| 9 // and database that holds the downloaded updates. | 9 // and database that holds the downloaded updates. |
| 10 | 10 |
| 11 #include <memory> | 11 #include <memory> |
| 12 | 12 |
| 13 #include "base/sequenced_task_runner.h" |
| 13 #include "components/safe_browsing_db/database_manager.h" | 14 #include "components/safe_browsing_db/database_manager.h" |
| 14 #include "components/safe_browsing_db/hit_report.h" | 15 #include "components/safe_browsing_db/hit_report.h" |
| 15 #include "components/safe_browsing_db/v4_database.h" | 16 #include "components/safe_browsing_db/v4_database.h" |
| 16 #include "components/safe_browsing_db/v4_protocol_manager_util.h" | 17 #include "components/safe_browsing_db/v4_protocol_manager_util.h" |
| 17 #include "components/safe_browsing_db/v4_update_protocol_manager.h" | |
| 18 #include "url/gurl.h" | 18 #include "url/gurl.h" |
| 19 | 19 |
| 20 using content::ResourceType; | 20 using content::ResourceType; |
| 21 | 21 |
| 22 namespace safe_browsing { | 22 namespace safe_browsing { |
| 23 | 23 |
| 24 class V4GetHashProtocolManager; |
| 25 class V4UpdateProtocolManager; |
| 26 |
| 24 // Manages the local, on-disk database of updates downloaded from the | 27 // Manages the local, on-disk database of updates downloaded from the |
| 25 // SafeBrowsing service and interfaces with the protocol manager. | 28 // SafeBrowsing service and interfaces with the protocol manager. |
| 26 class V4LocalDatabaseManager : public SafeBrowsingDatabaseManager { | 29 class V4LocalDatabaseManager : public SafeBrowsingDatabaseManager { |
| 27 public: | 30 public: |
| 28 // Construct V4LocalDatabaseManager. | 31 // Construct V4LocalDatabaseManager. |
| 29 // Must be initialized by calling StartOnIOThread() before using. | 32 // Must be initialized by calling StartOnIOThread() before using. |
| 30 V4LocalDatabaseManager(const base::FilePath& base_path); | 33 V4LocalDatabaseManager(const base::FilePath& base_path); |
| 31 | 34 |
| 32 // | 35 // |
| 33 // SafeBrowsingDatabaseManager implementation | 36 // SafeBrowsingDatabaseManager implementation |
| (...skipping 25 matching lines...) Expand all Loading... |
| 59 | 62 |
| 60 private: | 63 private: |
| 61 friend class V4LocalDatabaseManagerTest; | 64 friend class V4LocalDatabaseManagerTest; |
| 62 void SetTaskRunnerForTest( | 65 void SetTaskRunnerForTest( |
| 63 const scoped_refptr<base::SequencedTaskRunner>& task_runner) { | 66 const scoped_refptr<base::SequencedTaskRunner>& task_runner) { |
| 64 task_runner_ = task_runner; | 67 task_runner_ = task_runner; |
| 65 } | 68 } |
| 66 | 69 |
| 67 ~V4LocalDatabaseManager() override; | 70 ~V4LocalDatabaseManager() override; |
| 68 | 71 |
| 72 // Called back by V4GetHashProtocolManager when the full hashes response has |
| 73 // been received from the server. |
| 74 void HandleGetHashes(const std::vector<SBFullHashResult>& full_hash_results, |
| 75 const base::Time& negative_cache_expire); |
| 76 |
| 69 // The callback called each time the protocol manager downloads updates | 77 // The callback called each time the protocol manager downloads updates |
| 70 // successfully. | 78 // successfully. |
| 71 void UpdateRequestCompleted( | 79 void UpdateRequestCompleted( |
| 72 std::unique_ptr<ParsedServerResponse> parsed_server_response); | 80 std::unique_ptr<ParsedServerResponse> parsed_server_response); |
| 73 | 81 |
| 82 void SetupGetHashProtocolManager( |
| 83 net::URLRequestContextGetter* request_context_getter, |
| 84 const V4ProtocolConfig& config); |
| 85 |
| 74 void SetupUpdateProtocolManager( | 86 void SetupUpdateProtocolManager( |
| 75 net::URLRequestContextGetter* request_context_getter, | 87 net::URLRequestContextGetter* request_context_getter, |
| 76 const V4ProtocolConfig& config); | 88 const V4ProtocolConfig& config); |
| 77 | 89 |
| 78 void SetupDatabase(); | 90 void SetupDatabase(); |
| 79 | 91 |
| 80 void DatabaseReady(std::unique_ptr<V4Database> v4_database); | 92 void DatabaseReady(std::unique_ptr<V4Database> v4_database); |
| 81 | 93 |
| 82 // Called when the database has been updated and schedules the next update. | 94 // Called when the database has been updated and schedules the next update. |
| 83 void DatabaseUpdated(); | 95 void DatabaseUpdated(); |
| 84 | 96 |
| 85 // The base directory under which to create the files that contain hashes. | 97 // The base directory under which to create the files that contain hashes. |
| 86 const base::FilePath base_path_; | 98 const base::FilePath base_path_; |
| 87 | 99 |
| 88 // Whether the service is running. | 100 // Whether the service is running. |
| 89 bool enabled_; | 101 bool enabled_; |
| 90 | 102 |
| 91 // Stores the current status of the lists to download from the SafeBrowsing | 103 // Stores the current status of the lists to download from the SafeBrowsing |
| 92 // servers. | 104 // servers. |
| 93 // TODO(vakh): current_list_states_ doesn't really belong here. | 105 // TODO(vakh): current_list_states_ doesn't really belong here. |
| 94 // It should come through the database, from the various V4Stores. | 106 // It should come through the database, from the various V4Stores. |
| 95 base::hash_map<UpdateListIdentifier, std::string> current_list_states_; | 107 base::hash_map<UpdateListIdentifier, std::string> current_list_states_; |
| 96 | 108 |
| 109 // The protocol manager that downloads the full hashes for given hash |
| 110 // prefixes. |
| 111 std::unique_ptr<V4GetHashProtocolManager> v4_get_hash_protocol_manager_; |
| 112 |
| 97 // The protocol manager that downloads the hash prefix updates. | 113 // The protocol manager that downloads the hash prefix updates. |
| 98 std::unique_ptr<V4UpdateProtocolManager> v4_update_protocol_manager_; | 114 std::unique_ptr<V4UpdateProtocolManager> v4_update_protocol_manager_; |
| 99 | 115 |
| 100 // The database that manages the stores containing the hash prefix updates. | 116 // The database that manages the stores containing the hash prefix updates. |
| 101 // All writes to this variable must happen on the IO thread only. | 117 // All writes to this variable must happen on the IO thread only. |
| 102 std::unique_ptr<V4Database> v4_database_; | 118 std::unique_ptr<V4Database> v4_database_; |
| 103 | 119 |
| 104 // Called when the V4Database has finished applying the latest update and is | 120 // Called when the V4Database has finished applying the latest update and is |
| 105 // ready to process next update. | 121 // ready to process next update. |
| 106 DatabaseUpdatedCallback db_updated_callback_; | 122 DatabaseUpdatedCallback db_updated_callback_; |
| 107 | 123 |
| 108 // The sequenced task runner for running safe browsing database operations. | 124 // The sequenced task runner for running safe browsing database operations. |
| 109 scoped_refptr<base::SequencedTaskRunner> task_runner_; | 125 scoped_refptr<base::SequencedTaskRunner> task_runner_; |
| 110 | 126 |
| 111 friend class base::RefCountedThreadSafe<V4LocalDatabaseManager>; | 127 friend class base::RefCountedThreadSafe<V4LocalDatabaseManager>; |
| 112 DISALLOW_COPY_AND_ASSIGN(V4LocalDatabaseManager); | 128 DISALLOW_COPY_AND_ASSIGN(V4LocalDatabaseManager); |
| 113 }; // class V4LocalDatabaseManager | 129 }; // class V4LocalDatabaseManager |
| 114 | 130 |
| 115 } // namespace safe_browsing | 131 } // namespace safe_browsing |
| 116 | 132 |
| 117 #endif // COMPONENTS_SAFE_BROWSING_DB_V4_LOCAL_DATABASE_MANAGER_H_ | 133 #endif // COMPONENTS_SAFE_BROWSING_DB_V4_LOCAL_DATABASE_MANAGER_H_ |
| OLD | NEW |