• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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 CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_API_H__
6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_API_H__
7 #pragma once
8 
9 #include "base/memory/singleton.h"
10 #include "chrome/browser/extensions/extension_function.h"
11 #include "content/common/notification_observer.h"
12 #include "content/common/notification_registrar.h"
13 
14 class ExtensionService;
15 
16 class ExtensionManagementFunction : public SyncExtensionFunction {
17  protected:
18   ExtensionService* service();
19 };
20 
21 class GetAllExtensionsFunction : public ExtensionManagementFunction {
~GetAllExtensionsFunction()22   ~GetAllExtensionsFunction() {}
23   virtual bool RunImpl();
24   DECLARE_EXTENSION_FUNCTION_NAME("management.getAll");
25 };
26 
27 class GetExtensionByIdFunction : public ExtensionManagementFunction {
~GetExtensionByIdFunction()28   ~GetExtensionByIdFunction() {}
29   virtual bool RunImpl();
30   DECLARE_EXTENSION_FUNCTION_NAME("management.get");
31 };
32 
33 class LaunchAppFunction : public ExtensionManagementFunction {
~LaunchAppFunction()34   ~LaunchAppFunction() {}
35   virtual bool RunImpl();
36   DECLARE_EXTENSION_FUNCTION_NAME("management.launchApp");
37 };
38 
39 class SetEnabledFunction : public ExtensionManagementFunction {
~SetEnabledFunction()40   ~SetEnabledFunction() {}
41   virtual bool RunImpl();
42   DECLARE_EXTENSION_FUNCTION_NAME("management.setEnabled");
43 };
44 
45 class UninstallFunction : public ExtensionManagementFunction {
~UninstallFunction()46   ~UninstallFunction() {}
47   virtual bool RunImpl();
48   DECLARE_EXTENSION_FUNCTION_NAME("management.uninstall");
49 };
50 
51 class ExtensionManagementEventRouter : public NotificationObserver {
52  public:
53   // Get the singleton instance of the event router.
54   static ExtensionManagementEventRouter* GetInstance();
55 
56   // Performs one-time initialization of our singleton.
57   void Init();
58 
59  private:
60   friend struct DefaultSingletonTraits<ExtensionManagementEventRouter>;
61 
62   ExtensionManagementEventRouter();
63   virtual ~ExtensionManagementEventRouter();
64 
65   // NotificationObserver implementation.
66   virtual void Observe(NotificationType type,
67                        const NotificationSource& source,
68                        const NotificationDetails& details);
69 
70   NotificationRegistrar registrar_;
71 
72   DISALLOW_COPY_AND_ASSIGN(ExtensionManagementEventRouter);
73 };
74 
75 #endif  // CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_API_H__
76