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

Side by Side Diff: components/dom_distiller/core/dom_distiller_store.h

Issue 717793007: Add attachments support to DomDistillerStore (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move some unrelated stuff out Created 6 years, 1 month 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_DOM_DISTILLER_CORE_DOM_DISTILLER_STORE_H_ 5 #ifndef COMPONENTS_DOM_DISTILLER_CORE_DOM_DISTILLER_STORE_H_
6 #define COMPONENTS_DOM_DISTILLER_CORE_DOM_DISTILLER_STORE_H_ 6 #define COMPONENTS_DOM_DISTILLER_CORE_DOM_DISTILLER_STORE_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/containers/hash_tables.h" 11 #include "base/containers/hash_tables.h"
12 #include "base/memory/weak_ptr.h" 12 #include "base/memory/weak_ptr.h"
13 #include "base/observer_list.h" 13 #include "base/observer_list.h"
14 #include "components/dom_distiller/core/article_attachments_data.h"
14 #include "components/dom_distiller/core/article_entry.h" 15 #include "components/dom_distiller/core/article_entry.h"
15 #include "components/dom_distiller/core/dom_distiller_model.h" 16 #include "components/dom_distiller/core/dom_distiller_model.h"
16 #include "components/dom_distiller/core/dom_distiller_observer.h" 17 #include "components/dom_distiller/core/dom_distiller_observer.h"
17 #include "components/leveldb_proto/proto_database.h" 18 #include "components/leveldb_proto/proto_database.h"
18 #include "sync/api/sync_change.h" 19 #include "sync/api/sync_change.h"
19 #include "sync/api/sync_data.h" 20 #include "sync/api/sync_data.h"
20 #include "sync/api/sync_error.h" 21 #include "sync/api/sync_error.h"
21 #include "sync/api/sync_error_factory.h" 22 #include "sync/api/sync_error_factory.h"
22 #include "sync/api/sync_merge_result.h" 23 #include "sync/api/sync_merge_result.h"
23 #include "sync/api/syncable_service.h" 24 #include "sync/api/syncable_service.h"
24 #include "url/gurl.h" 25 #include "url/gurl.h"
25 26
26 namespace base { 27 namespace base {
27 class FilePath; 28 class FilePath;
28 } 29 }
29 30
31 namespace syncer {
32 class AttachmentStore;
33 }
34
30 namespace dom_distiller { 35 namespace dom_distiller {
31 36
32 // Interface for accessing the stored/synced DomDistiller entries. 37 // Interface for accessing the stored/synced DomDistiller entries.
33 class DomDistillerStoreInterface { 38 class DomDistillerStoreInterface {
34 public: 39 public:
35 virtual ~DomDistillerStoreInterface() {} 40 virtual ~DomDistillerStoreInterface() {}
36 41
37 // Gets the syncable service for this store or null if it is not synced. 42 // Gets the syncable service for this store or null if it is not synced.
38 virtual syncer::SyncableService* GetSyncableService() = 0; 43 virtual syncer::SyncableService* GetSyncableService() = 0;
39 44
40 virtual bool AddEntry(const ArticleEntry& entry) = 0; 45 virtual bool AddEntry(const ArticleEntry& entry) = 0;
41
maniscalco 2014/11/12 18:59:44 Accidental line removal?
cjhopman 2014/11/14 02:45:15 Done. pulled the line removal into different chang
42 // Returns false if |entry| is not present or |entry| was not updated. 46 // Returns false if |entry| is not present or |entry| was not updated.
43 virtual bool UpdateEntry(const ArticleEntry& entry) = 0; 47 virtual bool UpdateEntry(const ArticleEntry& entry) = 0;
48 virtual bool RemoveEntry(const ArticleEntry& entry) = 0;
44 49
45 virtual bool RemoveEntry(const ArticleEntry& entry) = 0; 50 // Updates the attachments for an entry.
51 typedef base::Callback<void(bool)>
maniscalco 2014/11/12 18:59:44 What does the bool indicate?
cjhopman 2014/11/14 02:45:15 Done. added names here and documentation to the fu
52 UpdateAttachmentsCallback;
53 typedef base::Callback<void(bool, scoped_ptr<ArticleAttachmentsData>)>
54 GetAttachmentsCallback;
55 virtual void UpdateAttachments(
56 const std::string& entry_id,
57 scoped_ptr<ArticleAttachmentsData> attachments,
58 UpdateAttachmentsCallback callback) = 0;
59 virtual void GetAttachments(const std::string& entry_id,
60 GetAttachmentsCallback callback) = 0;
46 61
47 // Lookup an ArticleEntry by ID or URL. Returns whether a corresponding entry 62 // Lookup an ArticleEntry by ID or URL. Returns whether a corresponding entry
48 // was found. On success, if |entry| is not null, it will contain the entry. 63 // was found. On success, if |entry| is not null, it will contain the entry.
49 virtual bool GetEntryById(const std::string& entry_id, 64 virtual bool GetEntryById(const std::string& entry_id,
50 ArticleEntry* entry) = 0; 65 ArticleEntry* entry) = 0;
51 virtual bool GetEntryByUrl(const GURL& url, ArticleEntry* entry) = 0; 66 virtual bool GetEntryByUrl(const GURL& url, ArticleEntry* entry) = 0;
52 67
53 // Gets a copy of all the current entries. 68 // Gets a copy of all the current entries.
54 virtual std::vector<ArticleEntry> GetEntries() const = 0; 69 virtual std::vector<ArticleEntry> GetEntries() const = 0;
55 70
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 // |initial_model|. 104 // |initial_model|.
90 DomDistillerStore( 105 DomDistillerStore(
91 scoped_ptr<leveldb_proto::ProtoDatabase<ArticleEntry> > database, 106 scoped_ptr<leveldb_proto::ProtoDatabase<ArticleEntry> > database,
92 const std::vector<ArticleEntry>& initial_data, 107 const std::vector<ArticleEntry>& initial_data,
93 const base::FilePath& database_dir); 108 const base::FilePath& database_dir);
94 109
95 ~DomDistillerStore() override; 110 ~DomDistillerStore() override;
96 111
97 // DomDistillerStoreInterface implementation. 112 // DomDistillerStoreInterface implementation.
98 syncer::SyncableService* GetSyncableService() override; 113 syncer::SyncableService* GetSyncableService() override;
114
99 bool AddEntry(const ArticleEntry& entry) override; 115 bool AddEntry(const ArticleEntry& entry) override;
100 bool UpdateEntry(const ArticleEntry& entry) override; 116 bool UpdateEntry(const ArticleEntry& entry) override;
101 bool RemoveEntry(const ArticleEntry& entry) override; 117 bool RemoveEntry(const ArticleEntry& entry) override;
118
119 virtual void UpdateAttachments(
120 const std::string& entry_id,
121 scoped_ptr<ArticleAttachmentsData> attachments_data,
122 UpdateAttachmentsCallback callback) override;
123 virtual void GetAttachments(const std::string& entry_id,
124 GetAttachmentsCallback callback) override;
125
102 bool GetEntryById(const std::string& entry_id, ArticleEntry* entry) override; 126 bool GetEntryById(const std::string& entry_id, ArticleEntry* entry) override;
103 bool GetEntryByUrl(const GURL& url, ArticleEntry* entry) override; 127 bool GetEntryByUrl(const GURL& url, ArticleEntry* entry) override;
104 std::vector<ArticleEntry> GetEntries() const override; 128 std::vector<ArticleEntry> GetEntries() const override;
129
105 void AddObserver(DomDistillerObserver* observer) override; 130 void AddObserver(DomDistillerObserver* observer) override;
106 void RemoveObserver(DomDistillerObserver* observer) override; 131 void RemoveObserver(DomDistillerObserver* observer) override;
107 132
108 // syncer::SyncableService implementation. 133 // syncer::SyncableService implementation.
109 syncer::SyncMergeResult MergeDataAndStartSyncing( 134 syncer::SyncMergeResult MergeDataAndStartSyncing(
110 syncer::ModelType type, 135 syncer::ModelType type,
111 const syncer::SyncDataList& initial_sync_data, 136 const syncer::SyncDataList& initial_sync_data,
112 scoped_ptr<syncer::SyncChangeProcessor> sync_processor, 137 scoped_ptr<syncer::SyncChangeProcessor> sync_processor,
113 scoped_ptr<syncer::SyncErrorFactory> error_handler) override; 138 scoped_ptr<syncer::SyncErrorFactory> error_handler) override;
114 void StopSyncing(syncer::ModelType type) override; 139 void StopSyncing(syncer::ModelType type) override;
115 syncer::SyncDataList GetAllSyncData(syncer::ModelType type) const override; 140 syncer::SyncDataList GetAllSyncData(syncer::ModelType type) const override;
116 syncer::SyncError ProcessSyncChanges( 141 syncer::SyncError ProcessSyncChanges(
117 const tracked_objects::Location& from_here, 142 const tracked_objects::Location& from_here,
118 const syncer::SyncChangeList& change_list) override; 143 const syncer::SyncChangeList& change_list) override;
119 144
120 private: 145 private:
121 void OnDatabaseInit(bool success); 146 void OnDatabaseInit(bool success);
122 void OnDatabaseLoad(bool success, scoped_ptr<EntryVector> entries); 147 void OnDatabaseLoad(bool success, scoped_ptr<EntryVector> entries);
123 void OnDatabaseSave(bool success); 148 void OnDatabaseSave(bool success);
124 149
125 bool ChangeEntry(const ArticleEntry& entry, 150 bool ChangeEntry(const ArticleEntry& entry,
126 syncer::SyncChange::SyncChangeType changeType); 151 syncer::SyncChange::SyncChangeType changeType);
127 152
153 void OnAttachmentsWrite(
154 const std::string& entry_id,
155 scoped_ptr<sync_pb::ArticleAttachments> article_attachments,
156 UpdateAttachmentsCallback callback,
157 const syncer::AttachmentStore::Result& result);
158
159 void OnAttachmentsRead(const sync_pb::ArticleAttachments& attachments_proto,
160 GetAttachmentsCallback callback,
161 const syncer::AttachmentStore::Result& result,
162 scoped_ptr<syncer::AttachmentMap> attachments,
163 scoped_ptr<syncer::AttachmentIdList> missing);
164
128 syncer::SyncMergeResult MergeDataWithModel( 165 syncer::SyncMergeResult MergeDataWithModel(
129 const syncer::SyncDataList& data, syncer::SyncChangeList* changes_applied, 166 const syncer::SyncDataList& data, syncer::SyncChangeList* changes_applied,
130 syncer::SyncChangeList* changes_missing); 167 syncer::SyncChangeList* changes_missing);
131 168
132 // Convert a SyncDataList to a SyncChangeList of add or update changes based 169 // Convert a SyncDataList to a SyncChangeList of add or update changes based
133 // on the state of the in-memory model. Also calculate the entries missing 170 // on the state of the in-memory model. Also calculate the entries missing
134 // from the SyncDataList. 171 // from the SyncDataList.
135 void CalculateChangesForMerge(const syncer::SyncDataList& data, 172 void CalculateChangesForMerge(const syncer::SyncDataList& data,
136 syncer::SyncChangeList* changes_to_apply, 173 syncer::SyncChangeList* changes_to_apply,
137 syncer::SyncChangeList* changes_missing); 174 syncer::SyncChangeList* changes_missing);
138 175
139 bool ApplyChangesToSync(const tracked_objects::Location& from_here, 176 bool ApplyChangesToSync(const tracked_objects::Location& from_here,
140 const syncer::SyncChangeList& change_list); 177 const syncer::SyncChangeList& change_list);
141 bool ApplyChangesToDatabase(const syncer::SyncChangeList& change_list); 178 bool ApplyChangesToDatabase(const syncer::SyncChangeList& change_list);
142 179
143 // Applies the changes to |model_|. If the model returns an error, disables 180 // Applies the changes to |model_|. If the model returns an error, disables
144 // syncing and database changes and returns false. 181 // syncing and database changes and returns false.
145 void ApplyChangesToModel(const syncer::SyncChangeList& change_list, 182 void ApplyChangesToModel(const syncer::SyncChangeList& change_list,
146 syncer::SyncChangeList* changes_applied, 183 syncer::SyncChangeList* changes_applied,
147 syncer::SyncChangeList* changes_missing); 184 syncer::SyncChangeList* changes_missing);
148 185
149 void NotifyObservers(const syncer::SyncChangeList& changes); 186 void NotifyObservers(const syncer::SyncChangeList& changes);
150 187
151 scoped_ptr<syncer::SyncChangeProcessor> sync_processor_; 188 scoped_ptr<syncer::SyncChangeProcessor> sync_processor_;
152 scoped_ptr<syncer::SyncErrorFactory> error_factory_; 189 scoped_ptr<syncer::SyncErrorFactory> error_factory_;
153 scoped_ptr<leveldb_proto::ProtoDatabase<ArticleEntry> > database_; 190 scoped_ptr<leveldb_proto::ProtoDatabase<ArticleEntry> > database_;
154 bool database_loaded_; 191 bool database_loaded_;
192 scoped_refptr<syncer::AttachmentStore> attachment_store_;
155 ObserverList<DomDistillerObserver> observers_; 193 ObserverList<DomDistillerObserver> observers_;
156 194
157 DomDistillerModel model_; 195 DomDistillerModel model_;
158 196
159 base::WeakPtrFactory<DomDistillerStore> weak_ptr_factory_; 197 base::WeakPtrFactory<DomDistillerStore> weak_ptr_factory_;
160 198
161 DISALLOW_COPY_AND_ASSIGN(DomDistillerStore); 199 DISALLOW_COPY_AND_ASSIGN(DomDistillerStore);
162 }; 200 };
163 201
164 } // namespace dom_distiller 202 } // namespace dom_distiller
165 203
166 #endif // COMPONENTS_DOM_DISTILLER_CORE_DOM_DISTILLER_STORE_H_ 204 #endif // COMPONENTS_DOM_DISTILLER_CORE_DOM_DISTILLER_STORE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698