| Index: chrome/browser/policy/device_cloud_policy_store_chromeos.cc
|
| diff --git a/chrome/browser/policy/device_cloud_policy_store_chromeos.cc b/chrome/browser/policy/device_cloud_policy_store_chromeos.cc
|
| deleted file mode 100644
|
| index 0c68734b4c9100d0c42a1e30a58159f6a41f1580..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/policy/device_cloud_policy_store_chromeos.cc
|
| +++ /dev/null
|
| @@ -1,163 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/policy/device_cloud_policy_store_chromeos.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "chrome/browser/policy/device_policy_decoder_chromeos.h"
|
| -#include "chrome/browser/policy/enterprise_install_attributes.h"
|
| -#include "chrome/browser/policy/proto/chrome_device_policy.pb.h"
|
| -#include "chrome/browser/policy/proto/device_management_backend.pb.h"
|
| -
|
| -namespace em = enterprise_management;
|
| -
|
| -namespace policy {
|
| -
|
| -DeviceCloudPolicyStoreChromeOS::DeviceCloudPolicyStoreChromeOS(
|
| - chromeos::DeviceSettingsService* device_settings_service,
|
| - EnterpriseInstallAttributes* install_attributes)
|
| - : device_settings_service_(device_settings_service),
|
| - install_attributes_(install_attributes),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
|
| - device_settings_service_->AddObserver(this);
|
| -}
|
| -
|
| -DeviceCloudPolicyStoreChromeOS::~DeviceCloudPolicyStoreChromeOS() {
|
| - device_settings_service_->RemoveObserver(this);
|
| -}
|
| -
|
| -void DeviceCloudPolicyStoreChromeOS::Store(
|
| - const em::PolicyFetchResponse& policy) {
|
| - // Cancel all pending requests.
|
| - weak_factory_.InvalidateWeakPtrs();
|
| -
|
| - scoped_refptr<chromeos::OwnerKey> owner_key(
|
| - device_settings_service_->GetOwnerKey());
|
| - if (!install_attributes_->IsEnterpriseDevice() ||
|
| - !device_settings_service_->policy_data() ||
|
| - !owner_key || !owner_key->public_key()) {
|
| - status_ = STATUS_BAD_STATE;
|
| - NotifyStoreError();
|
| - return;
|
| - }
|
| -
|
| - scoped_ptr<DeviceCloudPolicyValidator> validator(CreateValidator(policy));
|
| - validator->ValidateSignature(*owner_key->public_key(), true);
|
| - validator->ValidateAgainstCurrentPolicy(
|
| - device_settings_service_->policy_data(),
|
| - CloudPolicyValidatorBase::TIMESTAMP_REQUIRED,
|
| - CloudPolicyValidatorBase::DM_TOKEN_REQUIRED);
|
| - validator.release()->StartValidation(
|
| - base::Bind(&DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated,
|
| - weak_factory_.GetWeakPtr()));
|
| -}
|
| -
|
| -void DeviceCloudPolicyStoreChromeOS::Load() {
|
| - device_settings_service_->Load();
|
| -}
|
| -
|
| -void DeviceCloudPolicyStoreChromeOS::InstallInitialPolicy(
|
| - const em::PolicyFetchResponse& policy) {
|
| - // Cancel all pending requests.
|
| - weak_factory_.InvalidateWeakPtrs();
|
| -
|
| - if (!install_attributes_->IsEnterpriseDevice() &&
|
| - device_settings_service_->status() !=
|
| - chromeos::DeviceSettingsService::STORE_NO_POLICY) {
|
| - status_ = STATUS_BAD_STATE;
|
| - NotifyStoreError();
|
| - return;
|
| - }
|
| -
|
| - scoped_ptr<DeviceCloudPolicyValidator> validator(CreateValidator(policy));
|
| - validator->ValidateInitialKey();
|
| - validator.release()->StartValidation(
|
| - base::Bind(&DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated,
|
| - weak_factory_.GetWeakPtr()));
|
| -}
|
| -
|
| -void DeviceCloudPolicyStoreChromeOS::OwnershipStatusChanged() {
|
| - // Nothing to do.
|
| -}
|
| -
|
| -void DeviceCloudPolicyStoreChromeOS::DeviceSettingsUpdated() {
|
| - if (!weak_factory_.HasWeakPtrs())
|
| - UpdateFromService();
|
| -}
|
| -
|
| -scoped_ptr<DeviceCloudPolicyValidator>
|
| - DeviceCloudPolicyStoreChromeOS::CreateValidator(
|
| - const em::PolicyFetchResponse& policy) {
|
| - scoped_ptr<DeviceCloudPolicyValidator> validator(
|
| - DeviceCloudPolicyValidator::Create(
|
| - scoped_ptr<em::PolicyFetchResponse>(
|
| - new em::PolicyFetchResponse(policy))));
|
| - validator->ValidateDomain(install_attributes_->GetDomain());
|
| - validator->ValidatePolicyType(dm_protocol::kChromeDevicePolicyType);
|
| - validator->ValidatePayload();
|
| - return validator.Pass();
|
| -}
|
| -
|
| -void DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated(
|
| - DeviceCloudPolicyValidator* validator) {
|
| - if (!validator->success()) {
|
| - status_ = STATUS_VALIDATION_ERROR;
|
| - validation_status_ = validator->status();
|
| - NotifyStoreError();
|
| - return;
|
| - }
|
| -
|
| - device_settings_service_->Store(
|
| - validator->policy().Pass(),
|
| - base::Bind(&DeviceCloudPolicyStoreChromeOS::OnPolicyStored,
|
| - weak_factory_.GetWeakPtr()));
|
| -}
|
| -
|
| -void DeviceCloudPolicyStoreChromeOS::OnPolicyStored() {
|
| - UpdateFromService();
|
| -}
|
| -
|
| -void DeviceCloudPolicyStoreChromeOS::UpdateFromService() {
|
| - if (!install_attributes_->IsEnterpriseDevice()) {
|
| - status_ = STATUS_BAD_STATE;
|
| - NotifyStoreError();
|
| - return;
|
| - }
|
| -
|
| - switch (device_settings_service_->status()) {
|
| - case chromeos::DeviceSettingsService::STORE_SUCCESS: {
|
| - status_ = STATUS_OK;
|
| - policy_.reset(new em::PolicyData());
|
| - if (device_settings_service_->policy_data())
|
| - policy_->MergeFrom(*device_settings_service_->policy_data());
|
| -
|
| - PolicyMap new_policy_map;
|
| - if (is_managed()) {
|
| - DecodeDevicePolicy(*device_settings_service_->device_settings(),
|
| - &new_policy_map, install_attributes_);
|
| - }
|
| - policy_map_.Swap(&new_policy_map);
|
| -
|
| - NotifyStoreLoaded();
|
| - return;
|
| - }
|
| - case chromeos::DeviceSettingsService::STORE_KEY_UNAVAILABLE:
|
| - status_ = STATUS_BAD_STATE;
|
| - break;
|
| - case chromeos::DeviceSettingsService::STORE_POLICY_ERROR:
|
| - case chromeos::DeviceSettingsService::STORE_OPERATION_FAILED:
|
| - status_ = STATUS_STORE_ERROR;
|
| - break;
|
| - case chromeos::DeviceSettingsService::STORE_NO_POLICY:
|
| - case chromeos::DeviceSettingsService::STORE_INVALID_POLICY:
|
| - case chromeos::DeviceSettingsService::STORE_VALIDATION_ERROR:
|
| - case chromeos::DeviceSettingsService::STORE_TEMP_VALIDATION_ERROR:
|
| - status_ = STATUS_LOAD_ERROR;
|
| - break;
|
| - }
|
| -
|
| - NotifyStoreError();
|
| -}
|
| -
|
| -} // namespace policy
|
|
|