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

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

Issue 2605433002: Remove base::ScopedPtrHashMap from chrome/browser/sync_file_system/drive_backend/ (Closed)
Patch Set: no crash Created 3 years, 11 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/memory/ptr_util.h"
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 MetadataDatabaseIndex::~MetadataDatabaseIndex() {} 255 MetadataDatabaseIndex::~MetadataDatabaseIndex() {}
256 256
257 void MetadataDatabaseIndex::RemoveUnreachableItems() { 257 void MetadataDatabaseIndex::RemoveUnreachableItems() {
258 // Do nothing. MetadataDatabaseIndex is behind a private flag and will be 258 // Do nothing. MetadataDatabaseIndex is behind a private flag and will be
259 // removed soon. 259 // removed soon.
260 // TODO(crbug.com/568008): Remove MetadataDatabaseIndex. 260 // TODO(crbug.com/568008): Remove MetadataDatabaseIndex.
261 } 261 }
262 262
263 bool MetadataDatabaseIndex::GetFileMetadata( 263 bool MetadataDatabaseIndex::GetFileMetadata(
264 const std::string& file_id, FileMetadata* metadata) const { 264 const std::string& file_id, FileMetadata* metadata) const {
265 FileMetadata* identified = metadata_by_id_.get(file_id); 265 auto it = metadata_by_id_.find(file_id);
266 if (!identified) 266 if (it == metadata_by_id_.end())
267 return false; 267 return false;
268 FileMetadata* identified = it->second.get();
268 if (metadata) 269 if (metadata)
269 metadata->CopyFrom(*identified); 270 metadata->CopyFrom(*identified);
270 return true; 271 return true;
271 } 272 }
272 273
273 bool MetadataDatabaseIndex::GetFileTracker(int64_t tracker_id, 274 bool MetadataDatabaseIndex::GetFileTracker(int64_t tracker_id,
274 FileTracker* tracker) const { 275 FileTracker* tracker) const {
275 FileTracker* identified = tracker_by_id_.get(tracker_id); 276 auto it = tracker_by_id_.find(tracker_id);
276 if (!identified) 277 if (it == tracker_by_id_.end())
277 return false; 278 return false;
279 FileTracker* identified = it->second.get();
278 if (tracker) 280 if (tracker)
279 tracker->CopyFrom(*identified); 281 tracker->CopyFrom(*identified);
280 return true; 282 return true;
281 } 283 }
282 284
283 void MetadataDatabaseIndex::StoreFileMetadata( 285 void MetadataDatabaseIndex::StoreFileMetadata(
284 std::unique_ptr<FileMetadata> metadata) { 286 std::unique_ptr<FileMetadata> metadata) {
285 PutFileMetadataToDB(*metadata.get(), db_); 287 PutFileMetadataToDB(*metadata.get(), db_);
286 if (!metadata) { 288 if (!metadata) {
287 NOTREACHED(); 289 NOTREACHED();
288 return; 290 return;
289 } 291 }
290 292
291 std::string file_id = metadata->file_id(); 293 std::string file_id = metadata->file_id();
292 metadata_by_id_.set(file_id, std::move(metadata)); 294 metadata_by_id_[file_id] = std::move(metadata);
293 } 295 }
294 296
295 void MetadataDatabaseIndex::StoreFileTracker( 297 void MetadataDatabaseIndex::StoreFileTracker(
296 std::unique_ptr<FileTracker> tracker) { 298 std::unique_ptr<FileTracker> tracker) {
297 PutFileTrackerToDB(*tracker.get(), db_); 299 PutFileTrackerToDB(*tracker.get(), db_);
298 if (!tracker) { 300 if (!tracker) {
299 NOTREACHED(); 301 NOTREACHED();
300 return; 302 return;
301 } 303 }
302 304
303 int64_t tracker_id = tracker->tracker_id(); 305 int64_t tracker_id = tracker->tracker_id();
304 FileTracker* old_tracker = tracker_by_id_.get(tracker_id); 306 auto old_tracker_it = tracker_by_id_.find(tracker_id);
305 307
306 if (!old_tracker) { 308 if (old_tracker_it == tracker_by_id_.end()) {
307 DVLOG(3) << "Adding new tracker: " << tracker->tracker_id() 309 DVLOG(3) << "Adding new tracker: " << tracker->tracker_id()
308 << " " << GetTrackerTitle(*tracker); 310 << " " << GetTrackerTitle(*tracker);
309 311
310 AddToAppIDIndex(*tracker); 312 AddToAppIDIndex(*tracker);
311 AddToPathIndexes(*tracker); 313 AddToPathIndexes(*tracker);
312 AddToFileIDIndexes(*tracker); 314 AddToFileIDIndexes(*tracker);
313 AddToDirtyTrackerIndexes(*tracker); 315 AddToDirtyTrackerIndexes(*tracker);
314 } else { 316 } else {
315 DVLOG(3) << "Updating tracker: " << tracker->tracker_id() 317 DVLOG(3) << "Updating tracker: " << tracker->tracker_id()
316 << " " << GetTrackerTitle(*tracker); 318 << " " << GetTrackerTitle(*tracker);
317 319
320 FileTracker* old_tracker = old_tracker_it->second.get();
318 UpdateInAppIDIndex(*old_tracker, *tracker); 321 UpdateInAppIDIndex(*old_tracker, *tracker);
319 UpdateInPathIndexes(*old_tracker, *tracker); 322 UpdateInPathIndexes(*old_tracker, *tracker);
320 UpdateInFileIDIndexes(*old_tracker, *tracker); 323 UpdateInFileIDIndexes(*old_tracker, *tracker);
321 UpdateInDirtyTrackerIndexes(*old_tracker, *tracker); 324 UpdateInDirtyTrackerIndexes(*old_tracker, *tracker);
322 } 325 }
323 326
324 tracker_by_id_.set(tracker_id, std::move(tracker)); 327 tracker_by_id_[tracker_id] = std::move(tracker);
325 } 328 }
326 329
327 void MetadataDatabaseIndex::RemoveFileMetadata(const std::string& file_id) { 330 void MetadataDatabaseIndex::RemoveFileMetadata(const std::string& file_id) {
328 PutFileMetadataDeletionToDB(file_id, db_); 331 PutFileMetadataDeletionToDB(file_id, db_);
329 metadata_by_id_.erase(file_id); 332 metadata_by_id_.erase(file_id);
330 } 333 }
331 334
332 void MetadataDatabaseIndex::RemoveFileTracker(int64_t tracker_id) { 335 void MetadataDatabaseIndex::RemoveFileTracker(int64_t tracker_id) {
333 PutFileTrackerDeletionToDB(tracker_id, db_); 336 PutFileTrackerDeletionToDB(tracker_id, db_);
334 337
335 FileTracker* tracker = tracker_by_id_.get(tracker_id); 338 auto tracker_it = tracker_by_id_.find(tracker_id);
336 if (!tracker) { 339 if (tracker_it == tracker_by_id_.end()) {
337 NOTREACHED(); 340 NOTREACHED();
338 return; 341 return;
339 } 342 }
343 FileTracker* tracker = tracker_it->second.get();
340 344
341 DVLOG(3) << "Removing tracker: " 345 DVLOG(3) << "Removing tracker: "
342 << tracker->tracker_id() << " " << GetTrackerTitle(*tracker); 346 << tracker->tracker_id() << " " << GetTrackerTitle(*tracker);
343 347
344 RemoveFromAppIDIndex(*tracker); 348 RemoveFromAppIDIndex(*tracker);
345 RemoveFromPathIndexes(*tracker); 349 RemoveFromPathIndexes(*tracker);
346 RemoveFromFileIDIndexes(*tracker); 350 RemoveFromFileIDIndexes(*tracker);
347 RemoveFromDirtyTrackerIndexes(*tracker); 351 RemoveFromDirtyTrackerIndexes(*tracker);
348 352
349 tracker_by_id_.erase(tracker_id); 353 tracker_by_id_.erase(tracker_id);
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 if (!service_metadata_->has_next_tracker_id()) { 488 if (!service_metadata_->has_next_tracker_id()) {
485 NOTREACHED(); 489 NOTREACHED();
486 return kInvalidTrackerID; 490 return kInvalidTrackerID;
487 } 491 }
488 return service_metadata_->next_tracker_id(); 492 return service_metadata_->next_tracker_id();
489 } 493 }
490 494
491 std::vector<std::string> MetadataDatabaseIndex::GetRegisteredAppIDs() const { 495 std::vector<std::string> MetadataDatabaseIndex::GetRegisteredAppIDs() const {
492 std::vector<std::string> result; 496 std::vector<std::string> result;
493 result.reserve(app_root_by_app_id_.size()); 497 result.reserve(app_root_by_app_id_.size());
494 for (TrackerIDByAppID::const_iterator itr = app_root_by_app_id_.begin(); 498 for (const auto& pair : app_root_by_app_id_)
495 itr != app_root_by_app_id_.end(); ++itr) 499 result.push_back(pair.first);
496 result.push_back(itr->first);
497 return result; 500 return result;
498 } 501 }
499 502
500 std::vector<int64_t> MetadataDatabaseIndex::GetAllTrackerIDs() const { 503 std::vector<int64_t> MetadataDatabaseIndex::GetAllTrackerIDs() const {
501 std::vector<int64_t> result; 504 std::vector<int64_t> result;
502 for (TrackerByID::const_iterator itr = tracker_by_id_.begin(); 505 for (const auto& pair : tracker_by_id_)
503 itr != tracker_by_id_.end(); ++itr) { 506 result.push_back(pair.first);
504 result.push_back(itr->first);
505 }
506 return result; 507 return result;
507 } 508 }
508 509
509 std::vector<std::string> MetadataDatabaseIndex::GetAllMetadataIDs() const { 510 std::vector<std::string> MetadataDatabaseIndex::GetAllMetadataIDs() const {
510 std::vector<std::string> result; 511 std::vector<std::string> result;
511 for (MetadataByID::const_iterator itr = metadata_by_id_.begin(); 512 for (const auto& pair : metadata_by_id_)
512 itr != metadata_by_id_.end(); ++itr) { 513 result.push_back(pair.first);
513 result.push_back(itr->first);
514 }
515 return result; 514 return result;
516 } 515 }
517 516
518 void MetadataDatabaseIndex::AddToAppIDIndex( 517 void MetadataDatabaseIndex::AddToAppIDIndex(
519 const FileTracker& new_tracker) { 518 const FileTracker& new_tracker) {
520 if (!IsAppRoot(new_tracker)) 519 if (!IsAppRoot(new_tracker))
521 return; 520 return;
522 521
523 DVLOG(3) << " Add to app_root_by_app_id_: " << new_tracker.app_id(); 522 DVLOG(3) << " Add to app_root_by_app_id_: " << new_tracker.app_id();
524 523
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
767 766
768 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id; 767 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id;
769 dirty_trackers_.erase(tracker_id); 768 dirty_trackers_.erase(tracker_id);
770 769
771 demoted_dirty_trackers_.erase(tracker_id); 770 demoted_dirty_trackers_.erase(tracker_id);
772 } 771 }
773 } 772 }
774 773
775 } // namespace drive_backend 774 } // namespace drive_backend
776 } // namespace sync_file_system 775 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698