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"
8 #include "base/callback.h"
9 #include "chromeos/settings/cros_settings_names.h"
10 #include "chromeos/settings/cros_settings_provider.h"
14 ShutdownPolicyHandler::ShutdownPolicyHandler(CrosSettings
* cros_settings
,
16 : cros_settings_(cros_settings
), delegate_(delegate
), weak_factory_(this) {
18 shutdown_policy_subscription_
= cros_settings_
->AddSettingsObserver(
20 base::Bind(&ShutdownPolicyHandler::OnShutdownPolicyChanged
,
21 weak_factory_
.GetWeakPtr()));
25 ShutdownPolicyHandler::~ShutdownPolicyHandler() {}
27 void ShutdownPolicyHandler::Shutdown() {
28 shutdown_policy_subscription_
.reset();
32 void ShutdownPolicyHandler::CallDelegate(bool reboot_on_shutdown
) {
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
)
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