summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-04 23:42:40 +0000
committerzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-04 23:42:40 +0000
commitb9cf9558b338523ee1f2a2721b9a4737ab6e6dc7 (patch)
treec0d50db9dd39a65c511d0a00bd45c708fb0e64fe
parente87dbfd42a7ff62190d2525a121ec80d83497629 (diff)
downloadchromium_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.cc24
-rw-r--r--chrome/browser/sync/engine/all_status.h5
-rw-r--r--chrome/browser/sync/engine/syncapi.cc15
-rw-r--r--chrome/browser/sync/engine/syncapi.h8
-rw-r--r--chrome/browser/sync/profile_sync_service.cc4
-rw-r--r--chrome/browser/sync/sync_ui_util.cc16
-rw-r--r--chrome/browser/sync/sync_ui_util.h3
-rw-r--r--chrome/browser/sync/sync_ui_util_unittest.cc4
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));