Chromium Code Reviews| Index: chrome/browser/sync/engine/all_status.cc |
| diff --git a/chrome/browser/sync/engine/all_status.cc b/chrome/browser/sync/engine/all_status.cc |
| index 374c0d35a42050e0c8944af7675a2aae7e400956..229e7af5469330584deea5af382b6bdd89d95f8e 100644 |
| --- a/chrome/browser/sync/engine/all_status.cc |
| +++ b/chrome/browser/sync/engine/all_status.cc |
| @@ -17,7 +17,7 @@ |
| namespace browser_sync { |
| AllStatus::AllStatus() { |
| - status_.summary = sync_api::SyncManager::Status::OFFLINE; |
| + status_.summary = sync_api::SyncManager::Status::UNINITIALIZED; |
| status_.initial_sync_ended = true; |
| status_.notifications_enabled = false; |
| status_.cryptographer_ready = false; |
| @@ -69,6 +69,7 @@ sync_api::SyncManager::Status AllStatus::CalcSyncing( |
| // TODO(ncarter): Make this realtime by having the syncer_status |
| // counter preserve its value across sessions. http://crbug.com/26339 |
| if (event.what_happened == SyncEngineEvent::SYNC_CYCLE_ENDED) { |
| + ++status.sync_count; |
| status.updates_received += |
| snapshot->syncer_status.num_updates_downloaded_total; |
| status.tombstone_updates_received += |
| @@ -94,19 +95,29 @@ sync_api::SyncManager::Status AllStatus::CalcSyncing( |
| void AllStatus::CalcStatusChanges() { |
| const bool unsynced_changes = status_.unsynced_count > 0; |
| - const bool online = status_.authenticated && |
| + const bool online = status_.sync_count > 0 && status_.authenticated && |
| status_.server_reachable && status_.server_up; |
| + |
| + if (status_.syncing) { |
|
rlarocque
2012/02/08 00:07:37
Why not make this a big series of if/else if branc
lipalani1
2012/02/08 19:41:50
Nothing functionally wrong with that. The reason i
|
| + status_.summary = sync_api::SyncManager::Status::SYNCING; |
| + return; |
| + } |
| + |
| + // If it is not syncing check if it is online. |
| if (online) { |
| - if (status_.syncing) |
| - status_.summary = sync_api::SyncManager::Status::SYNCING; |
| - else |
| - status_.summary = sync_api::SyncManager::Status::READY; |
| - } else if (!status_.initial_sync_ended) { |
| + status_.summary = sync_api::SyncManager::Status::READY; |
| + return; |
| + } |
| + |
| + // It is not online. Find out more details for the summary. |
| + if (!status_.initial_sync_ended) { |
| status_.summary = sync_api::SyncManager::Status::OFFLINE_UNUSABLE; |
| } else if (unsynced_changes) { |
| status_.summary = sync_api::SyncManager::Status::OFFLINE_UNSYNCED; |
| - } else { |
| + } else if (status_.sync_count > 0) { |
| status_.summary = sync_api::SyncManager::Status::OFFLINE; |
| + } else { |
| + status_.summary = sync_api::SyncManager::Status::UNINITIALIZED; |
| } |
| } |