reset_screen_handler.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/ui/webui/chromeos/login/reset_screen_handler.h" 6 7#include <string> 8 9#include "base/bind.h" 10#include "base/command_line.h" 11#include "base/values.h" 12#include "chrome/browser/browser_process.h" 13#include "chrome/browser/prefs/pref_service.h" 14#include "chrome/common/chrome_switches.h" 15#include "chrome/common/pref_names.h" 16#include "chromeos/dbus/dbus_thread_manager.h" 17#include "chromeos/dbus/power_manager_client.h" 18#include "chromeos/dbus/session_manager_client.h" 19#include "grit/browser_resources.h" 20#include "grit/chromium_strings.h" 21#include "grit/generated_resources.h" 22#include "ui/base/l10n/l10n_util.h" 23 24namespace { 25 26// Reset screen id. 27const char kResetScreen[] = "reset"; 28 29} // namespace 30 31namespace chromeos { 32 33ResetScreenHandler::ResetScreenHandler() 34 : delegate_(NULL), show_on_init_(false) { 35} 36 37ResetScreenHandler::~ResetScreenHandler() { 38 if (delegate_) 39 delegate_->OnActorDestroyed(this); 40} 41 42void ResetScreenHandler::PrepareToShow() { 43} 44 45void ResetScreenHandler::Show() { 46 if (!page_is_ready()) { 47 show_on_init_ = true; 48 return; 49 } 50 ShowScreen(kResetScreen, NULL); 51} 52 53void ResetScreenHandler::Hide() { 54} 55 56void ResetScreenHandler::SetDelegate(Delegate* delegate) { 57 delegate_ = delegate; 58 if (page_is_ready()) 59 Initialize(); 60} 61 62void ResetScreenHandler::GetLocalizedStrings( 63 base::DictionaryValue* localized_strings) { 64 localized_strings->SetString( 65 "resetScreenTitle", l10n_util::GetStringUTF16(IDS_RESET_SCREEN_TITLE)); 66 localized_strings->SetString( 67 "resetWarningText", 68 l10n_util::GetStringFUTF16( 69 IDS_RESET_SCREEN_WARNING_MSG, 70 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME))); 71 localized_strings->SetString( 72 "cancelButton", l10n_util::GetStringUTF16(IDS_CANCEL)); 73 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kFirstBoot)) { 74 localized_strings->SetString( 75 "resetWarningDetails", 76 l10n_util::GetStringUTF16(IDS_RESET_SCREEN_WARNING_DETAILS)); 77 localized_strings->SetString( 78 "resetButton", l10n_util::GetStringUTF16(IDS_RESET_SCREEN_RESET)); 79 } else { 80 localized_strings->SetString( 81 "resetWarningDetails", 82 l10n_util::GetStringFUTF16( 83 IDS_OPTIONS_FACTORY_RESET_WARNING, 84 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME))); 85 localized_strings->SetString( 86 "resetButton", l10n_util::GetStringUTF16(IDS_RELAUNCH_BUTTON)); 87 } 88} 89 90void ResetScreenHandler::Initialize() { 91 if (!page_is_ready() || !delegate_) 92 return; 93 94 if (show_on_init_) { 95 Show(); 96 show_on_init_ = false; 97 } 98} 99 100void ResetScreenHandler::RegisterMessages() { 101 web_ui()->RegisterMessageCallback("resetOnCancel", 102 base::Bind(&ResetScreenHandler::HandleOnCancel, base::Unretained(this))); 103 web_ui()->RegisterMessageCallback("resetOnReset", 104 base::Bind(&ResetScreenHandler::HandleOnReset, base::Unretained(this))); 105} 106 107void ResetScreenHandler::HandleOnCancel(const base::ListValue* args) { 108 if (delegate_) 109 delegate_->OnExit(); 110} 111 112void ResetScreenHandler::HandleOnReset(const base::ListValue* args) { 113 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kFirstBoot)) { 114 chromeos::DBusThreadManager::Get()->GetSessionManagerClient()-> 115 StartDeviceWipe(); 116 } else { 117 PrefService* prefs = g_browser_process->local_state(); 118 prefs->SetBoolean(prefs::kFactoryResetRequested, true); 119 prefs->CommitPendingWrite(); 120 121 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()-> 122 RequestRestart(); 123 } 124} 125 126} // namespace chromeos 127