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 14class ExtensionService; 15 16class ExtensionManagementFunction : public SyncExtensionFunction { 17 protected: 18 ExtensionService* service(); 19}; 20 21class GetAllExtensionsFunction : public ExtensionManagementFunction { 22 ~GetAllExtensionsFunction() {} 23 virtual bool RunImpl(); 24 DECLARE_EXTENSION_FUNCTION_NAME("management.getAll"); 25}; 26 27class GetExtensionByIdFunction : public ExtensionManagementFunction { 28 ~GetExtensionByIdFunction() {} 29 virtual bool RunImpl(); 30 DECLARE_EXTENSION_FUNCTION_NAME("management.get"); 31}; 32 33class LaunchAppFunction : public ExtensionManagementFunction { 34 ~LaunchAppFunction() {} 35 virtual bool RunImpl(); 36 DECLARE_EXTENSION_FUNCTION_NAME("management.launchApp"); 37}; 38 39class SetEnabledFunction : public ExtensionManagementFunction { 40 ~SetEnabledFunction() {} 41 virtual bool RunImpl(); 42 DECLARE_EXTENSION_FUNCTION_NAME("management.setEnabled"); 43}; 44 45class UninstallFunction : public ExtensionManagementFunction { 46 ~UninstallFunction() {} 47 virtual bool RunImpl(); 48 DECLARE_EXTENSION_FUNCTION_NAME("management.uninstall"); 49}; 50 51class 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