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

Unified Diff: chrome/browser/sync/syncable/syncable.cc

Issue 7926001: [Sync] Move change-related methods out of SyncManager::Observer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unit tests Created 9 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: chrome/browser/sync/syncable/syncable.cc
diff --git a/chrome/browser/sync/syncable/syncable.cc b/chrome/browser/sync/syncable/syncable.cc
index a279e518aaaa8ec07ca891ec5b9a43b67930a666..e9329452264233ee50bd8bcdfce16c18fa8920c9 100644
--- a/chrome/browser/sync/syncable/syncable.cc
+++ b/chrome/browser/sync/syncable/syncable.cc
@@ -69,7 +69,6 @@ static const int kInvariantCheckMaxMs = 50;
using std::string;
-
namespace syncable {
#define ENUM_CASE(x) case x: return #x; break
@@ -90,7 +89,40 @@ std::string WriterTagToString(WriterTag writer_tag) {
#undef ENUM_CASE
-namespace {
+WriteTransactionInfo::WriteTransactionInfo(
+ int64 id,
+ tracked_objects::Location location,
+ WriterTag writer,
+ ImmutableEntryKernelMutationMap mutations)
+ : id(id),
+ location_string(location.ToString()),
+ writer(writer),
+ mutations(mutations) {}
+
+WriteTransactionInfo::WriteTransactionInfo()
+ : id(-1), writer(INVALID) {}
+
+WriteTransactionInfo::~WriteTransactionInfo() {}
+
+base::DictionaryValue* WriteTransactionInfo::ToValue(
+ size_t max_mutations_size) const {
+ DictionaryValue* dict = new DictionaryValue();
+ dict->SetString("id", base::Int64ToString(id));
+ dict->SetString("location", location_string);
+ dict->SetString("writer", WriterTagToString(writer));
+ Value* mutations_value = NULL;
+ const size_t mutations_size = mutations.Get().size();
+ if (mutations_size <= max_mutations_size) {
+ mutations_value = EntryKernelMutationMapToValue(mutations.Get());
+ } else {
+ mutations_value =
+ Value::CreateStringValue(
+ base::Uint64ToString(static_cast<uint64>(mutations_size)) +
+ " mutations");
+ }
+ dict->Set("mutations", mutations_value);
+ return dict;
+}
DictionaryValue* EntryKernelMutationToValue(
const EntryKernelMutation& mutation) {
@@ -100,8 +132,6 @@ DictionaryValue* EntryKernelMutationToValue(
return dict;
}
-} // namespace
-
ListValue* EntryKernelMutationMapToValue(
const EntryKernelMutationMap& mutations) {
ListValue* list = new ListValue();
@@ -375,6 +405,7 @@ Directory::Kernel::Kernel(const FilePath& db_path,
DirectoryChangeDelegate* delegate)
: db_path(db_path),
refcount(1),
+ next_write_transaction_id(0),
name(name),
metahandles_index(new Directory::MetahandlesIndex),
ids_index(new Directory::IdsIndex),
@@ -1252,21 +1283,28 @@ ModelTypeBitSet WriteTransaction::NotifyTransactionChangingAndEnding(
dirkernel_->transaction_mutex.AssertAcquired();
DCHECK(!mutations.Get().empty());
+ WriteTransactionInfo write_transaction_info(
+ dirkernel_->next_write_transaction_id, from_here_, writer_, mutations);
+ ++dirkernel_->next_write_transaction_id;
+
+ ImmutableWriteTransactionInfo immutable_write_transaction_info(
+ &write_transaction_info);
DirectoryChangeDelegate* const delegate = dirkernel_->delegate;
if (writer_ == syncable::SYNCAPI) {
delegate->HandleCalculateChangesChangeEventFromSyncApi(
- mutations.Get(), this);
+ immutable_write_transaction_info, this);
} else {
delegate->HandleCalculateChangesChangeEventFromSyncer(
- mutations.Get(), this);
+ immutable_write_transaction_info, this);
}
ModelTypeBitSet models_with_changes =
- delegate->HandleTransactionEndingChangeEvent(this);
+ delegate->HandleTransactionEndingChangeEvent(
+ immutable_write_transaction_info, this);
dirkernel_->observers->Notify(
- &TransactionObserver::OnTransactionMutate,
- from_here_, writer_, mutations, models_with_changes);
+ &TransactionObserver::OnTransactionWrite,
+ immutable_write_transaction_info, models_with_changes);
return models_with_changes;
}

Powered by Google App Engine
This is Rietveld 408576698