| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/sync/syncable/model_neutral_mutable_entry.h" | 5 #include "components/sync/syncable/model_neutral_mutable_entry.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> |
| 8 | 9 |
| 9 #include "components/sync/base/hash_util.h" | 10 #include "components/sync/base/hash_util.h" |
| 10 #include "components/sync/base/unique_position.h" | 11 #include "components/sync/base/unique_position.h" |
| 11 #include "components/sync/syncable/directory.h" | 12 #include "components/sync/syncable/directory.h" |
| 12 #include "components/sync/syncable/scoped_kernel_lock.h" | 13 #include "components/sync/syncable/scoped_kernel_lock.h" |
| 13 #include "components/sync/syncable/syncable_changes_version.h" | 14 #include "components/sync/syncable/syncable_changes_version.h" |
| 14 #include "components/sync/syncable/syncable_util.h" | 15 #include "components/sync/syncable/syncable_util.h" |
| 15 #include "components/sync/syncable/syncable_write_transaction.h" | 16 #include "components/sync/syncable/syncable_write_transaction.h" |
| 16 | 17 |
| 17 using std::string; | 18 using std::string; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 30 return; // already have an item with this ID. | 31 return; // already have an item with this ID. |
| 31 } | 32 } |
| 32 std::unique_ptr<EntryKernel> kernel(new EntryKernel()); | 33 std::unique_ptr<EntryKernel> kernel(new EntryKernel()); |
| 33 | 34 |
| 34 kernel->put(ID, id); | 35 kernel->put(ID, id); |
| 35 kernel->put(META_HANDLE, trans->directory()->NextMetahandle()); | 36 kernel->put(META_HANDLE, trans->directory()->NextMetahandle()); |
| 36 kernel->mark_dirty(&trans->directory()->kernel()->dirty_metahandles); | 37 kernel->mark_dirty(&trans->directory()->kernel()->dirty_metahandles); |
| 37 kernel->put(IS_DEL, true); | 38 kernel->put(IS_DEL, true); |
| 38 // We match the database defaults here | 39 // We match the database defaults here |
| 39 kernel->put(BASE_VERSION, CHANGES_VERSION); | 40 kernel->put(BASE_VERSION, CHANGES_VERSION); |
| 40 if (!trans->directory()->InsertEntry(trans, kernel.get())) { | 41 kernel_ = kernel.get(); |
| 42 if (!trans->directory()->InsertEntry(trans, std::move(kernel))) { |
| 43 kernel_ = nullptr; |
| 41 return; // Failed inserting. | 44 return; // Failed inserting. |
| 42 } | 45 } |
| 43 trans->TrackChangesTo(kernel.get()); | 46 trans->TrackChangesTo(kernel_); |
| 44 | |
| 45 kernel_ = kernel.release(); | |
| 46 } | 47 } |
| 47 | 48 |
| 48 ModelNeutralMutableEntry::ModelNeutralMutableEntry(BaseWriteTransaction* trans, | 49 ModelNeutralMutableEntry::ModelNeutralMutableEntry(BaseWriteTransaction* trans, |
| 49 CreateNewTypeRoot, | 50 CreateNewTypeRoot, |
| 50 ModelType type) | 51 ModelType type) |
| 51 : Entry(trans), base_write_transaction_(trans) { | 52 : Entry(trans), base_write_transaction_(trans) { |
| 52 // We allow NIGORI because we allow SyncEncryptionHandler to restore a nigori | 53 // We allow NIGORI because we allow SyncEncryptionHandler to restore a nigori |
| 53 // across Directory instances (see SyncEncryptionHandler::RestoreNigori). | 54 // across Directory instances (see SyncEncryptionHandler::RestoreNigori). |
| 54 if (type != NIGORI) | 55 if (type != NIGORI) |
| 55 DCHECK(IsTypeWithClientGeneratedRoot(type)); | 56 DCHECK(IsTypeWithClientGeneratedRoot(type)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 67 | 68 |
| 68 kernel->put(ID, | 69 kernel->put(ID, |
| 69 syncable::Id::CreateFromClientString(ModelTypeToString(type))); | 70 syncable::Id::CreateFromClientString(ModelTypeToString(type))); |
| 70 kernel->put(META_HANDLE, trans->directory()->NextMetahandle()); | 71 kernel->put(META_HANDLE, trans->directory()->NextMetahandle()); |
| 71 kernel->put(PARENT_ID, syncable::Id::GetRoot()); | 72 kernel->put(PARENT_ID, syncable::Id::GetRoot()); |
| 72 kernel->put(BASE_VERSION, CHANGES_VERSION); | 73 kernel->put(BASE_VERSION, CHANGES_VERSION); |
| 73 kernel->put(NON_UNIQUE_NAME, ModelTypeToString(type)); | 74 kernel->put(NON_UNIQUE_NAME, ModelTypeToString(type)); |
| 74 kernel->put(IS_DIR, true); | 75 kernel->put(IS_DIR, true); |
| 75 | 76 |
| 76 kernel->mark_dirty(&trans->directory()->kernel()->dirty_metahandles); | 77 kernel->mark_dirty(&trans->directory()->kernel()->dirty_metahandles); |
| 78 kernel_ = kernel.get(); |
| 77 | 79 |
| 78 if (!trans->directory()->InsertEntry(trans, kernel.get())) { | 80 if (!trans->directory()->InsertEntry(trans, std::move(kernel))) { |
| 81 kernel_ = nullptr; |
| 79 return; // Failed inserting. | 82 return; // Failed inserting. |
| 80 } | 83 } |
| 81 | 84 trans->TrackChangesTo(kernel_); |
| 82 trans->TrackChangesTo(kernel.get()); | |
| 83 | |
| 84 kernel_ = kernel.release(); | |
| 85 } | 85 } |
| 86 | 86 |
| 87 ModelNeutralMutableEntry::ModelNeutralMutableEntry(BaseWriteTransaction* trans, | 87 ModelNeutralMutableEntry::ModelNeutralMutableEntry(BaseWriteTransaction* trans, |
| 88 GetById, | 88 GetById, |
| 89 const Id& id) | 89 const Id& id) |
| 90 : Entry(trans, GET_BY_ID, id), base_write_transaction_(trans) {} | 90 : Entry(trans, GET_BY_ID, id), base_write_transaction_(trans) {} |
| 91 | 91 |
| 92 ModelNeutralMutableEntry::ModelNeutralMutableEntry(BaseWriteTransaction* trans, | 92 ModelNeutralMutableEntry::ModelNeutralMutableEntry(BaseWriteTransaction* trans, |
| 93 GetByHandle, | 93 GetByHandle, |
| 94 int64_t metahandle) | 94 int64_t metahandle) |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 453 ModelNeutralMutableEntry::ModelNeutralMutableEntry(BaseWriteTransaction* trans) | 453 ModelNeutralMutableEntry::ModelNeutralMutableEntry(BaseWriteTransaction* trans) |
| 454 : Entry(trans), base_write_transaction_(trans) {} | 454 : Entry(trans), base_write_transaction_(trans) {} |
| 455 | 455 |
| 456 void ModelNeutralMutableEntry::MarkDirty() { | 456 void ModelNeutralMutableEntry::MarkDirty() { |
| 457 kernel_->mark_dirty(&dir()->kernel()->dirty_metahandles); | 457 kernel_->mark_dirty(&dir()->kernel()->dirty_metahandles); |
| 458 } | 458 } |
| 459 | 459 |
| 460 } // namespace syncable | 460 } // namespace syncable |
| 461 | 461 |
| 462 } // namespace syncer | 462 } // namespace syncer |
| OLD | NEW |