schema_registry_service.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef CHROME_BROWSER_POLICY_SCHEMA_REGISTRY_SERVICE_H_
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define CHROME_BROWSER_POLICY_SCHEMA_REGISTRY_SERVICE_H_
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/basictypes.h"
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/compiler_specific.h"
10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/core/keyed_service.h"
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/schema_registry.h"
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace policy {
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class Schema;
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// A SchemaRegistry that is also a KeyedService, and is associated
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// with a Profile.
19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class SchemaRegistryService : public SchemaRegistry, public KeyedService {
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public:
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // This SchemaRegistry will initially contain only the |chrome_schema|, if
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // it's valid. The optional |global_registry| must outlive this, and will
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // track this registry.
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SchemaRegistryService(const Schema& chrome_schema,
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                        CombinedSchemaRegistry* global_registry);
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual ~SchemaRegistryService();
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // KeyedService:
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void Shutdown() OVERRIDE;
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private:
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  CombinedSchemaRegistry* global_registry_;
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(SchemaRegistryService);
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace policy
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif  // CHROME_BROWSER_POLICY_SCHEMA_REGISTRY_SERVICE_H_
40