OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h" | 5 #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 22 matching lines...) Expand all Loading... |
33 scoped_refptr<base::SequencedTaskRunner> background_task_runner) | 33 scoped_refptr<base::SequencedTaskRunner> background_task_runner) |
34 : device_settings_service_(device_settings_service), | 34 : device_settings_service_(device_settings_service), |
35 install_attributes_(install_attributes), | 35 install_attributes_(install_attributes), |
36 background_task_runner_(background_task_runner), | 36 background_task_runner_(background_task_runner), |
37 weak_factory_(this) { | 37 weak_factory_(this) { |
38 device_settings_service_->AddObserver(this); | 38 device_settings_service_->AddObserver(this); |
39 device_settings_service_->SetDeviceMode(install_attributes_->GetMode()); | 39 device_settings_service_->SetDeviceMode(install_attributes_->GetMode()); |
40 } | 40 } |
41 | 41 |
42 DeviceCloudPolicyStoreChromeOS::~DeviceCloudPolicyStoreChromeOS() { | 42 DeviceCloudPolicyStoreChromeOS::~DeviceCloudPolicyStoreChromeOS() { |
43 device_settings_service_->RemoveObserver(this); | 43 if (device_settings_service_) |
| 44 device_settings_service_->RemoveObserver(this); |
44 } | 45 } |
45 | 46 |
46 void DeviceCloudPolicyStoreChromeOS::Store( | 47 void DeviceCloudPolicyStoreChromeOS::Store( |
47 const em::PolicyFetchResponse& policy) { | 48 const em::PolicyFetchResponse& policy) { |
48 // The policy and the public key must have already been loaded by the device | 49 // The policy and the public key must have already been loaded by the device |
49 // settings service. | 50 // settings service. |
50 DCHECK(is_initialized()); | 51 DCHECK(is_initialized()); |
51 | 52 |
52 // Cancel all pending requests. | 53 // Cancel all pending requests. |
53 weak_factory_.InvalidateWeakPtrs(); | 54 weak_factory_.InvalidateWeakPtrs(); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 base::Bind(&DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated, | 101 base::Bind(&DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated, |
101 weak_factory_.GetWeakPtr())); | 102 weak_factory_.GetWeakPtr())); |
102 } | 103 } |
103 | 104 |
104 void DeviceCloudPolicyStoreChromeOS::DeviceSettingsUpdated() { | 105 void DeviceCloudPolicyStoreChromeOS::DeviceSettingsUpdated() { |
105 if (!weak_factory_.HasWeakPtrs()) | 106 if (!weak_factory_.HasWeakPtrs()) |
106 UpdateFromService(); | 107 UpdateFromService(); |
107 } | 108 } |
108 | 109 |
109 void DeviceCloudPolicyStoreChromeOS::OnDeviceSettingsServiceShutdown() { | 110 void DeviceCloudPolicyStoreChromeOS::OnDeviceSettingsServiceShutdown() { |
| 111 device_settings_service_->RemoveObserver(this); |
110 device_settings_service_ = nullptr; | 112 device_settings_service_ = nullptr; |
111 } | 113 } |
112 | 114 |
113 std::unique_ptr<DeviceCloudPolicyValidator> | 115 std::unique_ptr<DeviceCloudPolicyValidator> |
114 DeviceCloudPolicyStoreChromeOS::CreateValidator( | 116 DeviceCloudPolicyStoreChromeOS::CreateValidator( |
115 const em::PolicyFetchResponse& policy) { | 117 const em::PolicyFetchResponse& policy) { |
116 std::unique_ptr<DeviceCloudPolicyValidator> validator( | 118 std::unique_ptr<DeviceCloudPolicyValidator> validator( |
117 DeviceCloudPolicyValidator::Create( | 119 DeviceCloudPolicyValidator::Create( |
118 base::MakeUnique<em::PolicyFetchResponse>(policy), | 120 base::MakeUnique<em::PolicyFetchResponse>(policy), |
119 background_task_runner_)); | 121 background_task_runner_)); |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 UMA_HISTOGRAM_BOOLEAN(kDMTokenCheckHistogram, true); | 239 UMA_HISTOGRAM_BOOLEAN(kDMTokenCheckHistogram, true); |
238 } else { | 240 } else { |
239 LOG(ERROR) << "Device policy read on enrolled device yields " | 241 LOG(ERROR) << "Device policy read on enrolled device yields " |
240 << "no DM token! Status: " << service_status << "."; | 242 << "no DM token! Status: " << service_status << "."; |
241 chromeos::StartupUtils::MarkEnrollmentRecoveryRequired(); | 243 chromeos::StartupUtils::MarkEnrollmentRecoveryRequired(); |
242 UMA_HISTOGRAM_BOOLEAN(kDMTokenCheckHistogram, false); | 244 UMA_HISTOGRAM_BOOLEAN(kDMTokenCheckHistogram, false); |
243 } | 245 } |
244 } | 246 } |
245 | 247 |
246 } // namespace policy | 248 } // namespace policy |
OLD | NEW |