| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..509939e68be6366928a21ca4071958d50fb574b7
|
| --- /dev/null
|
| +++ b/components/safe_browsing_db/v4_database.h
|
| @@ -0,0 +1,79 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef COMPONENTS_SAFE_BROWSING_DB_V4_DATABASE_H_
|
| +#define COMPONENTS_SAFE_BROWSING_DB_V4_DATABASE_H_
|
| +
|
| +#include "base/files/file_path.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "base/sequenced_task_runner.h"
|
| +#include "components/safe_browsing_db/v4_protocol_manager_util.h"
|
| +#include "components/safe_browsing_db/v4_store.h"
|
| +
|
| +namespace safe_browsing {
|
| +
|
| +class V4Database;
|
| +
|
| +typedef const base::hash_map<UpdateListIdentifier,
|
| + const base::FilePath::CharType>
|
| + ListInfoMap;
|
| +
|
| +typedef std::unique_ptr<
|
| + base::hash_map<UpdateListIdentifier, std::unique_ptr<V4Store>>>
|
| + StoreMap;
|
| +
|
| +// Factory for creating V4Database. Tests implement this factory to create fake
|
| +// databases for testing.
|
| +class V4DatabaseFactory {
|
| + public:
|
| + virtual ~V4DatabaseFactory() {}
|
| + virtual V4Database* CreateV4Database(
|
| + const scoped_refptr<base::SequencedTaskRunner>& db_task_runner,
|
| + const base::FilePath& base_path,
|
| + ListInfoMap list_info_map) = 0;
|
| +};
|
| +
|
| +// The on-disk databases are shared among all profiles, as it doesn't contain
|
| +// user-specific data. This object is not thread-safe, i.e. all its methods
|
| +// should be used on the same thread that it was created on, unless specified
|
| +// otherwise.
|
| +// The hash-prefixes of each type are managed by a V4Store (including saving to
|
| +// and reading from disk).
|
| +// The V4Database serves as a single place to manage all the V4Stores.
|
| +class V4Database {
|
| + public:
|
| + // Factory method for obtaining a V4Database implementation.
|
| + // It is not thread safe.
|
| + // The availability of each list is controlled by the one flag on this
|
| + // method.
|
| + static V4Database* Create(
|
| + const scoped_refptr<base::SequencedTaskRunner>& db_task_runner,
|
| + const base::FilePath& base_path,
|
| + ListInfoMap list_info_map);
|
| +
|
| + V4Database(
|
| + const scoped_refptr<base::SequencedTaskRunner>& db_task_runner,
|
| + StoreMap store_map);
|
| + virtual ~V4Database();
|
| +
|
| + // Deletes the current database and creates a new one.
|
| + virtual bool ResetDatabase();
|
| +
|
| + // Makes the passed |factory| the factory used to instantiate
|
| + // a V4Database. Only for tests.
|
| + static void RegisterFactoryForTest(V4DatabaseFactory* factory) {
|
| + factory_ = factory;
|
| + }
|
| +
|
| + private:
|
| + // The factory that controls the creation of V4Database objects.
|
| + // This is used *only* by tests.
|
| + static V4DatabaseFactory* factory_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(V4Database);
|
| +};
|
| +
|
| +} // namespace safe_browsing
|
| +
|
| +#endif // COMPONENTS_SAFE_BROWSING_DB_V4_DATABASE_H_
|
|
|