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