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

Unified Diff: chrome/browser/policy/device_cloud_policy_store_chromeos.cc

Issue 12189011: Split up chrome/browser/policy subdirectory (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase, add chrome/browser/chromeos/policy/OWNERS Created 7 years, 9 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698