OLD | NEW |
| (Empty) |
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. | |
4 | |
5 #include "chrome/browser/ui/webui/chromeos/login/shutdown_policy_observer.h" | |
6 | |
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" | |
11 | |
12 namespace chromeos { | |
13 | |
14 ShutdownPolicyObserver::ShutdownPolicyObserver(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(&ShutdownPolicyObserver::OnShutdownPolicyChanged, | |
21 weak_factory_.GetWeakPtr())); | |
22 } | |
23 } | |
24 | |
25 ShutdownPolicyObserver::~ShutdownPolicyObserver() { | |
26 } | |
27 | |
28 void ShutdownPolicyObserver::Shutdown() { | |
29 shutdown_policy_subscription_.reset(); | |
30 delegate_ = nullptr; | |
31 } | |
32 | |
33 void ShutdownPolicyObserver::CallDelegate(bool reboot_on_shutdown) { | |
34 if (delegate_) | |
35 delegate_->OnShutdownPolicyChanged(reboot_on_shutdown); | |
36 } | |
37 | |
38 void ShutdownPolicyObserver::OnShutdownPolicyChanged() { | |
39 CheckIfRebootOnShutdown(base::Bind(&ShutdownPolicyObserver::CallDelegate, | |
40 weak_factory_.GetWeakPtr())); | |
41 } | |
42 | |
43 void ShutdownPolicyObserver::CheckIfRebootOnShutdown( | |
44 const RebootOnShutdownCallback& callback) { | |
45 CrosSettingsProvider::TrustedStatus status = | |
46 cros_settings_->PrepareTrustedValues( | |
47 base::Bind(&ShutdownPolicyObserver::CheckIfRebootOnShutdown, | |
48 weak_factory_.GetWeakPtr(), callback)); | |
49 if (status != CrosSettingsProvider::TRUSTED) | |
50 return; | |
51 | |
52 // Get the updated policy. | |
53 bool reboot_on_shutdown = false; | |
54 cros_settings_->GetBoolean(kRebootOnShutdown, &reboot_on_shutdown); | |
55 callback.Run(reboot_on_shutdown); | |
56 } | |
57 | |
58 } // namespace chromeos | |
OLD | NEW |