| Index: components/safe_browsing_db/v4_database.h
|
| diff --git a/components/safe_browsing_db/v4_database.h b/components/safe_browsing_db/v4_database.h
|
| index cc07d4e308a8be28944a2ba2e84e0d7eaae50fde..acb1855a147a535daf0671e4f43ba67eb317cbf9 100644
|
| --- a/components/safe_browsing_db/v4_database.h
|
| +++ b/components/safe_browsing_db/v4_database.h
|
| @@ -78,10 +78,9 @@ typedef std::vector<ListInfo> ListInfos;
|
| class V4DatabaseFactory {
|
| public:
|
| virtual ~V4DatabaseFactory() {}
|
| - virtual V4Database* CreateV4Database(
|
| + virtual std::unique_ptr<V4Database> Create(
|
| const scoped_refptr<base::SequencedTaskRunner>& db_task_runner,
|
| - const base::FilePath& base_dir_path,
|
| - const ListInfos& list_infos) = 0;
|
| + std::unique_ptr<StoreMap> store_map);
|
| };
|
|
|
| // The on-disk databases are shared among all profiles, as it doesn't contain
|
| @@ -101,7 +100,7 @@ class V4Database {
|
| const scoped_refptr<base::SequencedTaskRunner>& db_task_runner,
|
| const base::FilePath& base_path,
|
| const ListInfos& list_infos,
|
| - NewDatabaseReadyCallback callback);
|
| + NewDatabaseReadyCallback new_db_callback);
|
|
|
| // Destroys the provided v4_database on its task_runner since this may be a
|
| // long operation.
|
| @@ -153,7 +152,9 @@ class V4Database {
|
| std::unique_ptr<StoreMap> store_map);
|
|
|
| private:
|
| + friend class V4DatabaseFactory;
|
| friend class V4DatabaseTest;
|
| + friend class V4SafeBrowsingServiceTest;
|
| FRIEND_TEST_ALL_PREFIXES(V4DatabaseTest, TestSetupDatabaseWithFakeStores);
|
| FRIEND_TEST_ALL_PREFIXES(V4DatabaseTest,
|
| TestSetupDatabaseWithFakeStoresFailsReset);
|
| @@ -163,12 +164,6 @@ class V4Database {
|
| FRIEND_TEST_ALL_PREFIXES(V4DatabaseTest, TestApplyUpdateWithInvalidUpdate);
|
| FRIEND_TEST_ALL_PREFIXES(V4DatabaseTest, TestSomeStoresMatchFullHash);
|
|
|
| - // Makes the passed |factory| the factory used to instantiate a V4Store. Only
|
| - // for tests.
|
| - static void RegisterStoreFactoryForTest(V4StoreFactory* factory) {
|
| - factory_ = factory;
|
| - }
|
| -
|
| // Factory method to create a V4Database. When the database creation is
|
| // complete, it calls the NewDatabaseReadyCallback on |callback_task_runner|.
|
| static void CreateOnTaskRunner(
|
| @@ -179,6 +174,16 @@ class V4Database {
|
| NewDatabaseReadyCallback callback,
|
| const base::TimeTicks create_start_time);
|
|
|
| + // Makes the passed |factory| the factory used to instantiate a V4Database.
|
| + // Only for tests.
|
| + static void RegisterDatabaseFactoryForTest(
|
| + std::unique_ptr<V4DatabaseFactory> factory);
|
| +
|
| + // Makes the passed |factory| the factory used to instantiate a V4Store. Only
|
| + // for tests.
|
| + static void RegisterStoreFactoryForTest(
|
| + std::unique_ptr<V4StoreFactory> factory);
|
| +
|
| // Callback called when a new store has been created and is ready to be used.
|
| // This method updates the store_map_ to point to the new store, which causes
|
| // the old store to get deleted.
|
| @@ -190,15 +195,20 @@ class V4Database {
|
| const scoped_refptr<base::SingleThreadTaskRunner>& callback_task_runner,
|
| DatabaseReadyForUpdatesCallback db_ready_for_updates_callback);
|
|
|
| - const scoped_refptr<base::SequencedTaskRunner> db_task_runner_;
|
| -
|
| + protected:
|
| // Map of ListIdentifier to the V4Store.
|
| const std::unique_ptr<StoreMap> store_map_;
|
|
|
| + private:
|
| + const scoped_refptr<base::SequencedTaskRunner> db_task_runner_;
|
| +
|
| DatabaseUpdatedCallback db_updated_callback_;
|
|
|
| + // The factory that controls the creation of the V4Database object.
|
| + static V4DatabaseFactory* db_factory_;
|
| +
|
| // The factory that controls the creation of V4Store objects.
|
| - static V4StoreFactory* factory_;
|
| + static V4StoreFactory* store_factory_;
|
|
|
| // The number of stores for which the update request is pending. When this
|
| // goes down to 0, that indicates that the database has updated all the stores
|
|
|