Index: chrome/browser/chromeos/login/screens/user_image_screen.cc |
diff --git a/chrome/browser/chromeos/login/screens/user_image_screen.cc b/chrome/browser/chromeos/login/screens/user_image_screen.cc |
index f450f9e1afeaec0f1a4d1f195315b08fa22bffdc..36a72f73ed9d818022dc47899f31ac6c5f2d192b 100644 |
--- a/chrome/browser/chromeos/login/screens/user_image_screen.cc |
+++ b/chrome/browser/chromeos/login/screens/user_image_screen.cc |
@@ -125,6 +125,7 @@ void UserImageScreen::OnDecodeImageFailed() { |
void UserImageScreen::OnInitialSync(bool local_image_updated) { |
DCHECK(sync_timer_); |
+ ReportSyncResult(SyncResult::SUCCEEDED); |
if (!local_image_updated) { |
sync_timer_.reset(); |
GetSyncObserver()->RemoveObserver(this); |
@@ -136,6 +137,7 @@ void UserImageScreen::OnInitialSync(bool local_image_updated) { |
} |
void UserImageScreen::OnSyncTimeout() { |
+ ReportSyncResult(SyncResult::TIMED_OUT); |
sync_timer_.reset(); |
GetSyncObserver()->RemoveObserver(this); |
if (is_screen_ready_) |
@@ -261,8 +263,10 @@ void UserImageScreen::Show() { |
if (GetUser()->CanSyncImage()) { |
if (UserImageSyncObserver* sync_observer = GetSyncObserver()) { |
+ sync_waiting_start_time_ = base::Time::Now(); |
// We have synced image already. |
if (sync_observer->is_synced()) { |
+ ReportSyncResult(SyncResult::SUCCEEDED); |
ExitScreen(); |
return; |
} |
@@ -342,4 +346,12 @@ void UserImageScreen::ExitScreen() { |
Finish(BaseScreenDelegate::USER_IMAGE_SELECTED); |
} |
+void UserImageScreen::ReportSyncResult(SyncResult timed_out) const { |
+ base::TimeDelta duration = base::Time::Now() - sync_waiting_start_time_; |
+ UMA_HISTOGRAM_TIMES("Login.NewUserPriorityPrefsSyncTime", duration); |
+ UMA_HISTOGRAM_ENUMERATION("Login.NewUserPriorityPrefsSyncResult", |
+ static_cast<int>(timed_out), |
+ static_cast<int>(SyncResult::COUNT)); |
+} |
+ |
} // namespace chromeos |