1// Copyright 2013 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 EXTENSIONS_COMMON_EXTENSIONS_CLIENT_H_
6#define EXTENSIONS_COMMON_EXTENSIONS_CLIENT_H_
7
8#include <string>
9
10namespace extensions {
11
12class FeatureProvider;
13class PermissionsProvider;
14
15// Sets up global state for the extensions system. Should be Set() once in each
16// process. This should be implemented by the client of the extensions system.
17class ExtensionsClient {
18 public:
19  // Returns a PermissionsProvider to initialize the permissions system.
20  virtual const PermissionsProvider& GetPermissionsProvider() const = 0;
21
22  // Gets a feature provider for a specific feature type.
23  virtual FeatureProvider* GetFeatureProviderByName(const std::string& name)
24      const = 0;
25
26  // Called at startup. Registers the handlers for parsing manifests.
27  virtual void RegisterManifestHandlers() const = 0;
28
29  // Return the extensions client.
30  static ExtensionsClient* Get();
31
32  // Initialize the extensions system with this extensions client.
33  static void Set(ExtensionsClient* client);
34};
35
36}  // namespace extensions
37
38#endif  // EXTENSIONS_COMMON_EXTENSIONS_CLIENT_H_
39