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

Side by Side 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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/settings/browser_lifetime_handler.h"
6
7 #include "base/bind.h"
8 #include "base/bind_helpers.h"
9 #include "chrome/browser/lifetime/application_lifetime.h"
10
11 #if defined(OS_CHROMEOS)
12 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/browser_process_platform_part.h"
14 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
15 #include "chrome/common/pref_names.h"
16 #include "components/prefs/pref_service.h"
17 #include "components/user_manager/user_manager.h"
18 #endif // defined(OS_CHROMEOS)
19
20 namespace settings {
21
22 BrowserLifetimeHandler::BrowserLifetimeHandler() {}
23
24 BrowserLifetimeHandler::~BrowserLifetimeHandler() {}
25
26 void BrowserLifetimeHandler::RegisterMessages() {
27 web_ui()->RegisterMessageCallback("restart",
28 base::Bind(&BrowserLifetimeHandler::HandleRestart,
29 base::Unretained(this)));
30 web_ui()->RegisterMessageCallback("relaunch",
31 base::Bind(&BrowserLifetimeHandler::HandleRelaunch,
32 base::Unretained(this)));
33 #if defined(OS_CHROMEOS)
34 web_ui()->RegisterMessageCallback("signOutAndRestart",
35 base::Bind(&BrowserLifetimeHandler::HandleSignOutAndRestart,
36 base::Unretained(this)));
37 web_ui()->RegisterMessageCallback("factoryReset",
38 base::Bind(&BrowserLifetimeHandler::HandleFactoryReset,
39 base::Unretained(this)));
40 #endif // defined(OS_CHROMEOS)
41 }
42
43 void BrowserLifetimeHandler::HandleRestart(
44 const base::ListValue* args) {
45 chrome::AttemptRestart();
46 }
47
48 void BrowserLifetimeHandler::HandleRelaunch(
49 const base::ListValue* args) {
50 chrome::AttemptRelaunch();
51 }
52
53 #if defined(OS_CHROMEOS)
54 void BrowserLifetimeHandler::HandleSignOutAndRestart(
55 const base::ListValue* args) {
56 chrome::AttemptUserExit();
57 }
58
59 void BrowserLifetimeHandler::HandleFactoryReset(
60 const base::ListValue* args) {
61 policy::BrowserPolicyConnectorChromeOS* connector =
62 g_browser_process->platform_part()->browser_policy_connector_chromeos();
63 bool allow_powerwash = !connector->IsEnterpriseManaged() &&
64 !user_manager::UserManager::Get()->IsLoggedInAsGuest() &&
65 !user_manager::UserManager::Get()->IsLoggedInAsSupervisedUser();
66
67 if (!allow_powerwash)
68 return;
69
70 PrefService* prefs = g_browser_process->local_state();
71 prefs->SetBoolean(prefs::kFactoryResetRequested, true);
72 prefs->CommitPendingWrite();
73
74 // Perform sign out. Current chrome process will then terminate, new one will
75 // be launched (as if it was a restart).
76 chrome::AttemptRelaunch();
77 }
78 #endif // defined(OS_CHROMEOS)
79
80 } // namespace settings
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698