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

Unified Diff: sync/engine/build_commit_command.cc

Issue 25638003: sync: Implement per-type commit interface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compile warning Created 7 years, 3 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
Index: sync/engine/build_commit_command.cc
diff --git a/sync/engine/build_commit_command.cc b/sync/engine/build_commit_command.cc
index 65f1cdfb9cf7616692547406ae3f13a5a07579a6..78249fdf74dfa54e60bf5da67407c5db5c09b26f 100644
--- a/sync/engine/build_commit_command.cc
+++ b/sync/engine/build_commit_command.cc
@@ -14,7 +14,6 @@
#include "sync/internal_api/public/base/unique_position.h"
#include "sync/protocol/bookmark_specifics.pb.h"
#include "sync/protocol/sync.pb.h"
-#include "sync/sessions/ordered_commit_set.h"
#include "sync/sessions/sync_session.h"
#include "sync/syncable/directory.h"
#include "sync/syncable/entry.h"
@@ -38,63 +37,44 @@ using syncable::Id;
using syncable::SPECIFICS;
using syncable::UNIQUE_POSITION;
-BuildCommitCommand::BuildCommitCommand(
- syncable::BaseTransaction* trans,
- const sessions::OrderedCommitSet& batch_commit_set,
- sync_pb::ClientToServerMessage* commit_message,
- ExtensionsActivity::Records* extensions_activity_buffer)
- : trans_(trans),
- batch_commit_set_(batch_commit_set),
- commit_message_(commit_message),
- extensions_activity_buffer_(extensions_activity_buffer) {
-}
-
-BuildCommitCommand::~BuildCommitCommand() {}
-
void BuildCommitCommand::AddExtensionsActivityToMessage(
- SyncSession* session, sync_pb::CommitMessage* message) {
- // We only send ExtensionsActivity to the server if bookmarks are being
- // committed.
- ExtensionsActivity* activity = session->context()->extensions_activity();
- if (batch_commit_set_.HasBookmarkCommitId()) {
- // This isn't perfect, since the set of extensions activity may not
- // correlate exactly with the items being committed. That's OK as
- // long as we're looking for a rough estimate of extensions activity,
- // not an precise mapping of which commits were triggered by which
- // extension.
- //
- // We will push this list of extensions activity back into the
- // ExtensionsActivityMonitor if this commit fails. That's why we must keep
- // a copy of these records in the session.
- activity->GetAndClearRecords(extensions_activity_buffer_);
-
- const ExtensionsActivity::Records& records =
- *extensions_activity_buffer_;
- for (ExtensionsActivity::Records::const_iterator it =
- records.begin();
- it != records.end(); ++it) {
- sync_pb::ChromiumExtensionsActivity* activity_message =
- message->add_extensions_activity();
- activity_message->set_extension_id(it->second.extension_id);
- activity_message->set_bookmark_writes_since_last_commit(
- it->second.bookmark_write_count);
- }
+ ExtensionsActivity* activity,
+ ExtensionsActivity::Records* extensions_activity_buffer,
+ sync_pb::CommitMessage* message) {
+ // This isn't perfect, since the set of extensions activity may not correlate
+ // exactly with the items being committed. That's OK as long as we're looking
+ // for a rough estimate of extensions activity, not an precise mapping of
+ // which commits were triggered by which extension.
+ //
+ // We will push this list of extensions activity back into the
+ // ExtensionsActivityMonitor if this commit fails. That's why we must keep a
+ // copy of these records in the session.
+ activity->GetAndClearRecords(extensions_activity_buffer);
+
+ const ExtensionsActivity::Records& records = *extensions_activity_buffer;
+ for (ExtensionsActivity::Records::const_iterator it =
+ records.begin();
+ it != records.end(); ++it) {
+ sync_pb::ChromiumExtensionsActivity* activity_message =
+ message->add_extensions_activity();
+ activity_message->set_extension_id(it->second.extension_id);
+ activity_message->set_bookmark_writes_since_last_commit(
+ it->second.bookmark_write_count);
}
}
void BuildCommitCommand::AddClientConfigParamsToMessage(
- SyncSession* session, sync_pb::CommitMessage* message) {
- const ModelSafeRoutingInfo& routing_info = session->context()->routing_info();
+ ModelTypeSet enabled_types,
+ sync_pb::CommitMessage* message) {
sync_pb::ClientConfigParams* config_params = message->mutable_config_params();
- for (std::map<ModelType, ModelSafeGroup>::const_iterator iter =
- routing_info.begin(); iter != routing_info.end(); ++iter) {
- if (ProxyTypes().Has(iter->first))
+ for (ModelTypeSet::Iterator it = enabled_types.First(); it.Good(); it.Inc()) {
+ if (ProxyTypes().Has(it.Get()))
continue;
- int field_number = GetSpecificsFieldNumberFromModelType(iter->first);
+ int field_number = GetSpecificsFieldNumberFromModelType(it.Get());
config_params->mutable_enabled_type_ids()->Add(field_number);
}
config_params->set_tabs_datatype_enabled(
- routing_info.count(syncer::PROXY_TABS) > 0);
+ enabled_types.Has(syncer::PROXY_TABS));
}
namespace {
@@ -109,34 +89,6 @@ void SetEntrySpecifics(const Entry& meta_entry,
}
} // namespace
-SyncerError BuildCommitCommand::ExecuteImpl(SyncSession* session) {
- commit_message_->set_share(session->context()->account_name());
- commit_message_->set_message_contents(sync_pb::ClientToServerMessage::COMMIT);
-
- sync_pb::CommitMessage* commit_message = commit_message_->mutable_commit();
- commit_message->set_cache_guid(trans_->directory()->cache_guid());
- AddExtensionsActivityToMessage(session, commit_message);
- AddClientConfigParamsToMessage(session, commit_message);
-
- for (size_t i = 0; i < batch_commit_set_.Size(); i++) {
- int64 handle = batch_commit_set_.GetCommitHandleAt(i);
- sync_pb::SyncEntity* sync_entry = commit_message->add_entries();
-
- Entry meta_entry(trans_, syncable::GET_BY_HANDLE, handle);
- CHECK(meta_entry.good());
-
- DCHECK_NE(0UL,
- session->context()->routing_info().count(
- meta_entry.GetModelType()))
- << "Committing change to datatype that's not actively enabled.";
-
- BuildCommitItem(meta_entry, sync_entry);
- }
-
-
- return SYNCER_OK;
-}
-
// static.
void BuildCommitCommand::BuildCommitItem(
const syncable::Entry& meta_entry,

Powered by Google App Engine
This is Rietveld 408576698