Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / athena / extensions / public / extensions_delegate.h
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
12 namespace content {
13 class BrowserContext;
14 class WebContents;
15 }
16
17 namespace extensions {
18 class ExtensionSet;
19 }
20
21 namespace athena {
22
23 // A delegate interface to extension implentation.
24 class 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_