Home | History | Annotate | Download | only in extensions
      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 {
     22   ~GetAllExtensionsFunction() {}
     23   virtual bool RunImpl();
     24   DECLARE_EXTENSION_FUNCTION_NAME("management.getAll");
     25 };
     26 
     27 class GetExtensionByIdFunction : public ExtensionManagementFunction {
     28   ~GetExtensionByIdFunction() {}
     29   virtual bool RunImpl();
     30   DECLARE_EXTENSION_FUNCTION_NAME("management.get");
     31 };
     32 
     33 class LaunchAppFunction : public ExtensionManagementFunction {
     34   ~LaunchAppFunction() {}
     35   virtual bool RunImpl();
     36   DECLARE_EXTENSION_FUNCTION_NAME("management.launchApp");
     37 };
     38 
     39 class SetEnabledFunction : public ExtensionManagementFunction {
     40   ~SetEnabledFunction() {}
     41   virtual bool RunImpl();
     42   DECLARE_EXTENSION_FUNCTION_NAME("management.setEnabled");
     43 };
     44 
     45 class UninstallFunction : public ExtensionManagementFunction {
     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