| Index: sync/engine/syncer_util.cc
|
| diff --git a/sync/engine/syncer_util.cc b/sync/engine/syncer_util.cc
|
| index d50f4873c8a5b470b842cad4638cb01b05dd9508..51f46a00f9f22f27767c05b57a19502626ea61bf 100644
|
| --- a/sync/engine/syncer_util.cc
|
| +++ b/sync/engine/syncer_util.cc
|
| @@ -14,7 +14,6 @@
|
| #include "sync/engine/conflict_resolver.h"
|
| #include "sync/engine/syncer_proto_util.h"
|
| #include "sync/engine/syncer_types.h"
|
| -#include "sync/engine/syncproto.h"
|
| #include "sync/internal_api/public/base/model_type.h"
|
| #include "sync/protocol/bookmark_specifics.pb.h"
|
| #include "sync/protocol/nigori_specifics.pb.h"
|
| @@ -26,6 +25,7 @@
|
| #include "sync/syncable/nigori_util.h"
|
| #include "sync/syncable/read_transaction.h"
|
| #include "sync/syncable/syncable_changes_version.h"
|
| +#include "sync/syncable/syncable_proto_util.h"
|
| #include "sync/syncable/syncable_util.h"
|
| #include "sync/syncable/write_transaction.h"
|
| #include "sync/util/cryptographer.h"
|
| @@ -71,13 +71,14 @@ using syncable::WriteTransaction;
|
|
|
| syncable::Id FindLocalIdToUpdate(
|
| syncable::BaseTransaction* trans,
|
| - const SyncEntity& update) {
|
| + const sync_pb::SyncEntity& update) {
|
| // Expected entry points of this function:
|
| // SyncEntity has NOT been applied to SERVER fields.
|
| // SyncEntity has NOT been applied to LOCAL fields.
|
| // DB has not yet been modified, no entries created for this update.
|
|
|
| const std::string& client_id = trans->directory()->cache_guid();
|
| + const syncable::Id& update_id = SyncableIdFromProto(update.id_string());
|
|
|
| if (update.has_client_defined_unique_tag() &&
|
| !update.client_defined_unique_tag().empty()) {
|
| @@ -106,10 +107,10 @@ syncable::Id FindLocalIdToUpdate(
|
| // TODO(chron): Unit test the case with IS_DEL and make sure.
|
| if (local_entry.good()) {
|
| if (local_entry.Get(ID).ServerKnows()) {
|
| - if (local_entry.Get(ID) != update.id()) {
|
| + if (local_entry.Get(ID) != update_id) {
|
| // Case 2.
|
| LOG(WARNING) << "Duplicated client tag.";
|
| - if (local_entry.Get(ID) < update.id()) {
|
| + if (local_entry.Get(ID) < update_id) {
|
| // Signal an error; drop this update on the floor. Note that
|
| // we don't server delete the item, because we don't allow it to
|
| // exist locally at all. So the item will remain orphaned on
|
| @@ -118,7 +119,7 @@ syncable::Id FindLocalIdToUpdate(
|
| }
|
| }
|
| // Target this change to the existing local entry; later,
|
| - // we'll change the ID of the local entry to update.id()
|
| + // we'll change the ID of the local entry to update_id
|
| // if needed.
|
| return local_entry.Get(ID);
|
| } else {
|
| @@ -172,14 +173,14 @@ syncable::Id FindLocalIdToUpdate(
|
| DCHECK(!local_entry.Get(ID).ServerKnows());
|
|
|
| DVLOG(1) << "Reuniting lost commit response IDs. server id: "
|
| - << update.id() << " local id: " << local_entry.Get(ID)
|
| + << update_id << " local id: " << local_entry.Get(ID)
|
| << " new version: " << new_version;
|
|
|
| return local_entry.Get(ID);
|
| }
|
| }
|
| // Fallback: target an entry having the server ID, creating one if needed.
|
| - return update.id();
|
| + return update_id;
|
| }
|
|
|
| UpdateAttemptResponse AttemptToUpdateEntry(
|
| @@ -341,7 +342,7 @@ void UpdateBookmarkSpecifics(const std::string& singleton_tag,
|
| // Pass in name and checksum because of UTF8 conversion.
|
| void UpdateServerFieldsFromUpdate(
|
| MutableEntry* target,
|
| - const SyncEntity& update,
|
| + const sync_pb::SyncEntity& update,
|
| const std::string& name) {
|
| if (update.deleted()) {
|
| if (target->Get(SERVER_IS_DEL)) {
|
| @@ -368,14 +369,14 @@ void UpdateServerFieldsFromUpdate(
|
| return;
|
| }
|
|
|
| - DCHECK(target->Get(ID) == update.id())
|
| + DCHECK_EQ(target->Get(ID), SyncableIdFromProto(update.id_string()))
|
| << "ID Changing not supported here";
|
| - target->Put(SERVER_PARENT_ID, update.parent_id());
|
| + target->Put(SERVER_PARENT_ID, SyncableIdFromProto(update.parent_id_string()));
|
| target->Put(SERVER_NON_UNIQUE_NAME, name);
|
| target->Put(SERVER_VERSION, update.version());
|
| target->Put(SERVER_CTIME, ProtoTimeToTime(update.ctime()));
|
| target->Put(SERVER_MTIME, ProtoTimeToTime(update.mtime()));
|
| - target->Put(SERVER_IS_DIR, update.IsFolder());
|
| + target->Put(SERVER_IS_DIR, IsFolder(update));
|
| if (update.has_server_defined_unique_tag()) {
|
| const std::string& tag = update.server_defined_unique_tag();
|
| target->Put(UNIQUE_SERVER_TAG, tag);
|
| @@ -386,12 +387,12 @@ void UpdateServerFieldsFromUpdate(
|
| }
|
| // Store the datatype-specific part as a protobuf.
|
| if (update.has_specifics()) {
|
| - DCHECK(update.GetModelType() != syncer::UNSPECIFIED)
|
| + DCHECK_NE(GetModelType(update), UNSPECIFIED)
|
| << "Storing unrecognized datatype in sync database.";
|
| target->Put(SERVER_SPECIFICS, update.specifics());
|
| } else if (update.has_bookmarkdata()) {
|
| // Legacy protocol response for bookmark data.
|
| - const SyncEntity::BookmarkData& bookmark = update.bookmarkdata();
|
| + const sync_pb::SyncEntity::BookmarkData& bookmark = update.bookmarkdata();
|
| UpdateBookmarkSpecifics(update.server_defined_unique_tag(),
|
| bookmark.bookmark_url(),
|
| bookmark.bookmark_favicon(),
|
| @@ -572,7 +573,7 @@ void MarkDeletedChildrenSynced(
|
| }
|
|
|
| VerifyResult VerifyNewEntry(
|
| - const SyncEntity& update,
|
| + const sync_pb::SyncEntity& update,
|
| syncable::Entry* target,
|
| const bool deleted) {
|
| if (target->good()) {
|
| @@ -591,13 +592,14 @@ VerifyResult VerifyNewEntry(
|
| // consistency rules.
|
| VerifyResult VerifyUpdateConsistency(
|
| syncable::WriteTransaction* trans,
|
| - const SyncEntity& update,
|
| + const sync_pb::SyncEntity& update,
|
| syncable::MutableEntry* target,
|
| const bool deleted,
|
| const bool is_directory,
|
| syncer::ModelType model_type) {
|
|
|
| CHECK(target->good());
|
| + const syncable::Id& update_id = SyncableIdFromProto(update.id_string());
|
|
|
| // If the update is a delete, we don't really need to worry at this stage.
|
| if (deleted)
|
| @@ -624,7 +626,7 @@ VerifyResult VerifyUpdateConsistency(
|
| }
|
| }
|
|
|
| - if (!deleted && (target->Get(ID) == update.id()) &&
|
| + if (!deleted && (target->Get(ID) == update_id) &&
|
| (target->Get(SERVER_IS_DEL) ||
|
| (!target->Get(IS_UNSYNCED) && target->Get(IS_DEL) &&
|
| target->Get(BASE_VERSION) > 0))) {
|
| @@ -647,7 +649,7 @@ VerifyResult VerifyUpdateConsistency(
|
| << SyncerProtoUtil::SyncEntityDebugString(update);
|
| return VERIFY_FAIL;
|
| }
|
| - if (target->Get(ID) == update.id()) {
|
| + if (target->Get(ID) == update_id) {
|
| if (target->Get(SERVER_VERSION) > update.version()) {
|
| LOG(WARNING) << "We've already seen a more recent version.";
|
| LOG(WARNING) << " Entry: " << *target;
|
| @@ -663,7 +665,7 @@ VerifyResult VerifyUpdateConsistency(
|
| // Assumes we have an existing entry; verify an update that seems to be
|
| // expressing an 'undelete'
|
| VerifyResult VerifyUndelete(syncable::WriteTransaction* trans,
|
| - const SyncEntity& update,
|
| + const sync_pb::SyncEntity& update,
|
| syncable::MutableEntry* target) {
|
| // TODO(nick): We hit this path for items deleted items that the server
|
| // tells us to re-create; only deleted items with positive base versions
|
|
|