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

Unified Diff: chrome/browser/ui/webui/settings/browser_lifetime_handler.cc

Issue 2057593003: MD Settings: Add dedicated C++ handler for restart/relaunch/powerwash. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit. Created 4 years, 6 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/settings/browser_lifetime_handler.cc
diff --git a/chrome/browser/ui/webui/settings/browser_lifetime_handler.cc b/chrome/browser/ui/webui/settings/browser_lifetime_handler.cc
new file mode 100644
index 0000000000000000000000000000000000000000..477aa793415fdc2b9108ab3eaee2672b1eb0ebe1
--- /dev/null
+++ b/chrome/browser/ui/webui/settings/browser_lifetime_handler.cc
@@ -0,0 +1,80 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/settings/browser_lifetime_handler.h"
+
+#include "base/bind.h"
+#include "base/bind_helpers.h"
+#include "chrome/browser/lifetime/application_lifetime.h"
+
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/browser_process_platform_part.h"
+#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
+#include "chrome/common/pref_names.h"
+#include "components/prefs/pref_service.h"
+#include "components/user_manager/user_manager.h"
+#endif // defined(OS_CHROMEOS)
+
+namespace settings {
+
+BrowserLifetimeHandler::BrowserLifetimeHandler() {}
+
+BrowserLifetimeHandler::~BrowserLifetimeHandler() {}
+
+void BrowserLifetimeHandler::RegisterMessages() {
+ web_ui()->RegisterMessageCallback("restart",
+ base::Bind(&BrowserLifetimeHandler::HandleRestart,
+ base::Unretained(this)));
+ web_ui()->RegisterMessageCallback("relaunch",
+ base::Bind(&BrowserLifetimeHandler::HandleRelaunch,
+ base::Unretained(this)));
+#if defined(OS_CHROMEOS)
+ web_ui()->RegisterMessageCallback("signOutAndRestart",
+ base::Bind(&BrowserLifetimeHandler::HandleSignOutAndRestart,
+ base::Unretained(this)));
+ web_ui()->RegisterMessageCallback("factoryReset",
+ base::Bind(&BrowserLifetimeHandler::HandleFactoryReset,
+ base::Unretained(this)));
+#endif // defined(OS_CHROMEOS)
+}
+
+void BrowserLifetimeHandler::HandleRestart(
+ const base::ListValue* args) {
+ chrome::AttemptRestart();
+}
+
+void BrowserLifetimeHandler::HandleRelaunch(
+ const base::ListValue* args) {
+ chrome::AttemptRelaunch();
+}
+
+#if defined(OS_CHROMEOS)
+void BrowserLifetimeHandler::HandleSignOutAndRestart(
+ const base::ListValue* args) {
+ chrome::AttemptUserExit();
+}
+
+void BrowserLifetimeHandler::HandleFactoryReset(
+ const base::ListValue* args) {
+ policy::BrowserPolicyConnectorChromeOS* connector =
+ g_browser_process->platform_part()->browser_policy_connector_chromeos();
+ bool allow_powerwash = !connector->IsEnterpriseManaged() &&
+ !user_manager::UserManager::Get()->IsLoggedInAsGuest() &&
+ !user_manager::UserManager::Get()->IsLoggedInAsSupervisedUser();
+
+ if (!allow_powerwash)
+ return;
+
+ PrefService* prefs = g_browser_process->local_state();
+ prefs->SetBoolean(prefs::kFactoryResetRequested, true);
+ prefs->CommitPendingWrite();
+
+ // Perform sign out. Current chrome process will then terminate, new one will
+ // be launched (as if it was a restart).
+ chrome::AttemptRelaunch();
+}
+#endif // defined(OS_CHROMEOS)
+
+} // namespace settings

Powered by Google App Engine
This is Rietveld 408576698