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 "sync/sessions/sync_session.h" | 5 #include "sync/sessions/sync_session.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <iterator> | 8 #include <iterator> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 source_.updates_source = | 130 source_.updates_source = |
131 sync_pb::GetUpdatesCallerInfo::SYNC_CYCLE_CONTINUATION; | 131 sync_pb::GetUpdatesCallerInfo::SYNC_CYCLE_CONTINUATION; |
132 status_controller_.reset(new StatusController(routing_info_)); | 132 status_controller_.reset(new StatusController(routing_info_)); |
133 } | 133 } |
134 | 134 |
135 SyncSessionSnapshot SyncSession::TakeSnapshot() const { | 135 SyncSessionSnapshot SyncSession::TakeSnapshot() const { |
136 syncable::Directory* dir = context_->directory(); | 136 syncable::Directory* dir = context_->directory(); |
137 | 137 |
138 bool is_share_useable = true; | 138 bool is_share_useable = true; |
139 syncable::ModelTypeSet initial_sync_ended; | 139 syncable::ModelTypeSet initial_sync_ended; |
140 std::string download_progress_markers[syncable::MODEL_TYPE_COUNT]; | 140 syncable::ModelTypePayloadMap download_progress_markers; |
141 for (int i = syncable::FIRST_REAL_MODEL_TYPE; | 141 for (int i = syncable::FIRST_REAL_MODEL_TYPE; |
142 i < syncable::MODEL_TYPE_COUNT; ++i) { | 142 i < syncable::MODEL_TYPE_COUNT; ++i) { |
143 syncable::ModelType type(syncable::ModelTypeFromInt(i)); | 143 syncable::ModelType type(syncable::ModelTypeFromInt(i)); |
144 if (routing_info_.count(type) != 0) { | 144 if (routing_info_.count(type) != 0) { |
145 if (dir->initial_sync_ended_for_type(type)) | 145 if (dir->initial_sync_ended_for_type(type)) |
146 initial_sync_ended.Put(type); | 146 initial_sync_ended.Put(type); |
147 else | 147 else |
148 is_share_useable = false; | 148 is_share_useable = false; |
149 } | 149 } |
150 dir->GetDownloadProgressAsString(type, &download_progress_markers[i]); | 150 dir->GetDownloadProgressAsString(type, &download_progress_markers[type]); |
151 } | 151 } |
152 | 152 |
153 return SyncSessionSnapshot( | 153 return SyncSessionSnapshot( |
154 status_controller_->syncer_status(), | 154 status_controller_->syncer_status(), |
155 status_controller_->error(), | 155 status_controller_->error(), |
156 status_controller_->num_server_changes_remaining(), | 156 status_controller_->num_server_changes_remaining(), |
157 is_share_useable, | 157 is_share_useable, |
158 initial_sync_ended, | 158 initial_sync_ended, |
159 download_progress_markers, | 159 download_progress_markers, |
160 HasMoreToSync(), | 160 HasMoreToSync(), |
161 delegate_->IsSyncingCurrentlySilenced(), | 161 delegate_->IsSyncingCurrentlySilenced(), |
162 status_controller_->unsynced_handles().size(), | 162 status_controller_->unsynced_handles().size(), |
163 status_controller_->TotalNumEncryptionConflictingItems(), | 163 status_controller_->TotalNumEncryptionConflictingItems(), |
164 status_controller_->TotalNumHierarchyConflictingItems(), | 164 status_controller_->TotalNumHierarchyConflictingItems(), |
165 status_controller_->TotalNumSimpleConflictingItems(), | 165 status_controller_->TotalNumSimpleConflictingItems(), |
166 status_controller_->TotalNumServerConflictingItems(), | 166 status_controller_->TotalNumServerConflictingItems(), |
167 status_controller_->did_commit_items(), | 167 status_controller_->did_commit_items(), |
168 source_, | 168 source_, |
169 context_->notifications_enabled(), | 169 context_->notifications_enabled(), |
170 dir->GetEntriesCount(), | 170 dir->GetEntriesCount(), |
171 status_controller_->sync_start_time(), | 171 status_controller_->sync_start_time(), |
172 !Succeeded()); | 172 !Succeeded()); |
173 } | 173 } |
174 | 174 |
175 void SyncSession::SendEventNotification(SyncEngineEvent::EventCause cause) { | 175 void SyncSession::SendEventNotification(SyncEngineEvent::EventCause cause) { |
176 SyncEngineEvent event(cause); | 176 SyncEngineEvent event(cause); |
177 const SyncSessionSnapshot& snapshot = TakeSnapshot(); | 177 event.snapshot = TakeSnapshot(); |
178 event.snapshot = &snapshot; | |
179 | 178 |
180 DVLOG(1) << "Sending event with snapshot: " << snapshot.ToString(); | 179 DVLOG(1) << "Sending event with snapshot: " << event.snapshot.ToString(); |
181 context()->NotifyListeners(event); | 180 context()->NotifyListeners(event); |
182 } | 181 } |
183 | 182 |
184 bool SyncSession::HasMoreToSync() const { | 183 bool SyncSession::HasMoreToSync() const { |
185 const StatusController* status = status_controller_.get(); | 184 const StatusController* status = status_controller_.get(); |
186 return ((status->commit_ids().size() < status->unsynced_handles().size()) && | 185 return ((status->commit_ids().size() < status->unsynced_handles().size()) && |
187 status->syncer_status().num_successful_commits > 0) || | 186 status->syncer_status().num_successful_commits > 0) || |
188 status->conflicts_resolved(); | 187 status->conflicts_resolved(); |
189 // Or, we have conflicting updates, but we're making progress on | 188 // Or, we have conflicting updates, but we're making progress on |
190 // resolving them... | 189 // resolving them... |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 IsError(status_controller_->error().last_post_commit_result); | 244 IsError(status_controller_->error().last_post_commit_result); |
246 const bool process_commit_response_error = | 245 const bool process_commit_response_error = |
247 IsError(status_controller_->error().last_process_commit_response_result); | 246 IsError(status_controller_->error().last_process_commit_response_result); |
248 return !download_updates_error | 247 return !download_updates_error |
249 && !post_commit_error | 248 && !post_commit_error |
250 && !process_commit_response_error; | 249 && !process_commit_response_error; |
251 } | 250 } |
252 | 251 |
253 } // namespace sessions | 252 } // namespace sessions |
254 } // namespace browser_sync | 253 } // namespace browser_sync |
OLD | NEW |