1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_EXTENSION_TRACKER_H_
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_EXTENSION_TRACKER_H_
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/compiler_specific.h"
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/macros.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/policy/core/common/cloud/cloud_policy_store.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace policy {
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstruct DeviceLocalAccount;
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass SchemaRegistry;
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Helper class that keeps all the extensions that a device-local account uses
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// registered in a SchemaRegistry.
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass DeviceLocalAccountExtensionTracker : public CloudPolicyStore::Observer {
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public:
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DeviceLocalAccountExtensionTracker(
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const DeviceLocalAccount& account,
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      CloudPolicyStore* store,
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      SchemaRegistry* schema_registry);
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual ~DeviceLocalAccountExtensionTracker();
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // CloudPolicyStore::Observer:
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void OnStoreLoaded(CloudPolicyStore* store) OVERRIDE;
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void OnStoreError(CloudPolicyStore* store) OVERRIDE;
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private:
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void UpdateFromStore();
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  CloudPolicyStore* store_;
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  SchemaRegistry* schema_registry_;
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountExtensionTracker);
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace policy
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif  // CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_EXTENSION_TRACKER_H_
44