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

Side by Side Diff: sync/engine/commit_util.cc

Issue 805633004: Enable Null Syncable ID which is different than Root ID. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed some dependencies on SERVER_PARENT_ID Created 6 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 unified diff | Download patch
OLDNEW
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 "sync/engine/commit_util.h" 5 #include "sync/engine/commit_util.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 143
144 if (meta_entry.ShouldMaintainHierarchy()) { 144 if (meta_entry.ShouldMaintainHierarchy()) {
145 sync_entry->set_parent_id_string(SyncableIdToProto(new_parent_id)); 145 sync_entry->set_parent_id_string(SyncableIdToProto(new_parent_id));
146 } 146 }
147 147
148 // If our parent has changed, send up the old one so the server 148 // If our parent has changed, send up the old one so the server
149 // can correctly deal with multiple parents. 149 // can correctly deal with multiple parents.
150 // TODO(nick): With the server keeping track of the primary sync parent, 150 // TODO(nick): With the server keeping track of the primary sync parent,
151 // it should not be necessary to provide the old_parent_id: the version 151 // it should not be necessary to provide the old_parent_id: the version
152 // number should suffice. 152 // number should suffice.
153 if (new_parent_id != meta_entry.GetServerParentId() && 153 Id server_parent_id = meta_entry.GetServerParentId();
154 if (new_parent_id != server_parent_id && !server_parent_id.IsNull() &&
pavely 2014/12/22 21:38:09 Could you give examples when server_parent_id will
stanisc 2014/12/22 21:56:01 Currently parent IDs are never nulls (empty) so th
pavely 2014/12/22 22:00:48 sgtm
154 0 != meta_entry.GetBaseVersion() && 155 0 != meta_entry.GetBaseVersion() &&
155 syncable::CHANGES_VERSION != meta_entry.GetBaseVersion()) { 156 syncable::CHANGES_VERSION != meta_entry.GetBaseVersion()) {
156 sync_entry->set_old_parent_id( 157 sync_entry->set_old_parent_id(SyncableIdToProto(server_parent_id));
157 SyncableIdToProto(meta_entry.GetServerParentId()));
158 } 158 }
159 159
160 int64 version = meta_entry.GetBaseVersion(); 160 int64 version = meta_entry.GetBaseVersion();
161 if (syncable::CHANGES_VERSION == version || 0 == version) { 161 if (syncable::CHANGES_VERSION == version || 0 == version) {
162 // Undeletions are only supported for items that have a client tag. 162 // Undeletions are only supported for items that have a client tag.
163 DCHECK(!id.ServerKnows() || 163 DCHECK(!id.ServerKnows() ||
164 !meta_entry.GetUniqueClientTag().empty()) 164 !meta_entry.GetUniqueClientTag().empty())
165 << meta_entry; 165 << meta_entry;
166 166
167 // Version 0 means to create or undelete an object. 167 // Version 0 means to create or undelete an object.
168 sync_entry->set_version(0); 168 sync_entry->set_version(0);
169 } else { 169 } else {
170 DCHECK(id.ServerKnows()) << meta_entry; 170 DCHECK(id.ServerKnows()) << meta_entry;
171 sync_entry->set_version(meta_entry.GetBaseVersion()); 171 sync_entry->set_version(meta_entry.GetBaseVersion());
172 } 172 }
173 sync_entry->set_ctime(TimeToProtoTime(meta_entry.GetCtime())); 173 sync_entry->set_ctime(TimeToProtoTime(meta_entry.GetCtime()));
174 sync_entry->set_mtime(TimeToProtoTime(meta_entry.GetMtime())); 174 sync_entry->set_mtime(TimeToProtoTime(meta_entry.GetMtime()));
175 175
176 SetAttachmentIds(meta_entry, sync_entry); 176 SetAttachmentIds(meta_entry, sync_entry);
177 177
178 // Handle bookmarks separately. 178 // Handle bookmarks separately.
179 if (meta_entry.GetSpecifics().has_bookmark()) { 179 if (meta_entry.GetSpecifics().has_bookmark()) {
180 if (meta_entry.GetIsDel()) { 180 if (meta_entry.GetIsDel()) {
181 sync_entry->set_deleted(true); 181 sync_entry->set_deleted(true);
182 } else { 182 } else {
183 // Both insert_after_item_id and position_in_parent fields are set only 183 // Both insert_after_item_id and position_in_parent fields are set only
184 // for legacy reasons. See comments in sync.proto for more information. 184 // for legacy reasons. See comments in sync.proto for more information.
185 const Id& prev_id = meta_entry.GetPredecessorId(); 185 const Id& prev_id = meta_entry.GetPredecessorId();
186 string prev_id_string = 186 string prev_id_string =
187 prev_id.IsRoot() ? string() : prev_id.GetServerId(); 187 prev_id.IsNull() ? string() : prev_id.GetServerId();
188 sync_entry->set_insert_after_item_id(prev_id_string); 188 sync_entry->set_insert_after_item_id(prev_id_string);
189 sync_entry->set_position_in_parent( 189 sync_entry->set_position_in_parent(
190 meta_entry.GetUniquePosition().ToInt64()); 190 meta_entry.GetUniquePosition().ToInt64());
191 meta_entry.GetUniquePosition().ToProto( 191 meta_entry.GetUniquePosition().ToProto(
192 sync_entry->mutable_unique_position()); 192 sync_entry->mutable_unique_position());
193 } 193 }
194 // Always send specifics for bookmarks. 194 // Always send specifics for bookmarks.
195 SetEntrySpecifics(meta_entry, sync_entry); 195 SetEntrySpecifics(meta_entry, sync_entry);
196 return; 196 return;
197 } 197 }
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 } 462 }
463 463
464 ProcessSuccessfulCommitResponse(commit_request_entry, server_entry, 464 ProcessSuccessfulCommitResponse(commit_request_entry, server_entry,
465 local_entry.GetId(), &local_entry, syncing_was_set, deleted_folders); 465 local_entry.GetId(), &local_entry, syncing_was_set, deleted_folders);
466 return response; 466 return response;
467 } 467 }
468 468
469 } // namespace commit_util 469 } // namespace commit_util
470 470
471 } // namespace syncer 471 } // namespace syncer
OLDNEW
« no previous file with comments | « no previous file | sync/engine/directory_update_handler_unittest.cc » ('j') | sync/engine/directory_update_handler_unittest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698