// Copyright 2014 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. #ifndef CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_EXTENSION_TRACKER_H_ #define CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_EXTENSION_TRACKER_H_ #include "base/compiler_specific.h" #include "base/macros.h" #include "components/policy/core/common/cloud/cloud_policy_store.h" namespace policy { struct DeviceLocalAccount; class SchemaRegistry; // Helper class that keeps all the extensions that a device-local account uses // registered in a SchemaRegistry. // This makes it possible to precache the policy for extensions for public // sessions before the session is started (e.g. during enrollment). // Otherwise, the ComponentCloudPolicyService would ignore the // PolicyFetchResponses from the DMServer because the SchemaRegistry for this // account doesn't have this extension "installed". class DeviceLocalAccountExtensionTracker : public CloudPolicyStore::Observer { public: DeviceLocalAccountExtensionTracker( const DeviceLocalAccount& account, CloudPolicyStore* store, SchemaRegistry* schema_registry); ~DeviceLocalAccountExtensionTracker() override; // CloudPolicyStore::Observer: void OnStoreLoaded(CloudPolicyStore* store) override; void OnStoreError(CloudPolicyStore* store) override; private: void UpdateFromStore(); CloudPolicyStore* store_; SchemaRegistry* schema_registry_; DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountExtensionTracker); }; } // namespace policy #endif // CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_EXTENSION_TRACKER_H_