Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(480)

Side by Side Diff: components/safe_browsing_db/v4_local_database_manager.h

Issue 2353413002: Store list information in ListInfo (was: StoreIdAndFIleName) (Closed)
Patch Set: sort the members of ListInfo by member name Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 } 110 }
111 FRIEND_TEST_ALL_PREFIXES(V4LocalDatabaseManagerTest, 111 FRIEND_TEST_ALL_PREFIXES(V4LocalDatabaseManagerTest,
112 TestGetSeverestThreatTypeAndMetadata); 112 TestGetSeverestThreatTypeAndMetadata);
113 113
114 // The set of clients awaiting a full hash response. It is used for tracking 114 // The set of clients awaiting a full hash response. It is used for tracking
115 // which clients have cancelled their outstanding request. 115 // which clients have cancelled their outstanding request.
116 typedef std::unordered_set<Client*> PendingClients; 116 typedef std::unordered_set<Client*> PendingClients;
117 117
118 ~V4LocalDatabaseManager() override; 118 ~V4LocalDatabaseManager() override;
119 119
120 // Returns the SBThreatType for a given ListIdentifier.
121 SBThreatType GetSBThreatTypeForList(const ListIdentifier& list_id);
122
123 // Finds the most severe |SBThreatType| and the corresponding |metadata| from
124 // |full_hash_infos|.
125 void GetSeverestThreatTypeAndMetadata(
126 SBThreatType* result_threat_type,
127 ThreatMetadata* metadata,
128 const std::vector<FullHashInfo>& full_hash_infos);
129
120 // The callback called each time the protocol manager downloads updates 130 // The callback called each time the protocol manager downloads updates
121 // successfully. 131 // successfully.
122 void UpdateRequestCompleted( 132 void UpdateRequestCompleted(
123 std::unique_ptr<ParsedServerResponse> parsed_server_response); 133 std::unique_ptr<ParsedServerResponse> parsed_server_response);
124 134
125 void SetupUpdateProtocolManager( 135 void SetupUpdateProtocolManager(
126 net::URLRequestContextGetter* request_context_getter, 136 net::URLRequestContextGetter* request_context_getter,
127 const V4ProtocolConfig& config); 137 const V4ProtocolConfig& config);
128 138
129 void SetupDatabase(); 139 void SetupDatabase();
130 140
131 // Called when the |v4_get_hash_protocol_manager_| has the full hash response 141 // Called when the |v4_get_hash_protocol_manager_| has the full hash response
132 // avaialble for the URL that we requested. It determines the severest 142 // available for the URL that we requested. It determines the severest
133 // threat type and responds to the |client| with that information. 143 // threat type and responds to the |client| with that information.
134 void OnFullHashResponse(std::unique_ptr<PendingCheck> pending_check, 144 void OnFullHashResponse(std::unique_ptr<PendingCheck> pending_check,
135 const std::vector<FullHashInfo>& full_hash_infos); 145 const std::vector<FullHashInfo>& full_hash_infos);
136 146
137 // Called when all the stores managed by the database have been read from 147 // Called when all the stores managed by the database have been read from
138 // disk after startup and the database is ready for use. 148 // disk after startup and the database is ready for use.
139 void DatabaseReady(std::unique_ptr<V4Database> v4_database); 149 void DatabaseReady(std::unique_ptr<V4Database> v4_database);
140 150
141 // Called when the database has been updated and schedules the next update. 151 // Called when the database has been updated and schedules the next update.
142 void DatabaseUpdated(); 152 void DatabaseUpdated();
143 153
144 // Calls the appopriate method on the |client| object, based on the contents 154 // Calls the appopriate method on the |client| object, based on the contents
145 // of |pending_check|. 155 // of |pending_check|.
146 void RespondToClient(std::unique_ptr<PendingCheck> pending_check); 156 void RespondToClient(std::unique_ptr<PendingCheck> pending_check);
147 157
148 // Finds the most severe |SBThreatType| and the corresponding |metadata| from
149 // |full_hash_infos|.
150 static void GetSeverestThreatTypeAndMetadata(
151 SBThreatType* result_threat_type,
152 ThreatMetadata* metadata,
153 const std::vector<FullHashInfo>& full_hash_infos);
154
155 // The base directory under which to create the files that contain hashes. 158 // The base directory under which to create the files that contain hashes.
156 const base::FilePath base_path_; 159 const base::FilePath base_path_;
157 160
158 // Whether the service is running. 161 // Whether the service is running.
159 bool enabled_; 162 bool enabled_;
160 163
161 // The set of clients that are waiting for a full hash response from the 164 // The set of clients that are waiting for a full hash response from the
162 // SafeBrowsing service. 165 // SafeBrowsing service.
163 PendingClients pending_clients_; 166 PendingClients pending_clients_;
164 167
165 // The list of stores to manage (for hash prefixes and full hashes), along 168 // The list of stores to manage (for hash prefixes and full hashes). Each
166 // with the corresponding filename on disk for each of them. 169 // element contains the identifier for the store, the corresponding
167 StoreIdAndFileNames store_id_file_names_; 170 // SBThreatType, whether to fetch hash prefixes for that store, and the
171 // name of the file on disk that would contain the prefixes, if applicable.
172 ListInfos list_infos_;
168 173
169 // The protocol manager that downloads the hash prefix updates. 174 // The protocol manager that downloads the hash prefix updates.
170 std::unique_ptr<V4UpdateProtocolManager> v4_update_protocol_manager_; 175 std::unique_ptr<V4UpdateProtocolManager> v4_update_protocol_manager_;
171 176
172 // The database that manages the stores containing the hash prefix updates. 177 // The database that manages the stores containing the hash prefix updates.
173 // All writes to this variable must happen on the IO thread only. 178 // All writes to this variable must happen on the IO thread only.
174 std::unique_ptr<V4Database> v4_database_; 179 std::unique_ptr<V4Database> v4_database_;
175 180
176 // Called when the V4Database has finished applying the latest update and is 181 // Called when the V4Database has finished applying the latest update and is
177 // ready to process next update. 182 // ready to process next update.
178 DatabaseUpdatedCallback db_updated_callback_; 183 DatabaseUpdatedCallback db_updated_callback_;
179 184
180 // The sequenced task runner for running safe browsing database operations. 185 // The sequenced task runner for running safe browsing database operations.
181 scoped_refptr<base::SequencedTaskRunner> task_runner_; 186 scoped_refptr<base::SequencedTaskRunner> task_runner_;
182 187
183 friend class base::RefCountedThreadSafe<V4LocalDatabaseManager>; 188 friend class base::RefCountedThreadSafe<V4LocalDatabaseManager>;
184 DISALLOW_COPY_AND_ASSIGN(V4LocalDatabaseManager); 189 DISALLOW_COPY_AND_ASSIGN(V4LocalDatabaseManager);
185 }; // class V4LocalDatabaseManager 190 }; // class V4LocalDatabaseManager
186 191
187 } // namespace safe_browsing 192 } // namespace safe_browsing
188 193
189 #endif // COMPONENTS_SAFE_BROWSING_DB_V4_LOCAL_DATABASE_MANAGER_H_ 194 #endif // COMPONENTS_SAFE_BROWSING_DB_V4_LOCAL_DATABASE_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698