device_cloud_policy_store_chromeos.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
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 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_CLOUD_POLICY_STORE_CHROMEOS_H_ 6#define CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_CLOUD_POLICY_STORE_CHROMEOS_H_ 7 8#include "base/basictypes.h" 9#include "base/compiler_specific.h" 10#include "base/memory/ref_counted.h" 11#include "base/memory/scoped_ptr.h" 12#include "base/memory/weak_ptr.h" 13#include "chrome/browser/chromeos/policy/device_cloud_policy_validator.h" 14#include "chrome/browser/chromeos/settings/device_settings_service.h" 15#include "components/policy/core/common/cloud/cloud_policy_store.h" 16 17namespace base { 18class SequencedTaskRunner; 19} 20 21namespace enterprise_management { 22class PolicyFetchResponse; 23} 24 25namespace policy { 26 27class EnterpriseInstallAttributes; 28 29// CloudPolicyStore implementation for device policy on Chrome OS. Policy is 30// stored/loaded via DBus to/from session_manager. 31class DeviceCloudPolicyStoreChromeOS 32 : public CloudPolicyStore, 33 public chromeos::DeviceSettingsService::Observer { 34 public: 35 DeviceCloudPolicyStoreChromeOS( 36 chromeos::DeviceSettingsService* device_settings_service, 37 EnterpriseInstallAttributes* install_attributes, 38 scoped_refptr<base::SequencedTaskRunner> background_task_runner); 39 virtual ~DeviceCloudPolicyStoreChromeOS(); 40 41 // CloudPolicyStore: 42 virtual void Store( 43 const enterprise_management::PolicyFetchResponse& policy) OVERRIDE; 44 virtual void Load() OVERRIDE; 45 46 // Installs initial policy. This is different from Store() in that it skips 47 // the signature validation step against already-installed policy. The checks 48 // against installation-time attributes are performed nevertheless. The result 49 // of the operation is reported through the OnStoreLoaded() or OnStoreError() 50 // observer callbacks. 51 void InstallInitialPolicy( 52 const enterprise_management::PolicyFetchResponse& policy); 53 54 // chromeos::DeviceSettingsService::Observer: 55 virtual void OwnershipStatusChanged() OVERRIDE; 56 virtual void DeviceSettingsUpdated() OVERRIDE; 57 58 private: 59 // Create a validator for |policy| with basic device policy configuration and 60 // OnPolicyStored() as the completion callback. 61 scoped_ptr<DeviceCloudPolicyValidator> CreateValidator( 62 const enterprise_management::PolicyFetchResponse& policy); 63 64 // Called on completion on the policy validation prior to storing policy. 65 // Starts the actual store operation. 66 void OnPolicyToStoreValidated(DeviceCloudPolicyValidator* validator); 67 68 // Handles store completion operations updates status. 69 void OnPolicyStored(); 70 71 // Re-syncs policy and status from |device_settings_service_|. 72 void UpdateFromService(); 73 74 chromeos::DeviceSettingsService* device_settings_service_; 75 EnterpriseInstallAttributes* install_attributes_; 76 77 scoped_refptr<base::SequencedTaskRunner> background_task_runner_; 78 79 // Whether enterprise enrollment validation has yet been done. 80 bool enrollment_validation_done_; 81 82 base::WeakPtrFactory<DeviceCloudPolicyStoreChromeOS> weak_factory_; 83 84 DISALLOW_COPY_AND_ASSIGN(DeviceCloudPolicyStoreChromeOS); 85}; 86 87} // namespace policy 88 89#endif // CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_CLOUD_POLICY_STORE_CHROMEOS_H_ 90