schema_registry_service.h revision f2477e01787aa58f445919b809d89e252beef54f
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"
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/browser_context_keyed_service/browser_context_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)
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// A SchemaRegistry that is also a BrowserContextKeyedService, and is associated
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// with a Profile.
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class SchemaRegistryService : public SchemaRegistry,
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                              public BrowserContextKeyedService {
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public:
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // This SchemaRegistry will initially contain only the |chrome_schema|, if
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // it's valid. The optional |global_registry| must outlive this, and will
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // track this registry.
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SchemaRegistryService(const Schema& chrome_schema,
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                        CombinedSchemaRegistry* global_registry);
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual ~SchemaRegistryService();
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // BrowserContextKeyedService:
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void Shutdown() OVERRIDE;
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private:
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  CombinedSchemaRegistry* global_registry_;
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(SchemaRegistryService);
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace policy
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif  // CHROME_BROWSER_POLICY_SCHEMA_REGISTRY_SERVICE_H_
41