extensions_delegate.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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 ATHENA_EXTENSIONS_PUBLIC_EXTENSIONS_DELEGATE_H_
6#define ATHENA_EXTENSIONS_PUBLIC_EXTENSIONS_DELEGATE_H_
7
8#include <string>
9
10#include "athena/athena_export.h"
11
12namespace content {
13class BrowserContext;
14class WebContents;
15}
16
17namespace extensions {
18class ExtensionSet;
19}
20
21namespace athena {
22
23// A delegate interface to extension implentation.
24class ATHENA_EXPORT ExtensionsDelegate {
25 public:
26  static ExtensionsDelegate* Get(content::BrowserContext* context);
27
28  // Creates the extension delegate for app shell environment.
29  static void CreateExtensionsDelegateForShell(
30      content::BrowserContext* context);
31
32  // Creates the extension delegate for chrome environment.
33  static void CreateExtensionsDelegateForChrome(
34      content::BrowserContext* context);
35
36  // Creates the extension delegate for test environment.
37  static void CreateExtensionsDelegateForTest();
38
39  // Deletes the singleton instance. This must be called in the reverse
40  // order of the initialization.
41  static void Shutdown();
42
43  ExtensionsDelegate();
44  virtual ~ExtensionsDelegate();
45
46  virtual content::BrowserContext* GetBrowserContext() const = 0;
47
48  // Returns the set of extensions that are currently installed.
49  virtual const extensions::ExtensionSet& GetInstalledExtensions() = 0;
50
51  // Starts an application. Returns true if the application was
52  // successfully started.
53  // TODO(oshima): Add launcher source type. (see chrome_launcher_types.h)
54  virtual bool LaunchApp(const std::string& app_id) = 0;
55
56  // Unload an application. Returns true if the application was
57  // successfully unloaded.
58  virtual bool UnloadApp(const std::string& app_id) = 0;
59};
60
61}  // namespace athena
62
63#endif  // ATHENA_EXTENSIONS_PUBLIC_EXTENSIONS_DELEGATE_H_
64