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

Side by Side Diff: components/safe_browsing_db/v4_database.cc

Issue 1984283003: Revert of Reland: Initialize and reset V4LocalDBManager. Instantiate V4Stores. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 #include <memory>
6
7 #include "base/callback.h"
8 #include "base/message_loop/message_loop.h"
9 #include "components/safe_browsing_db/v4_database.h" 5 #include "components/safe_browsing_db/v4_database.h"
10 #include "content/public/browser/browser_thread.h"
11
12 using content::BrowserThread;
13 6
14 namespace safe_browsing { 7 namespace safe_browsing {
15 8
16 namespace {
17
18 V4Store* CreateStore(
19 const scoped_refptr<base::SequencedTaskRunner>& task_runner,
20 const base::FilePath& store_path) {
21 return new V4Store(task_runner, store_path);
22 }
23
24 } // namespace
25
26 // static 9 // static
27 V4DatabaseFactory* V4Database::factory_ = NULL; 10 V4DatabaseFactory* V4Database::factory_ = NULL;
28 11
29 // static 12 // static
30 void V4Database::Create( 13 // Factory method, should be called on the Safe Browsing sequenced task runner,
14 // which is also passed to the function as |db_task_runner|.
15 V4Database* V4Database::Create(
31 const scoped_refptr<base::SequencedTaskRunner>& db_task_runner, 16 const scoped_refptr<base::SequencedTaskRunner>& db_task_runner,
32 const base::FilePath& base_path, 17 const base::FilePath& base_path,
33 ListInfoMap list_info_map, 18 ListInfoMap list_info_map) {
34 NewDatabaseReadyCallback callback) {
35 const scoped_refptr<base::SingleThreadTaskRunner>& callback_task_runner =
36 base::MessageLoop::current()->task_runner();
37 db_task_runner->PostTask(
38 FROM_HERE,
39 base::Bind(&V4Database::CreateOnTaskRunner, db_task_runner, base_path,
40 list_info_map, callback_task_runner, callback));
41 }
42
43 // static
44 void V4Database::CreateOnTaskRunner(
45 const scoped_refptr<base::SequencedTaskRunner>& db_task_runner,
46 const base::FilePath& base_path,
47 ListInfoMap list_info_map,
48 const scoped_refptr<base::SingleThreadTaskRunner>& callback_task_runner,
49 NewDatabaseReadyCallback callback) {
50 DCHECK(db_task_runner->RunsTasksOnCurrentThread()); 19 DCHECK(db_task_runner->RunsTasksOnCurrentThread());
51 DCHECK(!base_path.empty());
52
53 std::unique_ptr<V4Database> v4_database;
54 if (!factory_) { 20 if (!factory_) {
55 StoreMap store_map; 21 StoreMap store_map;
56 22 // TODO(vakh): Populate the store_map using list_suffix_map.
57 for (const auto& list_info : list_info_map) { 23 return new V4Database(db_task_runner, std::move(store_map));
58 UpdateListIdentifier update_list_identifier = list_info.first;
59 const base::FilePath::CharType suffix = list_info.second;
60
61 const base::FilePath store_path =
62 base::FilePath(base_path.value() + suffix);
63 (*store_map)[update_list_identifier].reset(
64 CreateStore(db_task_runner, store_path));
65 }
66
67 v4_database.reset(new V4Database(db_task_runner, std::move(store_map)));
68 } else { 24 } else {
69 v4_database.reset( 25 return factory_->CreateV4Database(db_task_runner, base_path, list_info_map);
70 factory_->CreateV4Database(db_task_runner, base_path, list_info_map));
71 } 26 }
72 callback_task_runner->PostTask(
73 FROM_HERE, base::Bind(callback, base::Passed(&v4_database)));
74 } 27 }
75 28
76 V4Database::V4Database( 29 V4Database::V4Database(
77 const scoped_refptr<base::SequencedTaskRunner>& db_task_runner, 30 const scoped_refptr<base::SequencedTaskRunner>& db_task_runner,
78 StoreMap store_map) 31 StoreMap store_map) {
79 : db_task_runner_(db_task_runner), store_map_(std::move(store_map)) {
80 DCHECK(db_task_runner->RunsTasksOnCurrentThread());
81 // TODO(vakh): Implement skeleton 32 // TODO(vakh): Implement skeleton
82 } 33 }
83 34
84 // static
85 void V4Database::Destroy(std::unique_ptr<V4Database> v4_database) {
86 if (v4_database.get()) {
87 v4_database->db_task_runner_->DeleteSoon(FROM_HERE, v4_database.release());
88 }
89 }
90
91 V4Database::~V4Database() {} 35 V4Database::~V4Database() {}
92 36
93 bool V4Database::ResetDatabase() { 37 bool V4Database::ResetDatabase() {
94 DCHECK(db_task_runner_->RunsTasksOnCurrentThread()); 38 // TODO(vakh): Delete the stores. Delete the backing files.
95 bool reset_success = true; 39 return true;
96 for (const auto& store_id_and_store : *store_map_) {
97 if (!store_id_and_store.second->Reset()) {
98 reset_success = false;
99 }
100 }
101 return reset_success;
102 } 40 }
103 41
104 } // namespace safe_browsing 42 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « components/safe_browsing_db/v4_database.h ('k') | components/safe_browsing_db/v4_local_database_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698