1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file. 4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 5bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_API_H__ 6bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#define CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_API_H__ 7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#pragma once 8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/singleton.h" 10bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/extensions/extension_function.h" 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/notification_observer.h" 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/notification_registrar.h" 13bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 1421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenclass ExtensionService; 15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ExtensionManagementFunction : public SyncExtensionFunction { 17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen protected: 1821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ExtensionService* service(); 19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass GetAllExtensionsFunction : public ExtensionManagementFunction { 22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ~GetAllExtensionsFunction() {} 23bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual bool RunImpl(); 24731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick DECLARE_EXTENSION_FUNCTION_NAME("management.getAll"); 25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 27513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass GetExtensionByIdFunction : public ExtensionManagementFunction { 28513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch ~GetExtensionByIdFunction() {} 29513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual bool RunImpl(); 30513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch DECLARE_EXTENSION_FUNCTION_NAME("management.get"); 31513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch}; 32513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 33bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass LaunchAppFunction : public ExtensionManagementFunction { 34bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ~LaunchAppFunction() {} 35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual bool RunImpl(); 36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick DECLARE_EXTENSION_FUNCTION_NAME("management.launchApp"); 37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 38bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass SetEnabledFunction : public ExtensionManagementFunction { 40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ~SetEnabledFunction() {} 41bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual bool RunImpl(); 42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick DECLARE_EXTENSION_FUNCTION_NAME("management.setEnabled"); 43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 45bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass UninstallFunction : public ExtensionManagementFunction { 46bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ~UninstallFunction() {} 47bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual bool RunImpl(); 48731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick DECLARE_EXTENSION_FUNCTION_NAME("management.uninstall"); 49bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 50bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 51bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ExtensionManagementEventRouter : public NotificationObserver { 52bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public: 53bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Get the singleton instance of the event router. 54bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen static ExtensionManagementEventRouter* GetInstance(); 55bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 56bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Performs one-time initialization of our singleton. 57bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void Init(); 58bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 59bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private: 60bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen friend struct DefaultSingletonTraits<ExtensionManagementEventRouter>; 61bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 62bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ExtensionManagementEventRouter(); 63bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual ~ExtensionManagementEventRouter(); 64bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 65bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // NotificationObserver implementation. 66bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual void Observe(NotificationType type, 67bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const NotificationSource& source, 68bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const NotificationDetails& details); 69bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 70bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen NotificationRegistrar registrar_; 71bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 72bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen DISALLOW_COPY_AND_ASSIGN(ExtensionManagementEventRouter); 73bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 74bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 75bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_API_H__ 76