| 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..403f1538b9f5b0711cd63b1743beea45903ae8b5 100644
|
| --- a/sync/syncable/model_neutral_mutable_entry.cc
|
| +++ b/sync/syncable/model_neutral_mutable_entry.cc
|
| @@ -44,6 +44,41 @@ ModelNeutralMutableEntry::ModelNeutralMutableEntry(BaseWriteTransaction* trans,
|
| kernel_ = kernel.release();
|
| }
|
|
|
| +ModelNeutralMutableEntry::ModelNeutralMutableEntry(BaseWriteTransaction* trans,
|
| + CreateNewTypeRoot,
|
| + ModelType type)
|
| + : Entry(trans), base_write_transaction_(trans) {
|
| + 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) {
|
|
|