OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "sync/engine/apply_control_data_updates.h" | 5 #include "sync/engine/apply_control_data_updates.h" |
6 | 6 |
7 #include "base/metrics/histogram.h" | 7 #include "base/metrics/histogram.h" |
8 #include "sync/engine/conflict_resolver.h" | 8 #include "sync/engine/conflict_resolver.h" |
9 #include "sync/engine/conflict_util.h" | 9 #include "sync/engine/conflict_util.h" |
10 #include "sync/engine/syncer_util.h" | 10 #include "sync/engine/syncer_util.h" |
11 #include "sync/syncable/directory.h" | 11 #include "sync/syncable/directory.h" |
12 #include "sync/syncable/mutable_entry.h" | 12 #include "sync/syncable/mutable_entry.h" |
13 #include "sync/syncable/nigori_handler.h" | 13 #include "sync/syncable/nigori_handler.h" |
14 #include "sync/syncable/nigori_util.h" | 14 #include "sync/syncable/nigori_util.h" |
15 #include "sync/syncable/syncable_write_transaction.h" | 15 #include "sync/syncable/syncable_write_transaction.h" |
16 #include "sync/util/cryptographer.h" | 16 #include "sync/util/cryptographer.h" |
17 | 17 |
18 namespace syncer { | 18 namespace syncer { |
19 | 19 |
20 using syncable::GET_BY_SERVER_TAG; | 20 using syncable::GET_TYPE_ROOT; |
21 using syncable::IS_UNAPPLIED_UPDATE; | 21 using syncable::IS_UNAPPLIED_UPDATE; |
22 using syncable::IS_UNSYNCED; | 22 using syncable::IS_UNSYNCED; |
23 using syncable::SERVER_SPECIFICS; | 23 using syncable::SERVER_SPECIFICS; |
24 using syncable::SPECIFICS; | 24 using syncable::SPECIFICS; |
25 using syncable::SYNCER; | 25 using syncable::SYNCER; |
26 | 26 |
27 void ApplyControlDataUpdates(syncable::Directory* dir) { | 27 void ApplyControlDataUpdates(syncable::Directory* dir) { |
28 syncable::WriteTransaction trans(FROM_HERE, SYNCER, dir); | 28 syncable::WriteTransaction trans(FROM_HERE, SYNCER, dir); |
29 | 29 |
30 std::vector<int64> handles; | 30 std::vector<int64> handles; |
31 dir->GetUnappliedUpdateMetaHandles( | 31 dir->GetUnappliedUpdateMetaHandles( |
32 &trans, ToFullModelTypeSet(ControlTypes()), &handles); | 32 &trans, ToFullModelTypeSet(ControlTypes()), &handles); |
33 | 33 |
34 // First, go through and manually apply any new top level datatype nodes (so | 34 // First, go through and manually apply any new top level datatype nodes (so |
35 // that we don't have to worry about hitting a CONFLICT_HIERARCHY with an | 35 // that we don't have to worry about hitting a CONFLICT_HIERARCHY with an |
36 // entry because we haven't applied its parent yet). | 36 // entry because we haven't applied its parent yet). |
37 // TODO(sync): if at some point we support control datatypes with actual | 37 // TODO(sync): if at some point we support control datatypes with actual |
38 // hierarchies we'll need to revisit this logic. | 38 // hierarchies we'll need to revisit this logic. |
39 ModelTypeSet control_types = ControlTypes(); | 39 ModelTypeSet control_types = ControlTypes(); |
40 for (ModelTypeSet::Iterator iter = control_types.First(); iter.Good(); | 40 for (ModelTypeSet::Iterator iter = control_types.First(); iter.Good(); |
41 iter.Inc()) { | 41 iter.Inc()) { |
42 syncable::MutableEntry entry(&trans, | 42 syncable::MutableEntry entry(&trans, syncable::GET_TYPE_ROOT, iter.Get()); |
43 syncable::GET_BY_SERVER_TAG, | |
44 ModelTypeToRootTag(iter.Get())); | |
45 if (!entry.good()) | 43 if (!entry.good()) |
46 continue; | 44 continue; |
47 if (!entry.GetIsUnappliedUpdate()) | 45 if (!entry.GetIsUnappliedUpdate()) |
48 continue; | 46 continue; |
49 | 47 |
50 ModelType type = entry.GetServerModelType(); | 48 ModelType type = entry.GetServerModelType(); |
51 if (type == NIGORI) { | 49 if (type == NIGORI) { |
52 // Nigori node applications never fail. | 50 // Nigori node applications never fail. |
53 ApplyNigoriUpdate(&trans, | 51 ApplyNigoriUpdate(&trans, |
54 &entry, | 52 &entry, |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 ConflictResolver::OVERWRITE_LOCAL, | 210 ConflictResolver::OVERWRITE_LOCAL, |
213 ConflictResolver::CONFLICT_RESOLUTION_SIZE); | 211 ConflictResolver::CONFLICT_RESOLUTION_SIZE); |
214 } | 212 } |
215 | 213 |
216 UpdateAttemptResponse response = AttemptToUpdateEntry( | 214 UpdateAttemptResponse response = AttemptToUpdateEntry( |
217 trans, entry, cryptographer); | 215 trans, entry, cryptographer); |
218 DCHECK_EQ(SUCCESS, response); | 216 DCHECK_EQ(SUCCESS, response); |
219 } | 217 } |
220 | 218 |
221 } // namespace syncer | 219 } // namespace syncer |
OLD | NEW |