1// Copyright 2014 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_LOCAL_ACCOUNT_EXTENSION_TRACKER_H_
6#define CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_EXTENSION_TRACKER_H_
7
8#include "base/compiler_specific.h"
9#include "base/macros.h"
10#include "components/policy/core/common/cloud/cloud_policy_store.h"
11
12namespace policy {
13
14struct DeviceLocalAccount;
15class SchemaRegistry;
16
17// Helper class that keeps all the extensions that a device-local account uses
18// registered in a SchemaRegistry.
19class DeviceLocalAccountExtensionTracker : public CloudPolicyStore::Observer {
20 public:
21  DeviceLocalAccountExtensionTracker(
22      const DeviceLocalAccount& account,
23      CloudPolicyStore* store,
24      SchemaRegistry* schema_registry);
25
26  virtual ~DeviceLocalAccountExtensionTracker();
27
28  // CloudPolicyStore::Observer:
29  virtual void OnStoreLoaded(CloudPolicyStore* store) OVERRIDE;
30  virtual void OnStoreError(CloudPolicyStore* store) OVERRIDE;
31
32 private:
33  void UpdateFromStore();
34
35  CloudPolicyStore* store_;
36  SchemaRegistry* schema_registry_;
37
38  DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountExtensionTracker);
39};
40
41}  // namespace policy
42
43#endif  // CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_EXTENSION_TRACKER_H_
44