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

Side by Side Diff: chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.cc

Issue 2817643002: Make CloudPolicyValidator memory management clearer (Closed)
Patch Set: Cleaner memory management in CloudPolicyValidator Created 3 years, 8 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
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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 64
65 std::unique_ptr<DeviceCloudPolicyValidator> validator( 65 std::unique_ptr<DeviceCloudPolicyValidator> validator(
66 CreateValidator(policy)); 66 CreateValidator(policy));
67 validator->ValidateSignatureAllowingRotation( 67 validator->ValidateSignatureAllowingRotation(
68 public_key->as_string(), install_attributes_->GetDomain()); 68 public_key->as_string(), install_attributes_->GetDomain());
69 validator->ValidateAgainstCurrentPolicy( 69 validator->ValidateAgainstCurrentPolicy(
70 device_settings_service_->policy_data(), 70 device_settings_service_->policy_data(),
71 CloudPolicyValidatorBase::TIMESTAMP_FULLY_VALIDATED, 71 CloudPolicyValidatorBase::TIMESTAMP_FULLY_VALIDATED,
72 CloudPolicyValidatorBase::DM_TOKEN_REQUIRED, 72 CloudPolicyValidatorBase::DM_TOKEN_REQUIRED,
73 CloudPolicyValidatorBase::DEVICE_ID_REQUIRED); 73 CloudPolicyValidatorBase::DEVICE_ID_REQUIRED);
74 validator.release()->StartValidation( 74 DeviceCloudPolicyValidator::StartValidation(
75 std::move(validator),
75 base::Bind(&DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated, 76 base::Bind(&DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated,
76 weak_factory_.GetWeakPtr())); 77 weak_factory_.GetWeakPtr()));
77 } 78 }
78 79
79 void DeviceCloudPolicyStoreChromeOS::Load() { 80 void DeviceCloudPolicyStoreChromeOS::Load() {
80 device_settings_service_->Load(); 81 device_settings_service_->Load();
81 } 82 }
82 83
83 void DeviceCloudPolicyStoreChromeOS::InstallInitialPolicy( 84 void DeviceCloudPolicyStoreChromeOS::InstallInitialPolicy(
84 const em::PolicyFetchResponse& policy) { 85 const em::PolicyFetchResponse& policy) {
85 // Cancel all pending requests. 86 // Cancel all pending requests.
86 weak_factory_.InvalidateWeakPtrs(); 87 weak_factory_.InvalidateWeakPtrs();
87 88
88 if (!install_attributes_->IsCloudManaged()) { 89 if (!install_attributes_->IsCloudManaged()) {
89 status_ = STATUS_BAD_STATE; 90 status_ = STATUS_BAD_STATE;
90 NotifyStoreError(); 91 NotifyStoreError();
91 return; 92 return;
92 } 93 }
93 94
94 std::unique_ptr<DeviceCloudPolicyValidator> validator( 95 std::unique_ptr<DeviceCloudPolicyValidator> validator(
95 CreateValidator(policy)); 96 CreateValidator(policy));
96 validator->ValidateInitialKey(install_attributes_->GetDomain()); 97 validator->ValidateInitialKey(install_attributes_->GetDomain());
97 validator.release()->StartValidation( 98 DeviceCloudPolicyValidator::StartValidation(
99 std::move(validator),
98 base::Bind(&DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated, 100 base::Bind(&DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated,
99 weak_factory_.GetWeakPtr())); 101 weak_factory_.GetWeakPtr()));
100 } 102 }
101 103
102 void DeviceCloudPolicyStoreChromeOS::DeviceSettingsUpdated() { 104 void DeviceCloudPolicyStoreChromeOS::DeviceSettingsUpdated() {
103 if (!weak_factory_.HasWeakPtrs()) 105 if (!weak_factory_.HasWeakPtrs())
104 UpdateFromService(); 106 UpdateFromService();
105 } 107 }
106 108
107 void DeviceCloudPolicyStoreChromeOS::OnDeviceSettingsServiceShutdown() { 109 void DeviceCloudPolicyStoreChromeOS::OnDeviceSettingsServiceShutdown() {
108 device_settings_service_ = nullptr; 110 device_settings_service_ = nullptr;
109 } 111 }
110 112
111 std::unique_ptr<DeviceCloudPolicyValidator> 113 std::unique_ptr<DeviceCloudPolicyValidator>
112 DeviceCloudPolicyStoreChromeOS::CreateValidator( 114 DeviceCloudPolicyStoreChromeOS::CreateValidator(
113 const em::PolicyFetchResponse& policy) { 115 const em::PolicyFetchResponse& policy) {
114 std::unique_ptr<DeviceCloudPolicyValidator> validator( 116 std::unique_ptr<DeviceCloudPolicyValidator> validator(
115 DeviceCloudPolicyValidator::Create( 117 DeviceCloudPolicyValidator::Create(
116 std::unique_ptr<em::PolicyFetchResponse>( 118 base::MakeUnique<em::PolicyFetchResponse>(policy),
117 new em::PolicyFetchResponse(policy)),
118 background_task_runner_)); 119 background_task_runner_));
119 validator->ValidateDomain(install_attributes_->GetDomain()); 120 validator->ValidateDomain(install_attributes_->GetDomain());
120 validator->ValidatePolicyType(dm_protocol::kChromeDevicePolicyType); 121 validator->ValidatePolicyType(dm_protocol::kChromeDevicePolicyType);
121 validator->ValidatePayload(); 122 validator->ValidatePayload();
122 return validator; 123 return validator;
123 } 124 }
124 125
125 void DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated( 126 void DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated(
126 DeviceCloudPolicyValidator* validator) { 127 DeviceCloudPolicyValidator* validator) {
127 if (!validator->success()) { 128 if (!validator->success()) {
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 UMA_HISTOGRAM_BOOLEAN(kDMTokenCheckHistogram, true); 237 UMA_HISTOGRAM_BOOLEAN(kDMTokenCheckHistogram, true);
237 } else { 238 } else {
238 LOG(ERROR) << "Device policy read on enrolled device yields " 239 LOG(ERROR) << "Device policy read on enrolled device yields "
239 << "no DM token! Status: " << service_status << "."; 240 << "no DM token! Status: " << service_status << ".";
240 chromeos::StartupUtils::MarkEnrollmentRecoveryRequired(); 241 chromeos::StartupUtils::MarkEnrollmentRecoveryRequired();
241 UMA_HISTOGRAM_BOOLEAN(kDMTokenCheckHistogram, false); 242 UMA_HISTOGRAM_BOOLEAN(kDMTokenCheckHistogram, false);
242 } 243 }
243 } 244 }
244 245
245 } // namespace policy 246 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698