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

Unified Diff: sync/syncable/model_neutral_mutable_entry.cc

Issue 867793003: Remove dependency on server generated type root folders (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added extra comment about existing type root folder. Created 5 years, 11 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 | « sync/syncable/model_neutral_mutable_entry.h ('k') | sync/syncable/model_type.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/syncable/model_neutral_mutable_entry.cc
diff --git a/sync/syncable/model_neutral_mutable_entry.cc b/sync/syncable/model_neutral_mutable_entry.cc
index c7f1e3d6da598dfddf05351dc8d6837c7c01c9a7..77c442acfde7ff7119cfc5366c3057c9a57efb73 100644
--- a/sync/syncable/model_neutral_mutable_entry.cc
+++ b/sync/syncable/model_neutral_mutable_entry.cc
@@ -44,6 +44,42 @@ ModelNeutralMutableEntry::ModelNeutralMutableEntry(BaseWriteTransaction* trans,
kernel_ = kernel.release();
}
+ModelNeutralMutableEntry::ModelNeutralMutableEntry(BaseWriteTransaction* trans,
+ CreateNewTypeRoot,
+ ModelType type)
+ : Entry(trans), base_write_transaction_(trans) {
+ DCHECK(!IsTypeWithServerGeneratedRoot(type));
+ Entry same_type_root(trans, GET_TYPE_ROOT, type);
+ kernel_ = NULL;
+ if (same_type_root.good()) {
+ return; // already have a type root for the given type
+ }
+
+ scoped_ptr<EntryKernel> kernel(new EntryKernel());
+
+ sync_pb::EntitySpecifics specifics;
+ AddDefaultFieldValue(type, &specifics);
+ kernel->put(SPECIFICS, specifics);
+
+ kernel->put(ID,
+ syncable::Id::CreateFromClientString(ModelTypeToString(type)));
+ kernel->put(META_HANDLE, trans->directory()->NextMetahandle());
+ kernel->put(PARENT_ID, syncable::Id::GetRoot());
+ kernel->put(BASE_VERSION, CHANGES_VERSION);
+ kernel->put(NON_UNIQUE_NAME, ModelTypeToString(type));
+ kernel->put(IS_DIR, true);
+
+ kernel->mark_dirty(&trans->directory()->kernel_->dirty_metahandles);
+
+ if (!trans->directory()->InsertEntry(trans, kernel.get())) {
+ return; // Failed inserting.
+ }
+
+ trans->TrackChangesTo(kernel.get());
+
+ kernel_ = kernel.release();
+}
+
ModelNeutralMutableEntry::ModelNeutralMutableEntry(
BaseWriteTransaction* trans, GetById, const Id& id)
: Entry(trans, GET_BY_ID, id), base_write_transaction_(trans) {
« no previous file with comments | « sync/syncable/model_neutral_mutable_entry.h ('k') | sync/syncable/model_type.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698