Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3679)

Unified Diff: chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.cc

Issue 2849833002: cros: Add UMA metrics in encryption migration UI. (Closed)
Patch Set: Address review comments. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.cc
diff --git a/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.cc
index d655542a21fdfab84a781bb9927df3cf55a9ed5e..6d532662ec8454ddcff2365c482a6f841827db1c 100644
--- a/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.cc
@@ -4,12 +4,14 @@
#include "chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h"
+#include <cmath>
#include <string>
#include <utility>
#include "ash/system/devicetype_utils.h"
#include "base/command_line.h"
#include "base/files/file_path.h"
+#include "base/metrics/histogram_macros.h"
#include "base/sys_info.h"
#include "base/task_scheduler/post_task.h"
#include "chrome/browser/browser_process.h"
@@ -46,11 +48,47 @@ constexpr char kJsApiStartMigration[] = "startMigration";
constexpr char kJsApiSkipMigration[] = "skipMigration";
constexpr char kJsApiRequestRestart[] = "requestRestart";
+// UMA names.
+constexpr char kUmaNameFirstScreen[] = "Cryptohome.MigrationUI.FirstScreen";
+constexpr char kUmaNameUserChoice[] = "Cryptohome.MigrationUI.UserChoice";
+constexpr char kUmaNameConsumedBatteryPercent[] =
+ "Cryptohome.MigrationUI.ConsumedBatteryPercent";
+
+// This enum must match the numbering for Cryptohome.MigrationUI.FirstScreen in
+// histograms.xml. Do not reorder or remove items, only add new items before
+// FIRST_SCREEN_MAX.
+enum class FirstScreen {
+ FIRST_SCREEN_READY = 0,
+ FIRST_SCREEN_RESUME = 1,
+ FIRST_SCREEN_LOW_STORAGE = 2,
+ FIRST_SCREEN_COUNT
+};
+
+// This enum must match the numbering for Cryptohome.MigrationUI.UserChoice in
+// histograms.xml. Do not reorder or remove items, only add new items before
+// FIRST_SCREEN_MAX.
+enum class UserChoice {
+ USER_CHOICE_UPDATE = 0,
+ USER_CHOICE_SKIP = 1,
+ USER_CHOICE_COUNT
+};
+
bool IsTestingUI() {
return base::CommandLine::ForCurrentProcess()->HasSwitch(
chromeos::switches::kTestEncryptionMigrationUI);
}
+// Wrapper functions for histogram macros to avoid duplication of expanded code.
+void RecordFirstScreen(FirstScreen first_screen) {
+ UMA_HISTOGRAM_ENUMERATION(kUmaNameFirstScreen, static_cast<int>(first_screen),
+ static_cast<int>(FirstScreen::FIRST_SCREEN_COUNT));
+}
+
+void RecordUserChoice(UserChoice user_choice) {
+ UMA_HISTOGRAM_ENUMERATION(kUmaNameUserChoice, static_cast<int>(user_choice),
+ static_cast<int>(UserChoice::USER_CHOICE_COUNT));
Ilya Sherman 2017/05/01 18:02:10 nit: FYI, static_casts are no longer needed for th
fukino 2017/05/02 04:27:34 Oh, I did not know it. Thanks! I'll update it in a
+}
+
} // namespace
namespace chromeos {
@@ -187,10 +225,12 @@ void EncryptionMigrationScreenHandler::PowerChanged(
}
void EncryptionMigrationScreenHandler::HandleStartMigration() {
+ RecordUserChoice(UserChoice::USER_CHOICE_UPDATE);
WaitBatteryAndMigrate();
}
void EncryptionMigrationScreenHandler::HandleSkipMigration() {
+ RecordUserChoice(UserChoice::USER_CHOICE_SKIP);
// If the user skips migration, we mount the cryptohome without performing the
// migration by reusing UserContext and LoginPerformer which were used in the
// previous attempt and dropping |is_forcing_dircrypto| flag in UserContext.
@@ -239,11 +279,14 @@ void EncryptionMigrationScreenHandler::CheckAvailableStorage() {
void EncryptionMigrationScreenHandler::OnGetAvailableStorage(int64_t size) {
if (size >= kMinimumAvailableStorage || IsTestingUI()) {
if (should_resume_) {
+ RecordFirstScreen(FirstScreen::FIRST_SCREEN_RESUME);
WaitBatteryAndMigrate();
} else {
+ RecordFirstScreen(FirstScreen::FIRST_SCREEN_READY);
UpdateUIState(UIState::READY);
}
} else {
+ RecordFirstScreen(FirstScreen::FIRST_SCREEN_LOW_STORAGE);
CallJS("setAvailableSpaceInString", ui::FormatBytes(size));
CallJS("setNecessarySpaceInString",
ui::FormatBytes(kMinimumAvailableStorage));
@@ -264,6 +307,7 @@ void EncryptionMigrationScreenHandler::WaitBatteryAndMigrate() {
void EncryptionMigrationScreenHandler::StartMigration() {
UpdateUIState(UIState::MIGRATING);
+ initial_battery_percent_ = current_battery_percent_;
// Mount the existing eCryptfs vault to a temporary location for migration.
cryptohome::MountParameters mount(false);
@@ -362,6 +406,14 @@ void EncryptionMigrationScreenHandler::OnMigrationProgress(
CallJS("setMigrationProgress", static_cast<double>(current) / total);
break;
case cryptohome::DIRCRYPTO_MIGRATION_SUCCESS:
+ // If the battery level decreased during migration, record the consumed
+ // battery level.
+ if (current_battery_percent_ < initial_battery_percent_) {
+ UMA_HISTOGRAM_PERCENTAGE(
+ kUmaNameConsumedBatteryPercent,
+ static_cast<int>(std::round(initial_battery_percent_ -
+ current_battery_percent_)));
+ }
// Restart immediately after successful migration.
DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart();
break;
« no previous file with comments | « chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698