X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fchrome%2Fbrowser%2Fui%2Fwebui%2Fchromeos%2Flogin%2Freset_screen_handler.cc;h=5e929095c25845510f586b4c8308b4dc99626fed;hb=004985e17e624662a4c85c76a7654039dc83f028;hp=83123264d8042c213724cc456037db0ac443e62a;hpb=2f108dbacb161091e42a3479f4e171339b7e7623;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc b/src/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc index 8312326..5e92909 100644 --- a/src/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc +++ b/src/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc @@ -13,6 +13,7 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/chromeos/login/help_app_launcher.h" #include "chrome/browser/chromeos/reset/metrics.h" +#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" #include "chrome/common/pref_names.h" #include "chromeos/chromeos_switches.h" #include "chromeos/dbus/dbus_thread_manager.h" @@ -22,6 +23,7 @@ #include "grit/browser_resources.h" #include "grit/chromium_strings.h" #include "grit/generated_resources.h" +#include "ui/base/l10n/l10n_util.h" namespace { @@ -30,6 +32,8 @@ const char kJsScreenPath[] = "login.ResetScreen"; // Reset screen id. const char kResetScreen[] = "reset"; +const int kErrorUIStateRollback = 7; + } // namespace namespace chromeos { @@ -41,12 +45,13 @@ ResetScreenHandler::ResetScreenHandler() restart_required_(true), reboot_was_requested_(false), rollback_available_(false), - weak_factory_(this) { + weak_ptr_factory_(this) { } ResetScreenHandler::~ResetScreenHandler() { if (delegate_) delegate_->OnActorDestroyed(this); + DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this); } void ResetScreenHandler::PrepareToShow() { @@ -97,7 +102,7 @@ void ResetScreenHandler::Show() { if (!restart_required_) // First exec after boot. reboot_was_requested_ = prefs->GetBoolean(prefs::kFactoryResetRequested); if (!CommandLine::ForCurrentProcess()->HasSwitch( - switches::kEnableRollbackOption)) { + switches::kEnableRollbackOption)) { rollback_available_ = false; ShowWithParams(); } else if (!restart_required_ && reboot_was_requested_) { @@ -107,11 +112,12 @@ void ResetScreenHandler::Show() { } else { chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()-> CanRollbackCheck(base::Bind(&ResetScreenHandler::OnRollbackCheck, - weak_factory_.GetWeakPtr())); + weak_ptr_factory_.GetWeakPtr())); } } void ResetScreenHandler::Hide() { + DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this); } void ResetScreenHandler::SetDelegate(Delegate* delegate) { @@ -131,6 +137,12 @@ void ResetScreenHandler::DeclareLocalizedValues( builder->AddF("resetRollbackOption", IDS_RESET_SCREEN_ROLLBACK_OPTION, IDS_SHORT_PRODUCT_NAME); + builder->AddF("resetRevertPromise", + IDS_RESET_SCREEN_PREPARING_REVERT_PROMISE, + IDS_SHORT_PRODUCT_NAME); + builder->AddF("resetRevertSpinnerMessage", + IDS_RESET_SCREEN_PREPARING_REVERT_SPINNER_MESSAGE, + IDS_SHORT_PRODUCT_NAME); // Different variants of the same UI elements for all dialog cases. builder->Add("resetButtonReset", IDS_RESET_SCREEN_RESET); @@ -187,6 +199,7 @@ void ResetScreenHandler::RegisterMessages() { void ResetScreenHandler::HandleOnCancel() { if (delegate_) delegate_->OnExit(); + DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this); } void ResetScreenHandler::HandleOnRestart(bool should_rollback) { @@ -199,12 +212,15 @@ void ResetScreenHandler::HandleOnRestart(bool should_rollback) { } void ResetScreenHandler::HandleOnPowerwash(bool rollback_checked) { - if (rollback_checked && rollback_available_) { + if (rollback_available_ && (rollback_checked || reboot_was_requested_)) { + CallJS("updateViewOnRollbackCall"); + DBusThreadManager::Get()->GetUpdateEngineClient()->AddObserver(this); chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()->Rollback(); } else { - if (rollback_checked) + if (rollback_checked && !rollback_available_) { NOTREACHED() << "Rollback was checked but not available. Starting powerwash."; + } chromeos::DBusThreadManager::Get()->GetSessionManagerClient()-> StartDeviceWipe(); } @@ -216,4 +232,18 @@ void ResetScreenHandler::HandleOnLearnMore() { help_app_->ShowHelpTopic(HelpAppLauncher::HELP_POWERWASH); } +void ResetScreenHandler::UpdateStatusChanged( + const UpdateEngineClient::Status& status) { + VLOG(1) << "Update status change to " << status.status; + if (status.status == UpdateEngineClient::UPDATE_STATUS_ERROR) { + // Show error screen. + base::DictionaryValue params; + params.SetInteger("uiState", kErrorUIStateRollback); + ShowScreen(OobeUI::kScreenErrorMessage, ¶ms); + } else if (status.status == + UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT) { + DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(); + } +} + } // namespace chromeos