diff options
Diffstat (limited to 'chrome/browser/sync')
-rw-r--r-- | chrome/browser/sync/personalization.cc | 1 | ||||
-rw-r--r-- | chrome/browser/sync/profile_sync_service.cc | 36 | ||||
-rw-r--r-- | chrome/browser/sync/profile_sync_service.h | 29 |
3 files changed, 65 insertions, 1 deletions
diff --git a/chrome/browser/sync/personalization.cc b/chrome/browser/sync/personalization.cc index 8bd3c0d..8e8b6a6b 100644 --- a/chrome/browser/sync/personalization.cc +++ b/chrome/browser/sync/personalization.cc @@ -160,6 +160,7 @@ void HandleMenuItemClick(Profile* p) { ShowOptionsWindow(OPTIONS_PAGE_CONTENT, OPTIONS_GROUP_NONE, p); } else { service->EnableForUser(); + ProfileSyncService::SyncEvent(ProfileSyncService::START_FROM_WRENCH); } } diff --git a/chrome/browser/sync/profile_sync_service.cc b/chrome/browser/sync/profile_sync_service.cc index a832870..910563a 100644 --- a/chrome/browser/sync/profile_sync_service.cc +++ b/chrome/browser/sync/profile_sync_service.cc @@ -13,6 +13,7 @@ #include "base/file_path.h" #include "base/file_util.h" #include "base/gfx/png_encoder.h" +#include "base/histogram.h" #include "base/stl_util-inl.h" #include "base/string_util.h" #include "base/time.h" @@ -551,6 +552,10 @@ void ProfileSyncService::OnAuthError() { expecting_first_run_auth_needed_event_ = false; } + if (!wizard_.IsVisible()) { + auth_error_time_ == base::TimeTicks::Now(); + } + is_auth_in_progress_ = false; // Fan the notification out to interested UI-thread components. FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged()); @@ -559,6 +564,13 @@ void ProfileSyncService::OnAuthError() { void ProfileSyncService::ShowLoginDialog() { if (wizard_.IsVisible()) return; + + if (!auth_error_time_.is_null()) { + UMA_HISTOGRAM_LONG_TIMES("Sync.ReauthorizationTime", + base::TimeTicks::Now() - auth_error_time_); + auth_error_time_ = base::TimeTicks(); // Reset auth_error_time_ to null. + } + if (last_auth_error_ != AUTH_ERROR_NONE) wizard_.Step(SyncSetupWizard::GAIA_LOGIN); } @@ -806,7 +818,7 @@ std::wstring ProfileSyncService::GetLastSyncedTimeString() const { return TimeFormat::TimeElapsed(last_synced); } -string16 ProfileSyncService::GetAuthenticatedUsername() const { +string16 ProfileSyncService::GetAuthenticatedUsername() const { return backend_->GetAuthenticatedUsername(); } @@ -815,11 +827,19 @@ void ProfileSyncService::OnUserSubmittedAuth( last_attempted_user_email_ = username; is_auth_in_progress_ = true; FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged()); + + base::TimeTicks start_time = base::TimeTicks::Now(); backend_->Authenticate(username, password); + UMA_HISTOGRAM_TIMES("Sync.AuthorizationTime", + base::TimeTicks::Now() - start_time); } void ProfileSyncService::OnUserAcceptedMergeAndSync() { + base::TimeTicks start_time = base::TimeTicks::Now(); bool merge_success = model_associator_->AssociateModels(); + UMA_HISTOGRAM_TIMES("Sync.BookmarkAssociationWithUITime", + base::TimeTicks::Now() - start_time); + wizard_.Step(SyncSetupWizard::DONE); // TODO(timsteele): error state? if (!merge_success) { LOG(ERROR) << "Model assocation failed."; @@ -837,6 +857,7 @@ void ProfileSyncService::OnUserCancelledDialog() { // Rollback. DisableForUser(); } + FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged()); } @@ -854,12 +875,17 @@ void ProfileSyncService::StartProcessingChangesIfReady() { // Show the sync merge warning dialog if needed. if (MergeAndSyncAcceptanceNeeded()) { + ProfileSyncService::SyncEvent(MERGE_AND_SYNC_NEEDED); wizard_.Step(SyncSetupWizard::MERGE_AND_SYNC); return; } // We're ready to merge the models. + base::TimeTicks start_time = base::TimeTicks::Now(); bool merge_success = model_associator_->AssociateModels(); + UMA_HISTOGRAM_TIMES("Sync.BookmarkAssociationTime", + base::TimeTicks::Now() - start_time); + wizard_.Step(SyncSetupWizard::DONE); // TODO(timsteele): error state? if (!merge_success) { LOG(ERROR) << "Model assocation failed."; @@ -879,6 +905,14 @@ void ProfileSyncService::RemoveObserver(Observer* observer) { observers_.RemoveObserver(observer); } +void ProfileSyncService::SyncEvent(SyncEventCodes code) { + static LinearHistogram histogram("Sync.EventCodes", MIN_SYNC_EVENT_CODE, + MAX_SYNC_EVENT_CODE - 1, + MAX_SYNC_EVENT_CODE); + histogram.SetFlags(kUmaTargetedHistogramFlag); + histogram.Add(code); +} + bool ProfileSyncService::ShouldPushChanges() { return ready_to_process_changes_ && // Wait for model load and merge. !unrecoverable_error_detected_; // Halt after any terrible events. diff --git a/chrome/browser/sync/profile_sync_service.h b/chrome/browser/sync/profile_sync_service.h index d91edbe..0301647 100644 --- a/chrome/browser/sync/profile_sync_service.h +++ b/chrome/browser/sync/profile_sync_service.h @@ -53,6 +53,29 @@ class ProfileSyncService : public BookmarkModelObserver, typedef ProfileSyncServiceObserver Observer; typedef browser_sync::SyncBackendHost::Status Status; + enum SyncEventCodes { + MIN_SYNC_EVENT_CODE = 0, + + // Events starting the sync service. + START_FROM_NTP = 1, // Sync was started from the ad in NTP + START_FROM_WRENCH = 2, // Sync was started from the Wrench menu. + START_FROM_OPTIONS = 3, // Sync was started from Wrench->Options. + + // Events regarding cancelation of the signon process of sync. + CANCEL_FROM_SIGNON_WIHTOUT_AUTH = 10, // Cancelled before submitting + // username and password. + CANCEL_DURING_SIGNON = 11, // Cancelled after auth. + CANCEL_DURING_SIGNON_AFTER_MERGE = 12, // Cancelled during merge. + + // Events resulting in the stoppage of sync service. + STOP_FROM_OPTIONS = 20, // Sync was stopped from Wrench->Options. + + // Miscellaneous events caused by sync service. + MERGE_AND_SYNC_NEEDED = 30, + + MAX_SYNC_EVENT_CODE + }; + explicit ProfileSyncService(Profile* profile); virtual ~ProfileSyncService(); @@ -169,6 +192,9 @@ class ProfileSyncService : public BookmarkModelObserver, void AddObserver(Observer* observer); void RemoveObserver(Observer* observer); + // Record stats on various events. + static void SyncEvent(SyncEventCodes code); + protected: // Call this after any of the subsystems being synced (the bookmark // model and the sync backend) finishes its initialization. When everything @@ -308,6 +334,9 @@ class ProfileSyncService : public BookmarkModelObserver, // Sets the last synced time to the current time. void UpdateLastSyncedTime(); + // Time at which error UI is presented for the NTP. + base::TimeTicks auth_error_time_; + // The profile whose data we are synchronizing. Profile* profile_; |