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

Unified Diff: sync/internal_api/write_node.cc

Issue 11636006: WIP: The Bookmark Position Megapatch (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Various updates, including switch suffix to unique_client_tag style Created 8 years 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/internal_api/test/test_entry_factory.cc ('k') | sync/protocol/bookmark_specifics.proto » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/internal_api/write_node.cc
diff --git a/sync/internal_api/write_node.cc b/sync/internal_api/write_node.cc
index 6f70b3da11bc2debfe95b2af23503f1840e7c92d..1367ecb8759bec83fe2a7800edfb67a44ea4c065 100644
--- a/sync/internal_api/write_node.cc
+++ b/sync/internal_api/write_node.cc
@@ -19,6 +19,7 @@
#include "sync/protocol/typed_url_specifics.pb.h"
#include "sync/syncable/mutable_entry.h"
#include "sync/syncable/nigori_util.h"
+#include "sync/syncable/syncable_util.h"
#include "sync/util/cryptographer.h"
using std::string;
@@ -204,12 +205,7 @@ void WriteNode::SetEntitySpecifics(
DCHECK_NE(new_specifics_type, UNSPECIFIED);
DVLOG(1) << "Writing entity specifics of type "
<< ModelTypeToString(new_specifics_type);
- // GetModelType() can be unspecified if this is the first time this
- // node is being initialized (see PutModelType()). Otherwise, it
- // should match |new_specifics_type|.
- if (GetModelType() != UNSPECIFIED) {
- DCHECK_EQ(new_specifics_type, GetModelType());
- }
+ DCHECK_EQ(new_specifics_type, GetModelType());
// Preserve unknown fields.
const sync_pb::EntitySpecifics& old_specifics = entry_->Get(SPECIFICS);
@@ -292,7 +288,7 @@ BaseNode::InitByLookupResult WriteNode::InitByClientTagLookup(
if (tag.empty())
return INIT_FAILED_PRECONDITION;
- const std::string hash = GenerateSyncableHash(model_type, tag);
+ const std::string hash = syncable::GenerateSyncableHash(model_type, tag);
entry_ = new syncable::MutableEntry(transaction_->GetWrappedWriteTrans(),
syncable::GET_BY_CLIENT_TAG, hash);
@@ -319,22 +315,10 @@ BaseNode::InitByLookupResult WriteNode::InitByTagLookup(
return INIT_OK;
}
-void WriteNode::PutModelType(ModelType model_type) {
- // Set an empty specifics of the appropriate datatype. The presence
- // of the specific field will identify the model type.
- DCHECK(GetModelType() == model_type ||
- GetModelType() == UNSPECIFIED); // Immutable once set.
-
- sync_pb::EntitySpecifics specifics;
- AddDefaultFieldValue(model_type, &specifics);
- SetEntitySpecifics(specifics);
-}
-
// Create a new node with default properties, and bind this WriteNode to it.
// Return true on success.
-bool WriteNode::InitByCreation(ModelType model_type,
- const BaseNode& parent,
- const BaseNode* predecessor) {
+bool WriteNode::InitBookmarkByCreation(const BaseNode& parent,
+ const BaseNode* predecessor) {
DCHECK(!entry_) << "Init called twice";
// |predecessor| must be a child of |parent| or NULL.
if (predecessor && predecessor->GetParentId() != parent.GetId()) {
@@ -349,7 +333,8 @@ bool WriteNode::InitByCreation(ModelType model_type,
string dummy(kDefaultNameForNewNodes);
entry_ = new syncable::MutableEntry(transaction_->GetWrappedWriteTrans(),
- syncable::CREATE, parent_id, dummy);
+ syncable::CREATE_BOOKMARK, parent_id,
+ dummy);
if (!entry_->good())
return false;
@@ -357,8 +342,6 @@ bool WriteNode::InitByCreation(ModelType model_type,
// Entries are untitled folders by default.
entry_->Put(syncable::IS_DIR, true);
- PutModelType(model_type);
-
// Now set the predecessor, which sets IS_UNSYNCED as necessary.
return PutPredecessor(predecessor);
}
@@ -380,7 +363,7 @@ WriteNode::InitUniqueByCreationResult WriteNode::InitUniqueByCreation(
return INIT_FAILED_EMPTY_TAG;
}
- const std::string hash = GenerateSyncableHash(model_type, tag);
+ const std::string hash = syncable::GenerateSyncableHash(model_type, tag);
syncable::Id parent_id = parent.GetEntry()->Get(syncable::ID);
@@ -426,7 +409,8 @@ WriteNode::InitUniqueByCreationResult WriteNode::InitUniqueByCreation(
}
} else {
entry_ = new syncable::MutableEntry(transaction_->GetWrappedWriteTrans(),
- syncable::CREATE, parent_id, dummy);
+ syncable::CREATE_UNIQUE,
+ model_type, parent_id, dummy);
if (!entry_->good())
return INIT_FAILED_COULD_NOT_CREATE_ENTRY;
@@ -437,9 +421,6 @@ WriteNode::InitUniqueByCreationResult WriteNode::InitUniqueByCreation(
// We don't support directory and tag combinations.
entry_->Put(syncable::IS_DIR, false);
- // Will clear specifics data.
- PutModelType(model_type);
-
// Now set the predecessor, which sets IS_UNSYNCED as necessary.
bool success = PutPredecessor(NULL);
if (!success)
@@ -460,7 +441,7 @@ bool WriteNode::SetPosition(const BaseNode& new_parent,
// Filter out redundant changes if both the parent and the predecessor match.
if (new_parent_id == entry_->Get(syncable::PARENT_ID)) {
- const syncable::Id& old = entry_->Get(syncable::PREV_ID);
+ const syncable::Id& old = entry_->GetPredecessorId();
if ((!predecessor && old.IsRoot()) ||
(predecessor && (old == predecessor->GetEntry()->Get(syncable::ID)))) {
return true;
@@ -474,6 +455,7 @@ bool WriteNode::SetPosition(const BaseNode& new_parent,
// Now set the predecessor, which sets IS_UNSYNCED as necessary.
return PutPredecessor(predecessor);
+ return true;
}
const syncable::Entry* WriteNode::GetEntry() const {
« no previous file with comments | « sync/internal_api/test/test_entry_factory.cc ('k') | sync/protocol/bookmark_specifics.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698