| OLD | NEW |
| 1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2009 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 "chrome/browser/sync/engine/process_updates_command.h" | 5 #include "chrome/browser/sync/engine/process_updates_command.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "chrome/browser/sync/engine/syncer.h" | 10 #include "chrome/browser/sync/engine/syncer.h" |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 } // namespace | 127 } // namespace |
| 128 | 128 |
| 129 // TODO(sync): Refactor this code. | 129 // TODO(sync): Refactor this code. |
| 130 // Process a single update. Will avoid touching global state. | 130 // Process a single update. Will avoid touching global state. |
| 131 ServerUpdateProcessingResult ProcessUpdatesCommand::ProcessUpdate( | 131 ServerUpdateProcessingResult ProcessUpdatesCommand::ProcessUpdate( |
| 132 const syncable::ScopedDirLookup& dir, const sync_pb::SyncEntity& pb_entry) { | 132 const syncable::ScopedDirLookup& dir, const sync_pb::SyncEntity& pb_entry) { |
| 133 | 133 |
| 134 const SyncEntity& entry = *static_cast<const SyncEntity*>(&pb_entry); | 134 const SyncEntity& entry = *static_cast<const SyncEntity*>(&pb_entry); |
| 135 using namespace syncable; | 135 using namespace syncable; |
| 136 syncable::Id id = entry.id(); | 136 syncable::Id id = entry.id(); |
| 137 SyncName name = SyncerProtoUtil::NameFromSyncEntity(entry); | 137 const std::string name = |
| 138 SyncerProtoUtil::NameFromSyncEntity(entry); |
| 138 | 139 |
| 139 WriteTransaction trans(dir, SYNCER, __FILE__, __LINE__); | 140 WriteTransaction trans(dir, SYNCER, __FILE__, __LINE__); |
| 140 | 141 |
| 141 SyncerUtil::CreateNewEntry(&trans, id); | 142 SyncerUtil::CreateNewEntry(&trans, id); |
| 142 | 143 |
| 143 // We take a two step approach. First we store the entries data in the | 144 // We take a two step approach. First we store the entries data in the |
| 144 // server fields of a local entry and then move the data to the local fields | 145 // server fields of a local entry and then move the data to the local fields |
| 145 MutableEntry update_entry(&trans, GET_BY_ID, id); | 146 MutableEntry update_entry(&trans, GET_BY_ID, id); |
| 146 // TODO(sync): do we need to run ALL these checks, or is a mere version check | 147 // TODO(sync): do we need to run ALL these checks, or is a mere version check |
| 147 // good enough? | 148 // good enough? |
| 148 if (!ReverifyEntry(&trans, entry, &update_entry)) { | 149 if (!ReverifyEntry(&trans, entry, &update_entry)) { |
| 149 return SUCCESS_PROCESSED; // the entry has become irrelevant | 150 return SUCCESS_PROCESSED; // the entry has become irrelevant |
| 150 } | 151 } |
| 151 | 152 |
| 152 SyncerUtil::UpdateServerFieldsFromUpdate(&update_entry, entry, name); | 153 SyncerUtil::UpdateServerFieldsFromUpdate(&update_entry, entry, name); |
| 153 | 154 |
| 154 if (update_entry.Get(SERVER_VERSION) == update_entry.Get(BASE_VERSION) && | 155 if (update_entry.Get(SERVER_VERSION) == update_entry.Get(BASE_VERSION) && |
| 155 !update_entry.Get(IS_UNSYNCED)) { | 156 !update_entry.Get(IS_UNSYNCED)) { |
| 156 CHECK(SyncerUtil::ServerAndLocalEntriesMatch( | 157 // Previously this was a big issue but at this point we don't really care |
| 157 &update_entry)) << update_entry; | 158 // that much if things don't match up exactly. |
| 159 LOG_IF(ERROR, !SyncerUtil::ServerAndLocalEntriesMatch(&update_entry)) |
| 160 << update_entry; |
| 158 } | 161 } |
| 159 return SUCCESS_PROCESSED; | 162 return SUCCESS_PROCESSED; |
| 160 } | 163 } |
| 161 | 164 |
| 162 } // namespace browser_sync | 165 } // namespace browser_sync |
| OLD | NEW |