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

Side by Side Diff: chrome/browser/sync/engine/conflict_resolver.cc

Issue 9460047: sync: remove use of protobuf extensions in protocol to reduce static init overhead. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fred's review Created 8 years, 9 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/conflict_resolver.h" 5 #include "chrome/browser/sync/engine/conflict_resolver.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <list> 8 #include <list>
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 if (decrypted_server_specifics == decrypted_base_server_specifics) 220 if (decrypted_server_specifics == decrypted_base_server_specifics)
221 base_server_specifics_match = true; 221 base_server_specifics_match = true;
222 } 222 }
223 223
224 // We manually merge nigori data. 224 // We manually merge nigori data.
225 if (entry.GetModelType() == syncable::NIGORI) { 225 if (entry.GetModelType() == syncable::NIGORI) {
226 // Create a new set of specifics based on the server specifics (which 226 // Create a new set of specifics based on the server specifics (which
227 // preserves their encryption keys). 227 // preserves their encryption keys).
228 sync_pb::EntitySpecifics specifics = 228 sync_pb::EntitySpecifics specifics =
229 entry.Get(syncable::SERVER_SPECIFICS); 229 entry.Get(syncable::SERVER_SPECIFICS);
230 sync_pb::NigoriSpecifics* nigori = 230 sync_pb::NigoriSpecifics* server_nigori = specifics.mutable_nigori();
231 specifics.MutableExtension(sync_pb::nigori);
232 // Store the merged set of encrypted types (cryptographer->Update(..) will 231 // Store the merged set of encrypted types (cryptographer->Update(..) will
233 // have merged the local types already). 232 // have merged the local types already).
234 cryptographer->UpdateNigoriFromEncryptedTypes(nigori); 233 cryptographer->UpdateNigoriFromEncryptedTypes(server_nigori);
235 // The local set of keys is already merged with the server's set within 234 // The local set of keys is already merged with the server's set within
236 // the cryptographer. If we don't have pending keys we can store the 235 // the cryptographer. If we don't have pending keys we can store the
237 // merged set back immediately. Else we preserve the server keys and will 236 // merged set back immediately. Else we preserve the server keys and will
238 // update the nigori when the user provides the pending passphrase via 237 // update the nigori when the user provides the pending passphrase via
239 // SetPassphrase(..). 238 // SetPassphrase(..).
240 if (cryptographer->is_ready()) { 239 if (cryptographer->is_ready()) {
241 cryptographer->GetKeys(nigori->mutable_encrypted()); 240 cryptographer->GetKeys(server_nigori->mutable_encrypted());
242 } 241 }
243 // TODO(zea): Find a better way of doing this. As it stands, we have to 242 // TODO(zea): Find a better way of doing this. As it stands, we have to
244 // update this code whenever we add a new non-cryptographer related field 243 // update this code whenever we add a new non-cryptographer related field
245 // to the nigori node. 244 // to the nigori node.
246 if (entry.Get(syncable::SPECIFICS).GetExtension(sync_pb::nigori) 245 if (entry.Get(syncable::SPECIFICS).nigori().sync_tabs()) {
247 .sync_tabs()) { 246 server_nigori->set_sync_tabs(true);
248 nigori->set_sync_tabs(true);
249 } 247 }
250 // We deliberately leave the server's device information. This client will 248 // We deliberately leave the server's device information. This client will
251 // add it's own device information on restart. 249 // add it's own device information on restart.
252 entry.Put(syncable::SPECIFICS, specifics); 250 entry.Put(syncable::SPECIFICS, specifics);
253 DVLOG(1) << "Resovling simple conflict, merging nigori nodes: " << entry; 251 DVLOG(1) << "Resovling simple conflict, merging nigori nodes: " << entry;
254 status->increment_num_server_overwrites(); 252 status->increment_num_server_overwrites();
255 OverwriteServerChanges(trans, &entry); 253 OverwriteServerChanges(trans, &entry);
256 UMA_HISTOGRAM_ENUMERATION("Sync.ResolveSimpleConflict", 254 UMA_HISTOGRAM_ENUMERATION("Sync.ResolveSimpleConflict",
257 NIGORI_MERGE, 255 NIGORI_MERGE,
258 CONFLICT_RESOLUTION_SIZE); 256 CONFLICT_RESOLUTION_SIZE);
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 forward_progress = true; 395 forward_progress = true;
398 break; 396 break;
399 } 397 }
400 processed_items.insert(id); 398 processed_items.insert(id);
401 } 399 }
402 } 400 }
403 return forward_progress; 401 return forward_progress;
404 } 402 }
405 403
406 } // namespace browser_sync 404 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698