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

Unified Diff: chrome/browser/sync_file_system/drive_metadata_store.cc

Issue 15954013: [SyncFileSystem][Clean up] Delete all write operation of DriveMetadataDB. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync_file_system/drive_metadata_store.cc
diff --git a/chrome/browser/sync_file_system/drive_metadata_store.cc b/chrome/browser/sync_file_system/drive_metadata_store.cc
index 6aeca833b527656707772e53b2bfd74bd982b93d..680c930002af8b25a6e2fbc185e16cf701d7f57f 100644
--- a/chrome/browser/sync_file_system/drive_metadata_store.cc
+++ b/chrome/browser/sync_file_system/drive_metadata_store.cc
@@ -52,6 +52,11 @@ const char kDriveIncrementalSyncOriginKeyPrefix[] = "ISYNC_ORIGIN: ";
const char kDriveDisabledOriginKeyPrefix[] = "DISABLED_ORIGIN: ";
const size_t kDriveMetadataKeyPrefixLength = arraysize(kDriveMetadataKeyPrefix);
+enum OriginSyncType {
+ INCREMENTAL_SYNC_ORIGIN,
+ DISABLED_ORIGIN
+};
+
std::string RemovePrefix(const std::string& str, const std::string& prefix) {
if (StartsWithASCII(str, prefix, true))
return str.substr(prefix.size());
@@ -91,11 +96,6 @@ bool UpdateResourceIdMap(ResourceIdByOrigin* map,
class DriveMetadataDB {
public:
- enum OriginSyncType {
- INCREMENTAL_SYNC_ORIGIN,
- DISABLED_ORIGIN
- };
-
typedef DriveMetadataStore::MetadataMap MetadataMap;
DriveMetadataDB(const base::FilePath& base_dir,
@@ -107,23 +107,8 @@ class DriveMetadataDB {
SyncStatusCode MigrateDatabaseIfNeeded();
- SyncStatusCode SetLargestChangestamp(int64 largest_changestamp);
- SyncStatusCode SetSyncRootDirectory(const std::string& resource_id);
SyncStatusCode GetSyncRootDirectory(std::string* resource_id);
- SyncStatusCode SetOriginRootDirectory(const GURL& origin,
- OriginSyncType sync_type,
- const std::string& resource_id);
- SyncStatusCode UpdateEntry(const FileSystemURL& url,
- DriveMetadata metadata);
-
- // TODO(calvinlo): consolidate these state transition functions for sync
- // origins like "UpdateOrigin(GURL, SyncStatusEnum)". And manage origins in
- // just one map like "Map<SyncStatusEnum, ResourceIDMap>".
- // http://crbug.com/211600
- SyncStatusCode UpdateOriginAsIncrementalSync(const GURL& origin,
- const std::string& resource_id);
- SyncStatusCode EnableOrigin(const GURL& origin,
- const std::string& resource_id);
+
SyncStatusCode DisableOrigin(const GURL& origin,
const std::string& resource_id);
SyncStatusCode RemoveOrigin(const GURL& origin);
@@ -193,12 +178,12 @@ SyncStatusCode InitializeDBOnFileThread(DriveMetadataDB* db,
// For example, when |origin| is "http://www.example.com" and |sync_type| is
// BATCH_SYNC_ORIGIN, returns "BSYNC_ORIGIN: http://www.example.com".
std::string CreateKeyForOriginRoot(const GURL& origin,
- DriveMetadataDB::OriginSyncType sync_type) {
+ OriginSyncType sync_type) {
DCHECK(origin.is_valid());
switch (sync_type) {
- case DriveMetadataDB::INCREMENTAL_SYNC_ORIGIN:
+ case INCREMENTAL_SYNC_ORIGIN:
return kDriveIncrementalSyncOriginKeyPrefix + origin.spec();
- case DriveMetadataDB::DISABLED_ORIGIN:
+ case DISABLED_ORIGIN:
return kDriveDisabledOriginKeyPrefix + origin.spec();
}
NOTREACHED();
@@ -376,15 +361,10 @@ void DriveMetadataStore::SetLargestChangeStamp(
DCHECK(CalledOnValidThread());
DCHECK_EQ(SYNC_STATUS_OK, db_status_);
largest_changestamp_ = largest_changestamp;
- base::PostTaskAndReplyWithResult(
- file_task_runner_.get(),
- FROM_HERE,
- base::Bind(&DriveMetadataDB::SetLargestChangestamp,
- base::Unretained(db_.get()),
- largest_changestamp),
- base::Bind(&DriveMetadataStore::UpdateDBStatusAndInvokeCallback,
- AsWeakPtr(),
- callback));
+
+ scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch);
+ batch->Put(kChangeStampKey, base::Int64ToString(largest_changestamp));
+ return WriteToDB(batch.Pass(), callback);
}
int64 DriveMetadataStore::GetLargestChangeStamp() const {
@@ -406,16 +386,21 @@ void DriveMetadataStore::UpdateEntry(
if (!result.second)
result.first->second = metadata;
- base::PostTaskAndReplyWithResult(
- file_task_runner_.get(),
- FROM_HERE,
- base::Bind(&DriveMetadataDB::UpdateEntry,
- base::Unretained(db_.get()),
- url,
- metadata),
- base::Bind(&DriveMetadataStore::UpdateDBStatusAndInvokeCallback,
- AsWeakPtr(),
- callback));
+ std::string value;
+ if (!IsDriveAPIEnabled()) {
+ DriveMetadata metadata_in_db(metadata);
+ metadata_in_db.set_resource_id(
+ drive::RemoveWapiIdPrefix(metadata.resource_id()));
+ bool success = metadata_in_db.SerializeToString(&value);
+ DCHECK(success);
+ } else {
+ bool success = metadata.SerializeToString(&value);
+ DCHECK(success);
+ }
+
+ scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch);
+ batch->Put(FileSystemURLToMetadataKey(url), value);
+ WriteToDB(batch.Pass(), callback);
}
void DriveMetadataStore::DeleteEntry(
@@ -470,15 +455,12 @@ void DriveMetadataStore::AddIncrementalSyncOrigin(
incremental_sync_origins_.insert(std::make_pair(origin, resource_id));
origin_by_resource_id_.insert(std::make_pair(resource_id, origin));
- // Store a pair of |origin| and |resource_id| in the DB.
- base::PostTaskAndReplyWithResult(
- file_task_runner_.get(),
- FROM_HERE,
- base::Bind(&DriveMetadataDB::UpdateOriginAsIncrementalSync,
- base::Unretained(db_.get()),
- origin,
- resource_id),
- base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr()));
+ scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch);
+ batch->Delete(CreateKeyForOriginRoot(origin, DISABLED_ORIGIN));
+ batch->Put(CreateKeyForOriginRoot(origin, INCREMENTAL_SYNC_ORIGIN),
+ drive::RemoveWapiIdPrefix(resource_id));
+ WriteToDB(batch.Pass(),
+ base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr()));
}
void DriveMetadataStore::SetSyncRootDirectory(const std::string& resource_id) {
@@ -486,14 +468,11 @@ void DriveMetadataStore::SetSyncRootDirectory(const std::string& resource_id) {
sync_root_directory_resource_id_ = resource_id;
- // Set the resource ID for the sync root directory in the DB.
- base::PostTaskAndReplyWithResult(
- file_task_runner_.get(),
- FROM_HERE,
- base::Bind(&DriveMetadataDB::SetSyncRootDirectory,
- base::Unretained(db_.get()),
- resource_id),
- base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr()));
+ scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch);
+ batch->Put(kSyncRootDirectoryKey, drive::RemoveWapiIdPrefix(resource_id));
+ return WriteToDB(batch.Pass(),
+ base::Bind(&DriveMetadataStore::UpdateDBStatus,
+ AsWeakPtr()));
}
void DriveMetadataStore::SetOriginRootDirectory(
@@ -502,26 +481,25 @@ void DriveMetadataStore::SetOriginRootDirectory(
DCHECK(CalledOnValidThread());
DCHECK(IsKnownOrigin(origin));
- DriveMetadataDB::OriginSyncType sync_type;
+ OriginSyncType sync_type;
if (UpdateResourceIdMap(
&incremental_sync_origins_, &origin_by_resource_id_,
origin, resource_id)) {
- sync_type = DriveMetadataDB::INCREMENTAL_SYNC_ORIGIN;
+ sync_type = INCREMENTAL_SYNC_ORIGIN;
} else if (UpdateResourceIdMap(&disabled_origins_, &origin_by_resource_id_,
origin, resource_id)) {
- sync_type = DriveMetadataDB::DISABLED_ORIGIN;
+ sync_type = DISABLED_ORIGIN;
} else {
return;
}
- base::PostTaskAndReplyWithResult(
- file_task_runner_.get(),
- FROM_HERE,
- base::Bind(&DriveMetadataDB::SetOriginRootDirectory,
- base::Unretained(db_.get()),
- origin,
- sync_type,
- resource_id),
- base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr()));
+
+ std::string key = CreateKeyForOriginRoot(origin, sync_type);
+ DCHECK(!key.empty());
+
+ scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch);
+ batch->Put(key, drive::RemoveWapiIdPrefix(resource_id));
+ WriteToDB(batch.Pass(),
+ base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr()));
}
bool DriveMetadataStore::IsKnownOrigin(const GURL& origin) const {
@@ -558,15 +536,10 @@ void DriveMetadataStore::EnableOrigin(
if (found != incremental_sync_origins_.end())
incremental_sync_origins_.erase(found);
- // Store a pair of |origin| and |resource_id| in the DB.
- base::PostTaskAndReplyWithResult(
- file_task_runner_.get(),
- FROM_HERE,
- base::Bind(&DriveMetadataDB::EnableOrigin,
- base::Unretained(db_.get()),
- origin,
- resource_id),
- base::Bind(&DriveMetadataStore::DidUpdateOrigin, AsWeakPtr(), callback));
+ scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch);
+ batch->Delete(CreateKeyForOriginRoot(origin, INCREMENTAL_SYNC_ORIGIN));
+ batch->Delete(CreateKeyForOriginRoot(origin, DISABLED_ORIGIN));
+ WriteToDB(batch.Pass(), callback);
}
void DriveMetadataStore::DisableOrigin(
@@ -872,42 +845,6 @@ SyncStatusCode DriveMetadataDB::MigrateDatabaseIfNeeded() {
return SYNC_DATABASE_ERROR_FAILED;
}
-SyncStatusCode DriveMetadataDB::SetLargestChangestamp(
- int64 largest_changestamp) {
- DCHECK(CalledOnValidThread());
- DCHECK(db_.get());
-
- leveldb::WriteBatch batch;
- batch.Put(kChangeStampKey, base::Int64ToString(largest_changestamp));
- return WriteToDB(&batch);
-}
-
-SyncStatusCode DriveMetadataDB::SetSyncRootDirectory(
- const std::string& resource_id) {
- DCHECK(CalledOnValidThread());
- DCHECK(db_.get());
-
- leveldb::WriteBatch batch;
- batch.Put(kSyncRootDirectoryKey, drive::RemoveWapiIdPrefix(resource_id));
- return WriteToDB(&batch);
-}
-
-SyncStatusCode DriveMetadataDB::SetOriginRootDirectory(
- const GURL& origin,
- OriginSyncType sync_type,
- const std::string& resource_id) {
- DCHECK(CalledOnValidThread());
- DCHECK(db_.get());
-
- std::string key = CreateKeyForOriginRoot(origin, sync_type);
- if (key.empty())
- return SYNC_DATABASE_ERROR_FAILED;
-
- leveldb::WriteBatch batch;
- batch.Put(key, drive::RemoveWapiIdPrefix(resource_id));
- return WriteToDB(&batch);
-}
-
SyncStatusCode DriveMetadataDB::GetSyncRootDirectory(std::string* resource_id) {
DCHECK(CalledOnValidThread());
DCHECK(db_.get());
@@ -921,52 +858,6 @@ SyncStatusCode DriveMetadataDB::GetSyncRootDirectory(std::string* resource_id) {
return LevelDBStatusToSyncStatusCode(status);
}
-SyncStatusCode DriveMetadataDB::UpdateEntry(const FileSystemURL& url,
- DriveMetadata metadata) {
- DCHECK(CalledOnValidThread());
- DCHECK(db_.get());
-
- if (!IsDriveAPIEnabled()) {
- metadata.set_resource_id(
- drive::RemoveWapiIdPrefix(metadata.resource_id()));
- }
-
- std::string metadata_key = FileSystemURLToMetadataKey(url);
- std::string value;
- bool success = metadata.SerializeToString(&value);
- DCHECK(success);
-
- leveldb::WriteBatch batch;
- batch.Put(metadata_key, value);
- return WriteToDB(&batch);
-}
-
-SyncStatusCode DriveMetadataDB::UpdateOriginAsIncrementalSync(
- const GURL& origin, const std::string& resource_id) {
- DCHECK(CalledOnValidThread());
- DCHECK(db_.get());
-
- leveldb::WriteBatch batch;
- batch.Delete(CreateKeyForOriginRoot(origin, DISABLED_ORIGIN));
- batch.Put(CreateKeyForOriginRoot(origin, INCREMENTAL_SYNC_ORIGIN),
- drive::RemoveWapiIdPrefix(resource_id));
- return WriteToDB(&batch);
-}
-
-SyncStatusCode DriveMetadataDB::EnableOrigin(
- const GURL& origin, const std::string& resource_id) {
- DCHECK(CalledOnValidThread());
- DCHECK(db_.get());
-
- // No DB entry as enabled origins go back to
- // DriveFileSyncService::pending_batch_sync_origins only.
- leveldb::WriteBatch batch;
- batch.Delete(CreateKeyForOriginRoot(origin, INCREMENTAL_SYNC_ORIGIN));
- batch.Delete(CreateKeyForOriginRoot(origin, DISABLED_ORIGIN));
-
- return WriteToDB(&batch);
-}
-
SyncStatusCode DriveMetadataDB::DisableOrigin(
const GURL& origin_to_disable, const std::string& resource_id) {
DCHECK(CalledOnValidThread());
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698