Index: chrome/browser/sync_file_system/drive_backend/metadata_database.cc |
diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database.cc |
index eb276fce76dfb15c8c9ce8bccbfbbf5ae35e6b57..f0c2a635d7a42fa8b9d7431e64d5a49b7e10678c 100644 |
--- a/chrome/browser/sync_file_system/drive_backend/metadata_database.cc |
+++ b/chrome/browser/sync_file_system/drive_backend/metadata_database.cc |
@@ -1497,5 +1497,62 @@ void MetadataDatabase::WriteToDatabase(scoped_ptr<leveldb::WriteBatch> batch, |
base::Bind(&AdaptLevelDBStatusToSyncStatusCode, callback)); |
} |
+scoped_ptr<base::ListValue> MetadataDatabase::DumpFiles( |
+ const std::string& app_id) { |
+ scoped_ptr<base::ListValue> files(new base::ListValue); |
+ |
+ FileTracker app_root_tracker; |
+ if (!FindAppRootTracker(app_id, &app_root_tracker)) |
+ return files.Pass(); |
+ |
+ std::vector<int64> stack; |
+ PushChildTrackersToContainer( |
+ trackers_by_parent_and_title_, |
+ app_root_tracker.tracker_id(), |
+ std::back_inserter(stack)); |
+ while (!stack.empty()) { |
+ int64 tracker_id = stack.back(); |
+ stack.pop_back(); |
+ PushChildTrackersToContainer( |
+ trackers_by_parent_and_title_, tracker_id, std::back_inserter(stack)); |
+ |
+ FileTracker* tracker = tracker_by_id_[tracker_id]; |
+ base::DictionaryValue* file = new DictionaryValue; |
+ |
+ base::FilePath path; |
+ if (tracker->active()) { |
+ BuildPathForTracker(tracker->tracker_id(), &path); |
+ } else { |
+ BuildPathForTracker(tracker->parent_tracker_id(), &path); |
+ if (tracker->has_synced_details()) { |
+ path = path.Append( |
+ base::FilePath::FromUTF8Unsafe(tracker->synced_details().title())); |
+ } else { |
+ path = path.Append(FILE_PATH_LITERAL("unknown")); |
+ } |
+ } |
+ file->SetString("path", path.AsUTF8Unsafe()); |
+ if (tracker->has_synced_details()) { |
+ file->SetString("title", tracker->synced_details().title()); |
+ file->SetString("type", |
+ FileKindToString(tracker->synced_details().file_kind())); |
+ } |
+ |
+ base::DictionaryValue* details = new DictionaryValue; |
+ details->SetString("file_id", tracker->file_id()); |
+ if (tracker->has_synced_details() && |
+ tracker->synced_details().file_kind() == FILE_KIND_FILE) |
+ details->SetString("md5",tracker->synced_details().md5()); |
+ details->SetString("active", tracker->active() ? "true" : "false"); |
+ details->SetString("dirty", tracker->dirty() ? "true" : "false"); |
+ |
+ file->Set("details", details); |
+ |
+ files->Append(file); |
+ } |
+ |
+ return files.Pass(); |
+} |
+ |
} // namespace drive_backend |
} // namespace sync_file_system |