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

Side by Side Diff: components/ntp_snippets/ntp_snippets_database.h

Issue 2083533002: [NTP Snippets] Shut down the service on database failure (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@image_db_tests
Patch Set: comments Created 4 years, 6 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
« no previous file with comments | « no previous file | components/ntp_snippets/ntp_snippets_database.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_NTP_SNIPPETS_NTP_SNIPPETS_DATABASE_H_ 5 #ifndef COMPONENTS_NTP_SNIPPETS_NTP_SNIPPETS_DATABASE_H_
6 #define COMPONENTS_NTP_SNIPPETS_NTP_SNIPPETS_DATABASE_H_ 6 #define COMPONENTS_NTP_SNIPPETS_NTP_SNIPPETS_DATABASE_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 23 matching lines...) Expand all
34 NTPSnippetsDatabase( 34 NTPSnippetsDatabase(
35 const base::FilePath& database_dir, 35 const base::FilePath& database_dir,
36 scoped_refptr<base::SequencedTaskRunner> file_task_runner); 36 scoped_refptr<base::SequencedTaskRunner> file_task_runner);
37 ~NTPSnippetsDatabase(); 37 ~NTPSnippetsDatabase();
38 38
39 // Returns whether the database has finished initialization. While this is 39 // Returns whether the database has finished initialization. While this is
40 // false, loads may already be started (they'll be serviced after 40 // false, loads may already be started (they'll be serviced after
41 // initialization finishes), but no updates are allowed. 41 // initialization finishes), but no updates are allowed.
42 bool IsInitialized() const; 42 bool IsInitialized() const;
43 43
44 // Returns whether the database is in an (unrecoverable) error state. If this
45 // is true, the database must not be used anymore
46 bool IsErrorState() const;
47
48 // Set a callback to be called when the database enters an error state.
49 void SetErrorCallback(const base::Closure& error_callback);
50
44 // Loads all snippets from storage and passes them to |callback|. 51 // Loads all snippets from storage and passes them to |callback|.
45 void LoadSnippets(const SnippetsCallback& callback); 52 void LoadSnippets(const SnippetsCallback& callback);
46 53
47 // Adds or updates the given snippet. 54 // Adds or updates the given snippet.
48 void SaveSnippet(const NTPSnippet& snippet); 55 void SaveSnippet(const NTPSnippet& snippet);
49 // Adds or updates all the given snippets. 56 // Adds or updates all the given snippets.
50 void SaveSnippets(const NTPSnippet::PtrVector& snippets); 57 void SaveSnippets(const NTPSnippet::PtrVector& snippets);
51 58
52 // Deletes the snippet with the given ID, and its image. 59 // Deletes the snippet with the given ID, and its image.
53 void DeleteSnippet(const std::string& snippet_id); 60 void DeleteSnippet(const std::string& snippet_id);
(...skipping 27 matching lines...) Expand all
81 std::unique_ptr<std::vector<SnippetProto>> entries); 88 std::unique_ptr<std::vector<SnippetProto>> entries);
82 void OnDatabaseSaved(bool success); 89 void OnDatabaseSaved(bool success);
83 90
84 // Callbacks for ProtoDatabase<SnippetImageProto> operations. 91 // Callbacks for ProtoDatabase<SnippetImageProto> operations.
85 void OnImageDatabaseInited(bool success); 92 void OnImageDatabaseInited(bool success);
86 void OnImageDatabaseLoaded(const SnippetImageCallback& callback, 93 void OnImageDatabaseLoaded(const SnippetImageCallback& callback,
87 bool success, 94 bool success,
88 std::unique_ptr<SnippetImageProto> entry); 95 std::unique_ptr<SnippetImageProto> entry);
89 void OnImageDatabaseSaved(bool success); 96 void OnImageDatabaseSaved(bool success);
90 97
98 void OnDatabaseError();
99
91 void ProcessPendingLoads(); 100 void ProcessPendingLoads();
92 101
93 void LoadSnippetsImpl(const SnippetsCallback& callback); 102 void LoadSnippetsImpl(const SnippetsCallback& callback);
94 void SaveSnippetsImpl(std::unique_ptr<KeyEntryVector> entries_to_save); 103 void SaveSnippetsImpl(std::unique_ptr<KeyEntryVector> entries_to_save);
95 void DeleteSnippetsImpl( 104 void DeleteSnippetsImpl(
96 std::unique_ptr<std::vector<std::string>> keys_to_remove); 105 std::unique_ptr<std::vector<std::string>> keys_to_remove);
97 106
98 void LoadImageImpl(const std::string& snippet_id, 107 void LoadImageImpl(const std::string& snippet_id,
99 const SnippetImageCallback& callback); 108 const SnippetImageCallback& callback);
100 void DeleteImagesImpl( 109 void DeleteImagesImpl(
101 std::unique_ptr<std::vector<std::string>> keys_to_remove); 110 std::unique_ptr<std::vector<std::string>> keys_to_remove);
102 111
103 void ResetDatabases();
104
105 std::unique_ptr<leveldb_proto::ProtoDatabase<SnippetProto>> database_; 112 std::unique_ptr<leveldb_proto::ProtoDatabase<SnippetProto>> database_;
106 bool database_initialized_; 113 bool database_initialized_;
107 std::vector<SnippetsCallback> pending_snippets_callbacks_; 114 std::vector<SnippetsCallback> pending_snippets_callbacks_;
108 115
109 std::unique_ptr<leveldb_proto::ProtoDatabase<SnippetImageProto>> 116 std::unique_ptr<leveldb_proto::ProtoDatabase<SnippetImageProto>>
110 image_database_; 117 image_database_;
111 bool image_database_initialized_; 118 bool image_database_initialized_;
112 std::vector<std::pair<std::string, SnippetImageCallback>> 119 std::vector<std::pair<std::string, SnippetImageCallback>>
113 pending_image_callbacks_; 120 pending_image_callbacks_;
114 121
122 base::Closure error_callback_;
Bernhard Bauer 2016/06/20 17:37:46 At some point you could think about switching to a
Marc Treib 2016/06/21 08:27:48 Hm, true. I generally like explicit callbacks beca
123
115 base::WeakPtrFactory<NTPSnippetsDatabase> weak_ptr_factory_; 124 base::WeakPtrFactory<NTPSnippetsDatabase> weak_ptr_factory_;
116 125
117 DISALLOW_COPY_AND_ASSIGN(NTPSnippetsDatabase); 126 DISALLOW_COPY_AND_ASSIGN(NTPSnippetsDatabase);
118 }; 127 };
119 128
120 } // namespace ntp_snippets 129 } // namespace ntp_snippets
121 130
122 #endif // COMPONENTS_NTP_SNIPPETS_NTP_SNIPPETS_DATABASE_H_ 131 #endif // COMPONENTS_NTP_SNIPPETS_NTP_SNIPPETS_DATABASE_H_
OLDNEW
« no previous file with comments | « no previous file | components/ntp_snippets/ntp_snippets_database.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698