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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/metadata_database_index.cc

Issue 1873683002: Convert //chrome/browser/sync_file_system from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/sync_file_system/drive_backend/metadata_database_index. h" 5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database_index. h"
6 6
7 #include <tuple> 7 #include <tuple>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/memory/ptr_util.h"
10 #include "base/metrics/histogram.h" 11 #include "base/metrics/histogram.h"
11 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_number_conversions.h"
12 #include "base/strings/string_util.h" 13 #include "base/strings/string_util.h"
13 #include "base/threading/thread_restrictions.h" 14 #include "base/threading/thread_restrictions.h"
14 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h" 15 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h"
15 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_util.h" 16 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_util.h"
16 #include "chrome/browser/sync_file_system/drive_backend/leveldb_wrapper.h" 17 #include "chrome/browser/sync_file_system/drive_backend/leveldb_wrapper.h"
17 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 18 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
18 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" 19 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
19 #include "chrome/browser/sync_file_system/logger.h" 20 #include "chrome/browser/sync_file_system/logger.h"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 typename Container::const_iterator found = container.find(key); 76 typename Container::const_iterator found = container.find(key);
76 if (found == container.end()) 77 if (found == container.end())
77 return typename Container::mapped_type(); 78 return typename Container::mapped_type();
78 return found->second; 79 return found->second;
79 } 80 }
80 81
81 void ReadDatabaseContents(LevelDBWrapper* db, DatabaseContents* contents) { 82 void ReadDatabaseContents(LevelDBWrapper* db, DatabaseContents* contents) {
82 DCHECK(db); 83 DCHECK(db);
83 DCHECK(contents); 84 DCHECK(contents);
84 85
85 scoped_ptr<LevelDBWrapper::Iterator> itr(db->NewIterator()); 86 std::unique_ptr<LevelDBWrapper::Iterator> itr(db->NewIterator());
86 for (itr->SeekToFirst(); itr->Valid(); itr->Next()) { 87 for (itr->SeekToFirst(); itr->Valid(); itr->Next()) {
87 std::string key = itr->key().ToString(); 88 std::string key = itr->key().ToString();
88 std::string value = itr->value().ToString(); 89 std::string value = itr->value().ToString();
89 90
90 std::string file_id; 91 std::string file_id;
91 if (RemovePrefix(key, kFileMetadataKeyPrefix, &file_id)) { 92 if (RemovePrefix(key, kFileMetadataKeyPrefix, &file_id)) {
92 scoped_ptr<FileMetadata> metadata(new FileMetadata); 93 std::unique_ptr<FileMetadata> metadata(new FileMetadata);
93 if (!metadata->ParseFromString(itr->value().ToString())) { 94 if (!metadata->ParseFromString(itr->value().ToString())) {
94 util::Log(logging::LOG_WARNING, FROM_HERE, 95 util::Log(logging::LOG_WARNING, FROM_HERE,
95 "Failed to parse a FileMetadata"); 96 "Failed to parse a FileMetadata");
96 continue; 97 continue;
97 } 98 }
98 99
99 contents->file_metadata.push_back(metadata.release()); 100 contents->file_metadata.push_back(metadata.release());
100 continue; 101 continue;
101 } 102 }
102 103
103 std::string tracker_id_str; 104 std::string tracker_id_str;
104 if (RemovePrefix(key, kFileTrackerKeyPrefix, &tracker_id_str)) { 105 if (RemovePrefix(key, kFileTrackerKeyPrefix, &tracker_id_str)) {
105 int64_t tracker_id = 0; 106 int64_t tracker_id = 0;
106 if (!base::StringToInt64(tracker_id_str, &tracker_id)) { 107 if (!base::StringToInt64(tracker_id_str, &tracker_id)) {
107 util::Log(logging::LOG_WARNING, FROM_HERE, 108 util::Log(logging::LOG_WARNING, FROM_HERE,
108 "Failed to parse TrackerID"); 109 "Failed to parse TrackerID");
109 continue; 110 continue;
110 } 111 }
111 112
112 scoped_ptr<FileTracker> tracker(new FileTracker); 113 std::unique_ptr<FileTracker> tracker(new FileTracker);
113 if (!tracker->ParseFromString(itr->value().ToString())) { 114 if (!tracker->ParseFromString(itr->value().ToString())) {
114 util::Log(logging::LOG_WARNING, FROM_HERE, 115 util::Log(logging::LOG_WARNING, FROM_HERE,
115 "Failed to parse a Tracker"); 116 "Failed to parse a Tracker");
116 continue; 117 continue;
117 } 118 }
118 contents->file_trackers.push_back(tracker.release()); 119 contents->file_trackers.push_back(tracker.release());
119 continue; 120 continue;
120 } 121 }
121 } 122 }
122 } 123 }
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 } else { 194 } else {
194 PutFileMetadataDeletionToDB(metadata->file_id(), db); 195 PutFileMetadataDeletionToDB(metadata->file_id(), db);
195 } 196 }
196 } 197 }
197 contents->file_metadata = std::move(referred_file_metadata); 198 contents->file_metadata = std::move(referred_file_metadata);
198 } 199 }
199 200
200 } // namespace 201 } // namespace
201 202
202 // static 203 // static
203 scoped_ptr<MetadataDatabaseIndex> 204 std::unique_ptr<MetadataDatabaseIndex> MetadataDatabaseIndex::Create(
204 MetadataDatabaseIndex::Create(LevelDBWrapper* db) { 205 LevelDBWrapper* db) {
205 DCHECK(db); 206 DCHECK(db);
206 207
207 scoped_ptr<ServiceMetadata> service_metadata = InitializeServiceMetadata(db); 208 std::unique_ptr<ServiceMetadata> service_metadata =
209 InitializeServiceMetadata(db);
208 if (!service_metadata) 210 if (!service_metadata)
209 return scoped_ptr<MetadataDatabaseIndex>(); 211 return std::unique_ptr<MetadataDatabaseIndex>();
210 212
211 DatabaseContents contents; 213 DatabaseContents contents;
212 PutVersionToDB(kCurrentDatabaseVersion, db); 214 PutVersionToDB(kCurrentDatabaseVersion, db);
213 ReadDatabaseContents(db, &contents); 215 ReadDatabaseContents(db, &contents);
214 RemoveUnreachableItemsFromDB(&contents, 216 RemoveUnreachableItemsFromDB(&contents,
215 service_metadata->sync_root_tracker_id(), 217 service_metadata->sync_root_tracker_id(),
216 db); 218 db);
217 219
218 scoped_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex(db)); 220 std::unique_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex(db));
219 index->Initialize(std::move(service_metadata), &contents); 221 index->Initialize(std::move(service_metadata), &contents);
220 return index; 222 return index;
221 } 223 }
222 224
223 // static 225 // static
224 scoped_ptr<MetadataDatabaseIndex> 226 std::unique_ptr<MetadataDatabaseIndex> MetadataDatabaseIndex::CreateForTesting(
225 MetadataDatabaseIndex::CreateForTesting(DatabaseContents* contents, 227 DatabaseContents* contents,
226 LevelDBWrapper* db) { 228 LevelDBWrapper* db) {
227 scoped_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex(db)); 229 std::unique_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex(db));
228 index->Initialize(make_scoped_ptr(new ServiceMetadata), contents); 230 index->Initialize(base::WrapUnique(new ServiceMetadata), contents);
229 return index; 231 return index;
230 } 232 }
231 233
232 void MetadataDatabaseIndex::Initialize( 234 void MetadataDatabaseIndex::Initialize(
233 scoped_ptr<ServiceMetadata> service_metadata, 235 std::unique_ptr<ServiceMetadata> service_metadata,
234 DatabaseContents* contents) { 236 DatabaseContents* contents) {
235 service_metadata_ = std::move(service_metadata); 237 service_metadata_ = std::move(service_metadata);
236 238
237 for (size_t i = 0; i < contents->file_metadata.size(); ++i) 239 for (size_t i = 0; i < contents->file_metadata.size(); ++i)
238 StoreFileMetadata(make_scoped_ptr(contents->file_metadata[i])); 240 StoreFileMetadata(base::WrapUnique(contents->file_metadata[i]));
239 contents->file_metadata.weak_clear(); 241 contents->file_metadata.weak_clear();
240 242
241 for (size_t i = 0; i < contents->file_trackers.size(); ++i) 243 for (size_t i = 0; i < contents->file_trackers.size(); ++i)
242 StoreFileTracker(make_scoped_ptr(contents->file_trackers[i])); 244 StoreFileTracker(base::WrapUnique(contents->file_trackers[i]));
243 contents->file_trackers.weak_clear(); 245 contents->file_trackers.weak_clear();
244 246
245 UMA_HISTOGRAM_COUNTS("SyncFileSystem.MetadataNumber", metadata_by_id_.size()); 247 UMA_HISTOGRAM_COUNTS("SyncFileSystem.MetadataNumber", metadata_by_id_.size());
246 UMA_HISTOGRAM_COUNTS("SyncFileSystem.TrackerNumber", tracker_by_id_.size()); 248 UMA_HISTOGRAM_COUNTS("SyncFileSystem.TrackerNumber", tracker_by_id_.size());
247 UMA_HISTOGRAM_COUNTS_100("SyncFileSystem.RegisteredAppNumber", 249 UMA_HISTOGRAM_COUNTS_100("SyncFileSystem.RegisteredAppNumber",
248 app_root_by_app_id_.size()); 250 app_root_by_app_id_.size());
249 } 251 }
250 252
251 MetadataDatabaseIndex::MetadataDatabaseIndex(LevelDBWrapper* db) : db_(db) {} 253 MetadataDatabaseIndex::MetadataDatabaseIndex(LevelDBWrapper* db) : db_(db) {}
252 MetadataDatabaseIndex::~MetadataDatabaseIndex() {} 254 MetadataDatabaseIndex::~MetadataDatabaseIndex() {}
(...skipping 18 matching lines...) Expand all
271 FileTracker* tracker) const { 273 FileTracker* tracker) const {
272 FileTracker* identified = tracker_by_id_.get(tracker_id); 274 FileTracker* identified = tracker_by_id_.get(tracker_id);
273 if (!identified) 275 if (!identified)
274 return false; 276 return false;
275 if (tracker) 277 if (tracker)
276 tracker->CopyFrom(*identified); 278 tracker->CopyFrom(*identified);
277 return true; 279 return true;
278 } 280 }
279 281
280 void MetadataDatabaseIndex::StoreFileMetadata( 282 void MetadataDatabaseIndex::StoreFileMetadata(
281 scoped_ptr<FileMetadata> metadata) { 283 std::unique_ptr<FileMetadata> metadata) {
282 PutFileMetadataToDB(*metadata.get(), db_); 284 PutFileMetadataToDB(*metadata.get(), db_);
283 if (!metadata) { 285 if (!metadata) {
284 NOTREACHED(); 286 NOTREACHED();
285 return; 287 return;
286 } 288 }
287 289
288 std::string file_id = metadata->file_id(); 290 std::string file_id = metadata->file_id();
289 metadata_by_id_.set(file_id, std::move(metadata)); 291 metadata_by_id_.set(file_id, std::move(metadata));
290 } 292 }
291 293
292 void MetadataDatabaseIndex::StoreFileTracker( 294 void MetadataDatabaseIndex::StoreFileTracker(
293 scoped_ptr<FileTracker> tracker) { 295 std::unique_ptr<FileTracker> tracker) {
294 PutFileTrackerToDB(*tracker.get(), db_); 296 PutFileTrackerToDB(*tracker.get(), db_);
295 if (!tracker) { 297 if (!tracker) {
296 NOTREACHED(); 298 NOTREACHED();
297 return; 299 return;
298 } 300 }
299 301
300 int64_t tracker_id = tracker->tracker_id(); 302 int64_t tracker_id = tracker->tracker_id();
301 FileTracker* old_tracker = tracker_by_id_.get(tracker_id); 303 FileTracker* old_tracker = tracker_by_id_.get(tracker_id);
302 304
303 if (!old_tracker) { 305 if (!old_tracker) {
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
763 765
764 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id; 766 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id;
765 dirty_trackers_.erase(tracker_id); 767 dirty_trackers_.erase(tracker_id);
766 768
767 demoted_dirty_trackers_.erase(tracker_id); 769 demoted_dirty_trackers_.erase(tracker_id);
768 } 770 }
769 } 771 }
770 772
771 } // namespace drive_backend 773 } // namespace drive_backend
772 } // namespace sync_file_system 774 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698