Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / browser / chromeos / settings / shutdown_policy_handler.cc
blob095a9868d84cce4f332619a9c3e8a951f020e7cf
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
3 // found in the LICENSE file.
5 #include "chrome/browser/chromeos/settings/shutdown_policy_handler.h"
7 #include "base/bind.h"
8 #include "base/callback.h"
9 #include "chromeos/settings/cros_settings_names.h"
10 #include "chromeos/settings/cros_settings_provider.h"
12 namespace chromeos {
14 ShutdownPolicyHandler::ShutdownPolicyHandler(CrosSettings* cros_settings,
15 Delegate* delegate)
16 : cros_settings_(cros_settings), delegate_(delegate), weak_factory_(this) {
17 if (delegate_) {
18 shutdown_policy_subscription_ = cros_settings_->AddSettingsObserver(
19 kRebootOnShutdown,
20 base::Bind(&ShutdownPolicyHandler::OnShutdownPolicyChanged,
21 weak_factory_.GetWeakPtr()));
25 ShutdownPolicyHandler::~ShutdownPolicyHandler() {}
27 void ShutdownPolicyHandler::Shutdown() {
28 shutdown_policy_subscription_.reset();
29 delegate_ = nullptr;
32 void ShutdownPolicyHandler::CallDelegate(bool reboot_on_shutdown) {
33 if (delegate_)
34 delegate_->OnShutdownPolicyChanged(reboot_on_shutdown);
37 void ShutdownPolicyHandler::OnShutdownPolicyChanged() {
38 CheckIfRebootOnShutdown(base::Bind(&ShutdownPolicyHandler::CallDelegate,
39 weak_factory_.GetWeakPtr()));
42 void ShutdownPolicyHandler::CheckIfRebootOnShutdown(
43 const RebootOnShutdownCallback& callback) {
44 CrosSettingsProvider::TrustedStatus status =
45 cros_settings_->PrepareTrustedValues(
46 base::Bind(&ShutdownPolicyHandler::CheckIfRebootOnShutdown,
47 weak_factory_.GetWeakPtr(), callback));
48 if (status != CrosSettingsProvider::TRUSTED)
49 return;
51 // Get the updated policy.
52 bool reboot_on_shutdown = false;
53 cros_settings_->GetBoolean(kRebootOnShutdown, &reboot_on_shutdown);
54 callback.Run(reboot_on_shutdown);
57 } // namespace chromeos