| OLD | NEW |
| 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/login/screens/reset_screen.h" | 5 #include "chrome/browser/chromeos/login/screens/reset_screen.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/metrics/histogram_macros.h" | 8 #include "base/metrics/histogram_macros.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chrome/browser/browser_process.h" | 10 #include "chrome/browser/browser_process.h" |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 ResetScreen::~ResetScreen() { | 65 ResetScreen::~ResetScreen() { |
| 66 if (view_) | 66 if (view_) |
| 67 view_->Unbind(); | 67 view_->Unbind(); |
| 68 DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this); | 68 DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this); |
| 69 } | 69 } |
| 70 | 70 |
| 71 void ResetScreen::Show() { | 71 void ResetScreen::Show() { |
| 72 if (view_) | 72 if (view_) |
| 73 view_->Show(); | 73 view_->Show(); |
| 74 | 74 |
| 75 int dialog_type = -1; // used by UMA metrics. | 75 reset::DialogViewType dialog_type = |
| 76 reset::DIALOG_VIEW_TYPE_SIZE; // used by UMA metrics. |
| 76 | 77 |
| 77 ContextEditor context_editor = GetContextEditor(); | 78 ContextEditor context_editor = GetContextEditor(); |
| 78 | 79 |
| 79 bool restart_required = !base::CommandLine::ForCurrentProcess()->HasSwitch( | 80 bool restart_required = !base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 80 switches::kFirstExecAfterBoot); | 81 switches::kFirstExecAfterBoot); |
| 81 if (restart_required) { | 82 if (restart_required) { |
| 82 context_editor.SetInteger(kContextKeyScreenState, STATE_RESTART_REQUIRED); | 83 context_editor.SetInteger(kContextKeyScreenState, STATE_RESTART_REQUIRED); |
| 83 dialog_type = reset::DIALOG_SHORTCUT_RESTART_REQUIRED; | 84 dialog_type = reset::DIALOG_SHORTCUT_RESTART_REQUIRED; |
| 84 } else { | 85 } else { |
| 85 context_editor.SetInteger(kContextKeyScreenState, STATE_POWERWASH_PROPOSAL); | 86 context_editor.SetInteger(kContextKeyScreenState, STATE_POWERWASH_PROPOSAL); |
| 86 } | 87 } |
| 87 | 88 |
| 88 // Set availability of Rollback feature. | 89 // Set availability of Rollback feature. |
| 89 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 90 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 90 switches::kDisableRollbackOption)) { | 91 switches::kDisableRollbackOption)) { |
| 91 context_editor.SetBoolean(kContextKeyIsRollbackAvailable, false); | 92 context_editor.SetBoolean(kContextKeyIsRollbackAvailable, false); |
| 92 dialog_type = reset::DIALOG_SHORTCUT_OFFERING_ROLLBACK_UNAVAILABLE; | 93 dialog_type = reset::DIALOG_SHORTCUT_OFFERING_ROLLBACK_UNAVAILABLE; |
| 93 } else { | 94 } else { |
| 94 chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()-> | 95 chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()-> |
| 95 CanRollbackCheck(base::Bind(&ResetScreen::OnRollbackCheck, | 96 CanRollbackCheck(base::Bind(&ResetScreen::OnRollbackCheck, |
| 96 weak_ptr_factory_.GetWeakPtr())); | 97 weak_ptr_factory_.GetWeakPtr())); |
| 97 } | 98 } |
| 98 | 99 |
| 99 if (dialog_type >= 0) { | 100 if (dialog_type < reset::DIALOG_VIEW_TYPE_SIZE) { |
| 100 UMA_HISTOGRAM_ENUMERATION("Reset.ChromeOS.PowerwashDialogShown", | 101 UMA_HISTOGRAM_ENUMERATION("Reset.ChromeOS.PowerwashDialogShown", |
| 101 dialog_type, | 102 dialog_type, |
| 102 reset::DIALOG_VIEW_TYPE_SIZE); | 103 reset::DIALOG_VIEW_TYPE_SIZE); |
| 103 } | 104 } |
| 104 | 105 |
| 105 PrefService* prefs = g_browser_process->local_state(); | 106 PrefService* prefs = g_browser_process->local_state(); |
| 106 prefs->SetBoolean(prefs::kFactoryResetRequested, false); | 107 prefs->SetBoolean(prefs::kFactoryResetRequested, false); |
| 107 prefs->CommitPendingWrite(); | 108 prefs->CommitPendingWrite(); |
| 108 } | 109 } |
| 109 | 110 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 !context_.GetBoolean(kContextKeyIsRollbackChecked)) { | 198 !context_.GetBoolean(kContextKeyIsRollbackChecked)) { |
| 198 UMA_HISTOGRAM_ENUMERATION( | 199 UMA_HISTOGRAM_ENUMERATION( |
| 199 "Reset.ChromeOS.PowerwashDialogShown", | 200 "Reset.ChromeOS.PowerwashDialogShown", |
| 200 reset::DIALOG_SHORTCUT_OFFERING_ROLLBACK_AVAILABLE, | 201 reset::DIALOG_SHORTCUT_OFFERING_ROLLBACK_AVAILABLE, |
| 201 reset::DIALOG_VIEW_TYPE_SIZE); | 202 reset::DIALOG_VIEW_TYPE_SIZE); |
| 202 GetContextEditor().SetBoolean(kContextKeyIsRollbackChecked, true); | 203 GetContextEditor().SetBoolean(kContextKeyIsRollbackChecked, true); |
| 203 } | 204 } |
| 204 } | 205 } |
| 205 | 206 |
| 206 void ResetScreen::OnShowConfirm() { | 207 void ResetScreen::OnShowConfirm() { |
| 207 int dialog_type = context_.GetBoolean(kContextKeyIsRollbackChecked) ? | 208 reset::DialogViewType dialog_type = |
| 208 reset::DIALOG_SHORTCUT_CONFIRMING_POWERWASH_AND_ROLLBACK : | 209 context_.GetBoolean(kContextKeyIsRollbackChecked) |
| 209 reset::DIALOG_SHORTCUT_CONFIRMING_POWERWASH_ONLY; | 210 ? reset::DIALOG_SHORTCUT_CONFIRMING_POWERWASH_AND_ROLLBACK |
| 211 : reset::DIALOG_SHORTCUT_CONFIRMING_POWERWASH_ONLY; |
| 210 UMA_HISTOGRAM_ENUMERATION( | 212 UMA_HISTOGRAM_ENUMERATION( |
| 211 "Reset.ChromeOS.PowerwashDialogShown", | 213 "Reset.ChromeOS.PowerwashDialogShown", |
| 212 dialog_type, | 214 dialog_type, |
| 213 reset::DIALOG_VIEW_TYPE_SIZE); | 215 reset::DIALOG_VIEW_TYPE_SIZE); |
| 214 | 216 |
| 215 GetContextEditor().SetBoolean(kContextKeyIsConfirmational, true); | 217 GetContextEditor().SetBoolean(kContextKeyIsConfirmational, true); |
| 216 } | 218 } |
| 217 | 219 |
| 218 void ResetScreen::OnLearnMore() { | 220 void ResetScreen::OnLearnMore() { |
| 219 #if defined(OFFICIAL_BUILD) | 221 #if defined(OFFICIAL_BUILD) |
| (...skipping 22 matching lines...) Expand all Loading... |
| 242 get_base_screen_delegate()->ShowErrorScreen(); | 244 get_base_screen_delegate()->ShowErrorScreen(); |
| 243 } else if (status.status == | 245 } else if (status.status == |
| 244 UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT) { | 246 UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT) { |
| 245 DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(); | 247 DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(); |
| 246 } | 248 } |
| 247 } | 249 } |
| 248 | 250 |
| 249 // Invoked from call to CanRollbackCheck upon completion of the DBus call. | 251 // Invoked from call to CanRollbackCheck upon completion of the DBus call. |
| 250 void ResetScreen::OnRollbackCheck(bool can_rollback) { | 252 void ResetScreen::OnRollbackCheck(bool can_rollback) { |
| 251 VLOG(1) << "Callback from CanRollbackCheck, result " << can_rollback; | 253 VLOG(1) << "Callback from CanRollbackCheck, result " << can_rollback; |
| 252 int dialog_type = can_rollback ? | 254 reset::DialogViewType dialog_type = |
| 253 reset::DIALOG_SHORTCUT_OFFERING_ROLLBACK_AVAILABLE : | 255 can_rollback ? reset::DIALOG_SHORTCUT_OFFERING_ROLLBACK_AVAILABLE |
| 254 reset::DIALOG_SHORTCUT_OFFERING_ROLLBACK_UNAVAILABLE; | 256 : reset::DIALOG_SHORTCUT_OFFERING_ROLLBACK_UNAVAILABLE; |
| 255 UMA_HISTOGRAM_ENUMERATION("Reset.ChromeOS.PowerwashDialogShown", | 257 UMA_HISTOGRAM_ENUMERATION("Reset.ChromeOS.PowerwashDialogShown", |
| 256 dialog_type, | 258 dialog_type, |
| 257 reset::DIALOG_VIEW_TYPE_SIZE); | 259 reset::DIALOG_VIEW_TYPE_SIZE); |
| 258 | 260 |
| 259 GetContextEditor().SetBoolean(kContextKeyIsRollbackAvailable, can_rollback); | 261 GetContextEditor().SetBoolean(kContextKeyIsRollbackAvailable, can_rollback); |
| 260 } | 262 } |
| 261 | 263 |
| 262 ErrorScreen* ResetScreen::GetErrorScreen() { | 264 ErrorScreen* ResetScreen::GetErrorScreen() { |
| 263 return get_base_screen_delegate()->GetErrorScreen(); | 265 return get_base_screen_delegate()->GetErrorScreen(); |
| 264 } | 266 } |
| 265 | 267 |
| 266 } // namespace chromeos | 268 } // namespace chromeos |
| OLD | NEW |