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

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

Issue 340243004: [SyncFS] Remove a friendship between MetadataDatabase and MetadataDatabaseIndex (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Work for a nit Created 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/sync_file_system/drive_backend/metadata_database_index.h » ('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 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 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <stack> 8 #include <stack>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 701 matching lines...) Expand 10 before | Expand all | Expand 10 after
712 return service_metadata_->has_sync_root_tracker_id() && 712 return service_metadata_->has_sync_root_tracker_id() &&
713 !!service_metadata_->sync_root_tracker_id(); 713 !!service_metadata_->sync_root_tracker_id();
714 } 714 }
715 715
716 void MetadataDatabase::PopulateInitialData( 716 void MetadataDatabase::PopulateInitialData(
717 int64 largest_change_id, 717 int64 largest_change_id,
718 const google_apis::FileResource& sync_root_folder, 718 const google_apis::FileResource& sync_root_folder,
719 const ScopedVector<google_apis::FileResource>& app_root_folders, 719 const ScopedVector<google_apis::FileResource>& app_root_folders,
720 const SyncStatusCallback& callback) { 720 const SyncStatusCallback& callback) {
721 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 721 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
722 DCHECK(index_->tracker_by_id_.empty());
723 DCHECK(index_->metadata_by_id_.empty());
724 722
725 scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch); 723 scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch);
726 service_metadata_->set_largest_change_id(largest_change_id); 724 service_metadata_->set_largest_change_id(largest_change_id);
727 UpdateLargestKnownChangeID(largest_change_id); 725 UpdateLargestKnownChangeID(largest_change_id);
728 726
729 AttachSyncRoot(sync_root_folder, batch.get()); 727 AttachSyncRoot(sync_root_folder, batch.get());
730 for (size_t i = 0; i < app_root_folders.size(); ++i) 728 for (size_t i = 0; i < app_root_folders.size(); ++i)
731 AttachInitialAppRoot(*app_root_folders[i], batch.get()); 729 AttachInitialAppRoot(*app_root_folders[i], batch.get());
732 730
733 WriteToDatabase(batch.Pass(), callback); 731 WriteToDatabase(batch.Pass(), callback);
(...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after
1460 return index_->HasDemotedDirtyTracker(); 1458 return index_->HasDemotedDirtyTracker();
1461 } 1459 }
1462 1460
1463 bool MetadataDatabase::HasDirtyTracker() const { 1461 bool MetadataDatabase::HasDirtyTracker() const {
1464 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 1462 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1465 return index_->PickDirtyTracker() != kInvalidTrackerID; 1463 return index_->PickDirtyTracker() != kInvalidTrackerID;
1466 } 1464 }
1467 1465
1468 size_t MetadataDatabase::CountDirtyTracker() const { 1466 size_t MetadataDatabase::CountDirtyTracker() const {
1469 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 1467 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1470 return index_->dirty_trackers_.size() + 1468 return index_->CountDirtyTracker();
1471 index_->demoted_dirty_trackers_.size();
1472 } 1469 }
1473 1470
1474 bool MetadataDatabase::GetMultiParentFileTrackers(std::string* file_id_out, 1471 bool MetadataDatabase::GetMultiParentFileTrackers(std::string* file_id_out,
1475 TrackerIDSet* trackers_out) { 1472 TrackerIDSet* trackers_out) {
1476 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 1473 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1477 DCHECK(file_id_out); 1474 DCHECK(file_id_out);
1478 DCHECK(trackers_out); 1475 DCHECK(trackers_out);
1479 1476
1480 std::string file_id = index_->PickMultiTrackerFileID(); 1477 std::string file_id = index_->PickMultiTrackerFileID();
1481 if (file_id.empty()) 1478 if (file_id.empty())
1482 return false; 1479 return false;
1483 1480
1484 TrackerIDSet trackers = index_->GetFileTrackerIDsByFileID(file_id); 1481 TrackerIDSet trackers = index_->GetFileTrackerIDsByFileID(file_id);
1485 if (trackers.size() <= 1) { 1482 if (trackers.size() <= 1) {
1486 NOTREACHED(); 1483 NOTREACHED();
1487 return false; 1484 return false;
1488 } 1485 }
1489 1486
1490 *file_id_out = file_id; 1487 *file_id_out = file_id;
1491 std::swap(*trackers_out, trackers); 1488 std::swap(*trackers_out, trackers);
1492 return true; 1489 return true;
1493 } 1490 }
1494 1491
1495 size_t MetadataDatabase::CountFileMetadata() const { 1492 size_t MetadataDatabase::CountFileMetadata() const {
1496 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 1493 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1497 return index_->metadata_by_id_.size(); 1494 return index_->CountFileMetadata();
1498 } 1495 }
1499 1496
1500 size_t MetadataDatabase::CountFileTracker() const { 1497 size_t MetadataDatabase::CountFileTracker() const {
1501 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 1498 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1502 return index_->tracker_by_id_.size(); 1499 return index_->CountFileTracker();
1503 } 1500 }
1504 1501
1505 bool MetadataDatabase::GetConflictingTrackers(TrackerIDSet* trackers_out) { 1502 bool MetadataDatabase::GetConflictingTrackers(TrackerIDSet* trackers_out) {
1506 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 1503 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1507 DCHECK(trackers_out); 1504 DCHECK(trackers_out);
1508 1505
1509 ParentIDAndTitle parent_and_title = index_->PickMultiBackingFilePath(); 1506 ParentIDAndTitle parent_and_title = index_->PickMultiBackingFilePath();
1510 if (parent_and_title.parent_id == kInvalidTrackerID) 1507 if (parent_and_title.parent_id == kInvalidTrackerID)
1511 return false; 1508 return false;
1512 1509
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after
1969 }; 1966 };
1970 std::vector<std::string> key_strings( 1967 std::vector<std::string> key_strings(
1971 trackerKeys, trackerKeys + ARRAYSIZE_UNSAFE(trackerKeys)); 1968 trackerKeys, trackerKeys + ARRAYSIZE_UNSAFE(trackerKeys));
1972 base::ListValue* keys = new base::ListValue; 1969 base::ListValue* keys = new base::ListValue;
1973 keys->AppendStrings(key_strings); 1970 keys->AppendStrings(key_strings);
1974 metadata->SetString("title", "Trackers"); 1971 metadata->SetString("title", "Trackers");
1975 metadata->Set("keys", keys); 1972 metadata->Set("keys", keys);
1976 trackers->Append(metadata); 1973 trackers->Append(metadata);
1977 1974
1978 // Append tracker data. 1975 // Append tracker data.
1979 for (MetadataDatabaseIndex::TrackerByID::const_iterator itr = 1976 std::vector<int64> tracker_ids(index_->GetAllTrackerIDs());
1980 index_->tracker_by_id_.begin(); 1977 for (std::vector<int64>::const_iterator itr = tracker_ids.begin();
1981 itr != index_->tracker_by_id_.end(); ++itr) { 1978 itr != tracker_ids.end(); ++itr) {
1982 const FileTracker& tracker = *itr->second; 1979 const int64 tracker_id = *itr;
1980 const FileTracker* tracker = index_->GetFileTracker(tracker_id);
1981 if (!tracker) {
1982 NOTREACHED();
1983 continue;
1984 }
1985
1983 base::DictionaryValue* dict = new base::DictionaryValue; 1986 base::DictionaryValue* dict = new base::DictionaryValue;
1984 base::FilePath path = BuildDisplayPathForTracker(tracker); 1987 base::FilePath path = BuildDisplayPathForTracker(*tracker);
1985 dict->SetString("tracker_id", base::Int64ToString(tracker.tracker_id())); 1988 dict->SetString("tracker_id", base::Int64ToString(tracker_id));
1986 dict->SetString("path", path.AsUTF8Unsafe()); 1989 dict->SetString("path", path.AsUTF8Unsafe());
1987 dict->SetString("file_id", tracker.file_id()); 1990 dict->SetString("file_id", tracker->file_id());
1988 TrackerKind tracker_kind = tracker.tracker_kind(); 1991 TrackerKind tracker_kind = tracker->tracker_kind();
1989 dict->SetString( 1992 dict->SetString(
1990 "tracker_kind", 1993 "tracker_kind",
1991 tracker_kind == TRACKER_KIND_APP_ROOT ? "AppRoot" : 1994 tracker_kind == TRACKER_KIND_APP_ROOT ? "AppRoot" :
1992 tracker_kind == TRACKER_KIND_DISABLED_APP_ROOT ? "Disabled App" : 1995 tracker_kind == TRACKER_KIND_DISABLED_APP_ROOT ? "Disabled App" :
1993 tracker.tracker_id() == GetSyncRootTrackerID() ? "SyncRoot" : 1996 tracker->tracker_id() == GetSyncRootTrackerID() ? "SyncRoot" :
1994 "Regular"); 1997 "Regular");
1995 dict->SetString("app_id", tracker.app_id()); 1998 dict->SetString("app_id", tracker->app_id());
1996 dict->SetString("active", tracker.active() ? "true" : "false"); 1999 dict->SetString("active", tracker->active() ? "true" : "false");
1997 dict->SetString("dirty", tracker.dirty() ? "true" : "false"); 2000 dict->SetString("dirty", tracker->dirty() ? "true" : "false");
1998 dict->SetString("folder_listing", 2001 dict->SetString("folder_listing",
1999 tracker.needs_folder_listing() ? "needed" : "no"); 2002 tracker->needs_folder_listing() ? "needed" : "no");
2000 if (tracker.has_synced_details()) { 2003 if (tracker->has_synced_details()) {
2001 const FileDetails& details = tracker.synced_details(); 2004 const FileDetails& details = tracker->synced_details();
2002 dict->SetString("title", details.title()); 2005 dict->SetString("title", details.title());
2003 dict->SetString("kind", FileKindToString(details.file_kind())); 2006 dict->SetString("kind", FileKindToString(details.file_kind()));
2004 dict->SetString("md5", details.md5()); 2007 dict->SetString("md5", details.md5());
2005 dict->SetString("etag", details.etag()); 2008 dict->SetString("etag", details.etag());
2006 dict->SetString("missing", details.missing() ? "true" : "false"); 2009 dict->SetString("missing", details.missing() ? "true" : "false");
2007 dict->SetString("change_id", base::Int64ToString(details.change_id())); 2010 dict->SetString("change_id", base::Int64ToString(details.change_id()));
2008 } 2011 }
2009 trackers->Append(dict); 2012 trackers->Append(dict);
2010 } 2013 }
2011 return trackers.Pass(); 2014 return trackers.Pass();
(...skipping 12 matching lines...) Expand all
2024 }; 2027 };
2025 std::vector<std::string> key_strings( 2028 std::vector<std::string> key_strings(
2026 fileKeys, fileKeys + ARRAYSIZE_UNSAFE(fileKeys)); 2029 fileKeys, fileKeys + ARRAYSIZE_UNSAFE(fileKeys));
2027 base::ListValue* keys = new base::ListValue; 2030 base::ListValue* keys = new base::ListValue;
2028 keys->AppendStrings(key_strings); 2031 keys->AppendStrings(key_strings);
2029 metadata->SetString("title", "Metadata"); 2032 metadata->SetString("title", "Metadata");
2030 metadata->Set("keys", keys); 2033 metadata->Set("keys", keys);
2031 files->Append(metadata); 2034 files->Append(metadata);
2032 2035
2033 // Append metadata data. 2036 // Append metadata data.
2034 for (MetadataDatabaseIndex::MetadataByID::const_iterator itr = 2037 std::vector<std::string> metadata_ids(index_->GetAllMetadataIDs());
2035 index_->metadata_by_id_.begin(); 2038 for (std::vector<std::string>::const_iterator itr = metadata_ids.begin();
2036 itr != index_->metadata_by_id_.end(); ++itr) { 2039 itr != metadata_ids.end(); ++itr) {
2037 const FileMetadata& file = *itr->second; 2040 const std::string& file_id = *itr;
2041 const FileMetadata *file = index_->GetFileMetadata(file_id);
2042 if (!file) {
2043 NOTREACHED();
2044 continue;
2045 }
2038 2046
2039 base::DictionaryValue* dict = new base::DictionaryValue; 2047 base::DictionaryValue* dict = new base::DictionaryValue;
2040 dict->SetString("file_id", file.file_id()); 2048 dict->SetString("file_id", file_id);
2041 if (file.has_details()) { 2049 if (file->has_details()) {
2042 const FileDetails& details = file.details(); 2050 const FileDetails& details = file->details();
2043 dict->SetString("title", details.title()); 2051 dict->SetString("title", details.title());
2044 dict->SetString("type", FileKindToString(details.file_kind())); 2052 dict->SetString("type", FileKindToString(details.file_kind()));
2045 dict->SetString("md5", details.md5()); 2053 dict->SetString("md5", details.md5());
2046 dict->SetString("etag", details.etag()); 2054 dict->SetString("etag", details.etag());
2047 dict->SetString("missing", details.missing() ? "true" : "false"); 2055 dict->SetString("missing", details.missing() ? "true" : "false");
2048 dict->SetString("change_id", base::Int64ToString(details.change_id())); 2056 dict->SetString("change_id", base::Int64ToString(details.change_id()));
2049 2057
2050 std::vector<std::string> parents; 2058 std::vector<std::string> parents;
2051 for (int i = 0; i < details.parent_folder_ids_size(); ++i) 2059 for (int i = 0; i < details.parent_folder_ids_size(); ++i)
2052 parents.push_back(details.parent_folder_ids(i)); 2060 parents.push_back(details.parent_folder_ids(i));
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2095 index_->StoreFileMetadata(app_root_metadata.Pass()); 2103 index_->StoreFileMetadata(app_root_metadata.Pass());
2096 index_->StoreFileTracker(app_root_tracker.Pass()); 2104 index_->StoreFileTracker(app_root_tracker.Pass());
2097 } 2105 }
2098 2106
2099 void MetadataDatabase::DetachFromSequence() { 2107 void MetadataDatabase::DetachFromSequence() {
2100 worker_sequence_checker_.DetachFromSequence(); 2108 worker_sequence_checker_.DetachFromSequence();
2101 } 2109 }
2102 2110
2103 } // namespace drive_backend 2111 } // namespace drive_backend
2104 } // namespace sync_file_system 2112 } // namespace sync_file_system
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/sync_file_system/drive_backend/metadata_database_index.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698