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

Unified Diff: chrome/browser/chromeos/drive/resource_metadata_storage.cc

Issue 55713002: drive: Use base_name recovered from trashed DB when DB corruption happens (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use title Created 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/drive/resource_metadata_storage.cc
diff --git a/chrome/browser/chromeos/drive/resource_metadata_storage.cc b/chrome/browser/chromeos/drive/resource_metadata_storage.cc
index d07dbffb2fe1d760830f17f2856b643701be7b49..f3b61a620250c578fddbb708cd6915aa89568a8a 100644
--- a/chrome/browser/chromeos/drive/resource_metadata_storage.cc
+++ b/chrome/browser/chromeos/drive/resource_metadata_storage.cc
@@ -477,8 +477,8 @@ bool ResourceMetadataStorage::Initialize() {
return resource_map_;
}
-void ResourceMetadataStorage::RecoverCacheEntriesFromTrashedResourceMap(
- std::map<std::string, FileCacheEntry>* out_entries) {
+void ResourceMetadataStorage::RecoverCacheInfoFromTrashedResourceMap(
+ RecoveredCacheInfoMap* out_info) {
const base::FilePath trashed_resource_map_path =
directory_path_.Append(kTrashedResourceMapDBName);
@@ -526,8 +526,20 @@ void ResourceMetadataStorage::RecoverCacheEntriesFromTrashedResourceMap(
if (IsCacheEntryKey(it->key())) {
const std::string& id = GetIdFromCacheEntryKey(it->key());
FileCacheEntry cache_entry;
- if (cache_entry.ParseFromArray(it->value().data(), it->value().size()))
- (*out_entries)[id] = cache_entry;
+ if (cache_entry.ParseFromArray(it->value().data(), it->value().size())) {
+ RecoveredCacheInfo* info = &(*out_info)[id];
+ info->is_dirty = cache_entry.is_dirty();
+ info->md5 = cache_entry.md5();
+
+ // Get title from ResourceEntry if available.
+ std::string serialized_entry;
+ ResourceEntry entry;
+ if (resource_map->Get(leveldb::ReadOptions(),
+ leveldb::Slice(id),
+ &serialized_entry).ok() &&
+ entry.ParseFromString(serialized_entry))
+ info->title = entry.title();
+ }
}
}
}
@@ -734,6 +746,11 @@ ResourceMetadataStorage::GetCacheEntryIterator() {
return make_scoped_ptr(new CacheEntryIterator(it.Pass()));
}
+ResourceMetadataStorage::RecoveredCacheInfo::RecoveredCacheInfo()
+ : is_dirty(false) {}
+
+ResourceMetadataStorage::RecoveredCacheInfo::~RecoveredCacheInfo() {}
+
bool ResourceMetadataStorage::GetIdByResourceId(
const std::string& resource_id,
std::string* out_id) {

Powered by Google App Engine
This is Rietveld 408576698