diff options
author | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-04 23:42:40 +0000 |
---|---|---|
committer | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-04 23:42:40 +0000 |
commit | b9cf9558b338523ee1f2a2721b9a4737ab6e6dc7 (patch) | |
tree | c0d50db9dd39a65c511d0a00bd45c708fb0e64fe | |
parent | e87dbfd42a7ff62190d2525a121ec80d83497629 (diff) | |
download | chromium_src-b9cf9558b338523ee1f2a2721b9a4737ab6e6dc7.zip chromium_src-b9cf9558b338523ee1f2a2721b9a4737ab6e6dc7.tar.gz chromium_src-b9cf9558b338523ee1f2a2721b9a4737ab6e6dc7.tar.bz2 |
[Sync] Add passphrase/encryption info to chrome://sync.
BUG=91134
TEST=Set up sync, inspect chrome://sync
Review URL: http://codereview.chromium.org/7550023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@95536 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/sync/engine/all_status.cc | 24 | ||||
-rw-r--r-- | chrome/browser/sync/engine/all_status.h | 5 | ||||
-rw-r--r-- | chrome/browser/sync/engine/syncapi.cc | 15 | ||||
-rw-r--r-- | chrome/browser/sync/engine/syncapi.h | 8 | ||||
-rw-r--r-- | chrome/browser/sync/profile_sync_service.cc | 4 | ||||
-rw-r--r-- | chrome/browser/sync/sync_ui_util.cc | 16 | ||||
-rw-r--r-- | chrome/browser/sync/sync_ui_util.h | 3 | ||||
-rw-r--r-- | chrome/browser/sync/sync_ui_util_unittest.cc | 4 |
8 files changed, 71 insertions, 8 deletions
diff --git a/chrome/browser/sync/engine/all_status.cc b/chrome/browser/sync/engine/all_status.cc index 2c2c37a..4b2dbb0 100644 --- a/chrome/browser/sync/engine/all_status.cc +++ b/chrome/browser/sync/engine/all_status.cc @@ -12,15 +12,16 @@ #include "chrome/browser/sync/protocol/service_constants.h" #include "chrome/browser/sync/sessions/session_state.h" #include "chrome/browser/sync/syncable/directory_manager.h" +#include "chrome/browser/sync/syncable/model_type.h" namespace browser_sync { -static const sync_api::SyncManager::Status init_status = - { sync_api::SyncManager::Status::OFFLINE }; - -AllStatus::AllStatus() : status_(init_status) { +AllStatus::AllStatus() { + status_.summary = sync_api::SyncManager::Status::OFFLINE; status_.initial_sync_ended = true; status_.notifications_enabled = false; + status_.cryptographer_ready = false; + status_.crypto_has_pending_keys = false; } AllStatus::~AllStatus() { @@ -165,6 +166,21 @@ void AllStatus::IncrementNotificationsReceived() { ++status_.notifications_received; } +void AllStatus::SetEncryptedTypes(const syncable::ModelTypeSet& types) { + ScopedStatusLock lock(this); + status_.encrypted_types = types; +} + +void AllStatus::SetCryptographerReady(bool ready) { + ScopedStatusLock lock(this); + status_.cryptographer_ready = ready; +} + +void AllStatus::SetCryptoHasPendingKeys(bool has_pending_keys) { + ScopedStatusLock lock(this); + status_.crypto_has_pending_keys = has_pending_keys; +} + ScopedStatusLock::ScopedStatusLock(AllStatus* allstatus) : allstatus_(allstatus) { allstatus->mutex_.Acquire(); diff --git a/chrome/browser/sync/engine/all_status.h b/chrome/browser/sync/engine/all_status.h index a453f1f..dd1461b 100644 --- a/chrome/browser/sync/engine/all_status.h +++ b/chrome/browser/sync/engine/all_status.h @@ -15,6 +15,7 @@ #include "base/synchronization/lock.h" #include "chrome/browser/sync/engine/syncapi.h" #include "chrome/browser/sync/engine/syncer_types.h" +#include "chrome/browser/sync/syncable/model_type.h" namespace browser_sync { @@ -46,6 +47,10 @@ class AllStatus : public SyncEngineEventListener { void IncrementNotificationsReceived(); + void SetEncryptedTypes(const syncable::ModelTypeSet& types); + void SetCryptographerReady(bool ready); + void SetCryptoHasPendingKeys(bool has_pending_keys); + protected: // Examines syncer to calculate syncing and the unsynced count, // and returns a Status with new values. diff --git a/chrome/browser/sync/engine/syncapi.cc b/chrome/browser/sync/engine/syncapi.cc index 4009cbe..813ae40 100644 --- a/chrome/browser/sync/engine/syncapi.cc +++ b/chrome/browser/sync/engine/syncapi.cc @@ -1641,6 +1641,12 @@ SyncManager::Observer::~Observer() {} SyncManager::SyncManager(const std::string& name) : data_(new SyncInternal(name)) {} +SyncManager::Status::Status() { +} + +SyncManager::Status::~Status() { +} + bool SyncManager::Init( const FilePath& database_location, const WeakHandle<JsEventHandler>& event_handler, @@ -1865,6 +1871,9 @@ bool SyncManager::SyncInternal::UpdateCryptographerFromNigori() { OnPassphraseRequired(sync_api::REASON_DECRYPTION)); } + allstatus_.SetCryptographerReady(cryptographer->is_ready()); + allstatus_.SetCryptoHasPendingKeys(cryptographer->has_pending_keys()); + return cryptographer->is_ready(); } @@ -2103,6 +2112,7 @@ void SyncManager::SyncInternal::EncryptDataTypes( encrypted_types.begin(), encrypted_types.end(), std::inserter(newly_encrypted_types, newly_encrypted_types.begin())); + allstatus_.SetEncryptedTypes(newly_encrypted_types); if (newly_encrypted_types == current_encrypted_types) return; // Set of encrypted types did not change. syncable::FillNigoriEncryptedTypes(newly_encrypted_types, &nigori); @@ -2561,6 +2571,11 @@ void SyncManager::SyncInternal::OnSyncEngineEvent( FOR_EACH_OBSERVER(SyncManager::Observer, temp_obs_list, OnPassphraseRequired(sync_api::REASON_ENCRYPTION)); } + + allstatus_.SetCryptographerReady(cryptographer->is_ready()); + allstatus_.SetCryptoHasPendingKeys(cryptographer->has_pending_keys()); + allstatus_.SetEncryptedTypes(cryptographer->GetEncryptedTypes()); + // If everything is in order(we have the passphrase) then there is no // need to inform the listeners. They will just wait for sync // completion event and if no errors have been raised it means diff --git a/chrome/browser/sync/engine/syncapi.h b/chrome/browser/sync/engine/syncapi.h index a132fdf..122bd34 100644 --- a/chrome/browser/sync/engine/syncapi.h +++ b/chrome/browser/sync/engine/syncapi.h @@ -702,6 +702,9 @@ class SyncManager { SUMMARY_STATUS_COUNT, }; + Status(); + ~Status(); + Summary summary; bool authenticated; // Successfully authenticated via GAIA. bool server_up; // True if we have received at least one good @@ -747,6 +750,11 @@ class SyncManager { // Count of useless and useful syncs we perform. int useless_sync_cycles; int useful_sync_cycles; + + // Encryption related. + syncable::ModelTypeSet encrypted_types; + bool cryptographer_ready; + bool crypto_has_pending_keys; }; // An interface the embedding application implements to receive notifications diff --git a/chrome/browser/sync/profile_sync_service.cc b/chrome/browser/sync/profile_sync_service.cc index b77f422..91471e0 100644 --- a/chrome/browser/sync/profile_sync_service.cc +++ b/chrome/browser/sync/profile_sync_service.cc @@ -830,8 +830,8 @@ SyncBackendHost::Status ProfileSyncService::QueryDetailedSyncStatus() { if (backend_.get() && backend_initialized_) { return backend_->GetDetailedStatus(); } else { - SyncBackendHost::Status status = - { SyncBackendHost::Status::OFFLINE_UNUSABLE }; + SyncBackendHost::Status status; + status.summary = SyncBackendHost::Status::OFFLINE_UNUSABLE; return status; } } diff --git a/chrome/browser/sync/sync_ui_util.cc b/chrome/browser/sync/sync_ui_util.cc index 842b949..a3501b6 100644 --- a/chrome/browser/sync/sync_ui_util.cc +++ b/chrome/browser/sync/sync_ui_util.cc @@ -12,6 +12,7 @@ #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/sync/profile_sync_service.h" #include "chrome/browser/sync/protocol/proto_enum_conversions.h" +#include "chrome/browser/sync/syncable/model_type.h" #include "chrome/browser/sync/sessions/session_state.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" @@ -425,6 +426,21 @@ void ConstructAboutInformation(ProfileSyncService* service, sync_ui_util::AddIntSyncDetail(details, "Useful Sync Cycles", full_status.useful_sync_cycles); + sync_ui_util::AddBoolSyncDetail(details, + "Explicit Passphrase", + service->IsUsingSecondaryPassphrase()); + sync_ui_util::AddBoolSyncDetail(details, + "Passphrase Required", + service->IsPassphraseRequired()); + sync_ui_util::AddBoolSyncDetail(details, + "Cryptographer Ready", + full_status.cryptographer_ready); + sync_ui_util::AddBoolSyncDetail(details, + "Cryptographer Has Pending Keys", + full_status.crypto_has_pending_keys); + sync_ui_util::AddStringSyncDetails(details, + "Encrypted Types", + syncable::ModelTypeSetToString(full_status.encrypted_types)); const browser_sync::sessions::SyncSessionSnapshot* snapshot = service->sync_initialized() ? diff --git a/chrome/browser/sync/sync_ui_util.h b/chrome/browser/sync/sync_ui_util.h index 136450c..80a12f4 100644 --- a/chrome/browser/sync/sync_ui_util.h +++ b/chrome/browser/sync/sync_ui_util.h @@ -72,5 +72,8 @@ void ConstructAboutInformation(ProfileSyncService* service, void AddIntSyncDetail(base::ListValue* details, const std::string& stat_name, int64 stat_value); + +void AddStringSyncDetails(ListValue* details, const std::string& stat_name, + const std::string& stat_value); } // namespace sync_ui_util #endif // CHROME_BROWSER_SYNC_SYNC_UI_UTIL_H_ diff --git a/chrome/browser/sync/sync_ui_util_unittest.cc b/chrome/browser/sync/sync_ui_util_unittest.cc index d6a416c..e4b5866 100644 --- a/chrome/browser/sync/sync_ui_util_unittest.cc +++ b/chrome/browser/sync/sync_ui_util_unittest.cc @@ -22,8 +22,8 @@ TEST(SyncUIUtilTest, ConstructAboutInformationWithUnrecoverableErrorTest) { // Will be released when the dictionary is destroyed string16 str(ASCIIToUTF16("none")); - browser_sync::SyncBackendHost::Status status = - { browser_sync::SyncBackendHost::Status::OFFLINE_UNUSABLE }; + browser_sync::SyncBackendHost::Status status; + status.summary = browser_sync::SyncBackendHost::Status::OFFLINE_UNUSABLE; EXPECT_CALL(service, HasSyncSetupCompleted()) .WillOnce(Return(true)); |