OLD | NEW |
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 "components/sync/engine_impl/syncer.h" | 5 #include "components/sync/engine_impl/syncer.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 if (nudge_tracker->IsGetUpdatesRequired() || | 57 if (nudge_tracker->IsGetUpdatesRequired() || |
58 cycle->context()->ShouldFetchUpdatesBeforeCommit()) { | 58 cycle->context()->ShouldFetchUpdatesBeforeCommit()) { |
59 VLOG(1) << "Downloading types " << ModelTypeSetToString(request_types); | 59 VLOG(1) << "Downloading types " << ModelTypeSetToString(request_types); |
60 if (!DownloadAndApplyUpdates(&request_types, cycle, | 60 if (!DownloadAndApplyUpdates(&request_types, cycle, |
61 NormalGetUpdatesDelegate(*nudge_tracker), | 61 NormalGetUpdatesDelegate(*nudge_tracker), |
62 kCreateMobileBookmarksFolder)) { | 62 kCreateMobileBookmarksFolder)) { |
63 return HandleCycleEnd(cycle, nudge_tracker->GetLegacySource()); | 63 return HandleCycleEnd(cycle, nudge_tracker->GetLegacySource()); |
64 } | 64 } |
65 } | 65 } |
66 | 66 |
67 VLOG(1) << "Committing from types " << ModelTypeSetToString(request_types); | |
68 CommitProcessor commit_processor( | 67 CommitProcessor commit_processor( |
69 cycle->context()->model_type_registry()->commit_contributor_map()); | 68 cycle->context()->model_type_registry()->commit_contributor_map()); |
70 SyncerError commit_result = BuildAndPostCommits(request_types, nudge_tracker, | 69 SyncerError commit_result = BuildAndPostCommits(request_types, nudge_tracker, |
71 cycle, &commit_processor); | 70 cycle, &commit_processor); |
72 cycle->mutable_status_controller()->set_commit_result(commit_result); | 71 cycle->mutable_status_controller()->set_commit_result(commit_result); |
73 | 72 |
74 return HandleCycleEnd(cycle, nudge_tracker->GetLegacySource()); | 73 return HandleCycleEnd(cycle, nudge_tracker->GetLegacySource()); |
75 } | 74 } |
76 | 75 |
77 bool Syncer::ConfigureSyncShare( | 76 bool Syncer::ConfigureSyncShare( |
78 ModelTypeSet request_types, | 77 const ModelTypeSet& request_types, |
79 sync_pb::GetUpdatesCallerInfo::GetUpdatesSource source, | 78 sync_pb::GetUpdatesCallerInfo::GetUpdatesSource source, |
80 SyncCycle* cycle) { | 79 SyncCycle* cycle) { |
81 base::AutoReset<bool> is_syncing(&is_syncing_, true); | 80 base::AutoReset<bool> is_syncing(&is_syncing_, true); |
82 | 81 |
83 // It is possible during configuration that datatypes get unregistered from | 82 // It is possible during configuration that datatypes get unregistered from |
84 // ModelTypeRegistry before scheduled configure sync cycle gets executed. | 83 // ModelTypeRegistry before scheduled configure sync cycle gets executed. |
85 // This happens either because DataTypeController::LoadModels fail and type | 84 // This happens either because DataTypeController::LoadModels fail and type |
86 // need to be stopped or during shutdown when all datatypes are stopped. When | 85 // need to be stopped or during shutdown when all datatypes are stopped. When |
87 // it happens we should adjust set of types to download to only include | 86 // it happens we should adjust set of types to download to only include |
88 // registered types. | 87 // registered types. |
89 request_types.RetainAll(cycle->context()->GetEnabledTypes()); | 88 ModelTypeSet still_enabled_types = |
90 VLOG(1) << "Configuring types " << ModelTypeSetToString(request_types); | 89 Intersection(request_types, cycle->context()->GetEnabledTypes()); |
| 90 VLOG(1) << "Configuring types " << ModelTypeSetToString(still_enabled_types); |
91 HandleCycleBegin(cycle); | 91 HandleCycleBegin(cycle); |
92 DownloadAndApplyUpdates(&request_types, cycle, | 92 DownloadAndApplyUpdates(&still_enabled_types, cycle, |
93 ConfigureGetUpdatesDelegate(source), | 93 ConfigureGetUpdatesDelegate(source), |
94 kCreateMobileBookmarksFolder); | 94 kCreateMobileBookmarksFolder); |
95 return HandleCycleEnd(cycle, source); | 95 return HandleCycleEnd(cycle, source); |
96 } | 96 } |
97 | 97 |
98 bool Syncer::PollSyncShare(ModelTypeSet request_types, SyncCycle* cycle) { | 98 bool Syncer::PollSyncShare(ModelTypeSet request_types, SyncCycle* cycle) { |
99 base::AutoReset<bool> is_syncing(&is_syncing_, true); | 99 base::AutoReset<bool> is_syncing(&is_syncing_, true); |
100 VLOG(1) << "Polling types " << ModelTypeSetToString(request_types); | 100 VLOG(1) << "Polling types " << ModelTypeSetToString(request_types); |
101 HandleCycleBegin(cycle); | 101 HandleCycleBegin(cycle); |
102 DownloadAndApplyUpdates(&request_types, cycle, PollGetUpdatesDelegate(), | 102 DownloadAndApplyUpdates(&request_types, cycle, PollGetUpdatesDelegate(), |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 cycle->mutable_status_controller()); | 139 cycle->mutable_status_controller()); |
140 | 140 |
141 cycle->context()->set_hierarchy_conflict_detected( | 141 cycle->context()->set_hierarchy_conflict_detected( |
142 cycle->status_controller().num_hierarchy_conflicts() > 0); | 142 cycle->status_controller().num_hierarchy_conflicts() > 0); |
143 cycle->SendEventNotification(SyncCycleEvent::STATUS_CHANGED); | 143 cycle->SendEventNotification(SyncCycleEvent::STATUS_CHANGED); |
144 } | 144 } |
145 | 145 |
146 return !ExitRequested(); | 146 return !ExitRequested(); |
147 } | 147 } |
148 | 148 |
149 SyncerError Syncer::BuildAndPostCommits(ModelTypeSet request_types, | 149 SyncerError Syncer::BuildAndPostCommits(const ModelTypeSet& request_types, |
150 NudgeTracker* nudge_tracker, | 150 NudgeTracker* nudge_tracker, |
151 SyncCycle* cycle, | 151 SyncCycle* cycle, |
152 CommitProcessor* commit_processor) { | 152 CommitProcessor* commit_processor) { |
| 153 VLOG(1) << "Committing from types " << ModelTypeSetToString(request_types); |
| 154 |
153 // The ExitRequested() check is unnecessary, since we should start getting | 155 // The ExitRequested() check is unnecessary, since we should start getting |
154 // errors from the ServerConnectionManager if an exist has been requested. | 156 // errors from the ServerConnectionManager if an exist has been requested. |
155 // However, it doesn't hurt to check it anyway. | 157 // However, it doesn't hurt to check it anyway. |
156 while (!ExitRequested()) { | 158 while (!ExitRequested()) { |
157 std::unique_ptr<Commit> commit( | 159 std::unique_ptr<Commit> commit( |
158 Commit::Init(request_types, cycle->context()->GetEnabledTypes(), | 160 Commit::Init(request_types, cycle->context()->GetEnabledTypes(), |
159 cycle->context()->max_commit_batch_size(), | 161 cycle->context()->max_commit_batch_size(), |
160 cycle->context()->account_name(), | 162 cycle->context()->account_name(), |
161 cycle->context()->directory()->cache_guid(), | 163 cycle->context()->directory()->cache_guid(), |
162 cycle->context()->cookie_jar_mismatch(), | 164 cycle->context()->cookie_jar_mismatch(), |
(...skipping 29 matching lines...) Expand all Loading... |
192 bool success = | 194 bool success = |
193 !HasSyncerError(cycle->status_controller().model_neutral_state()); | 195 !HasSyncerError(cycle->status_controller().model_neutral_state()); |
194 if (success && source == sync_pb::GetUpdatesCallerInfo::PERIODIC) { | 196 if (success && source == sync_pb::GetUpdatesCallerInfo::PERIODIC) { |
195 cycle->mutable_status_controller()->UpdatePollTime(); | 197 cycle->mutable_status_controller()->UpdatePollTime(); |
196 } | 198 } |
197 | 199 |
198 return success; | 200 return success; |
199 } | 201 } |
200 | 202 |
201 } // namespace syncer | 203 } // namespace syncer |
OLD | NEW |