// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/extensions/extension_function_registry.h" #include "chrome/browser/accessibility/accessibility_extension_api.h" #include "chrome/browser/bookmarks/bookmark_extension_api.h" #include "chrome/browser/bookmarks/bookmark_manager_extension_api.h" #include "chrome/browser/extensions/api/app/app_api.h" #include "chrome/browser/extensions/api/browsing_data/browsing_data_api.h" #include "chrome/browser/extensions/api/cloud_print_private/cloud_print_private_api.h" #include "chrome/browser/extensions/api/content_settings/content_settings_api.h" #include "chrome/browser/extensions/api/context_menu/context_menu_api.h" #include "chrome/browser/extensions/api/cookies/cookies_api.h" #include "chrome/browser/extensions/api/debugger/debugger_api.h" #include "chrome/browser/extensions/api/declarative/declarative_api.h" #include "chrome/browser/extensions/api/extension_action/extension_browser_actions_api.h" #include "chrome/browser/extensions/api/extension_action/extension_page_actions_api.h" #include "chrome/browser/extensions/api/extension_action/extension_script_badge_api.h" #include "chrome/browser/extensions/api/font_settings/font_settings_api.h" #include "chrome/browser/extensions/api/identity/identity_api.h" #include "chrome/browser/extensions/api/i18n/i18n_api.h" #include "chrome/browser/extensions/api/idle/idle_api.h" #include "chrome/browser/extensions/api/managed_mode/managed_mode_api.h" #include "chrome/browser/extensions/api/management/management_api.h" #include "chrome/browser/extensions/api/metrics/metrics.h" #include "chrome/browser/extensions/api/offscreen_tabs/offscreen_tabs_api.h" #include "chrome/browser/extensions/api/omnibox/omnibox_api.h" #include "chrome/browser/extensions/api/page_capture/page_capture_api.h" #include "chrome/browser/extensions/api/permissions/permissions_api.h" #include "chrome/browser/extensions/api/record/record_api.h" #include "chrome/browser/extensions/api/runtime/runtime_api.h" #include "chrome/browser/extensions/api/serial/serial_api.h" #include "chrome/browser/extensions/api/socket/socket_api.h" #include "chrome/browser/extensions/api/tabs/execute_code_in_tab_function.h" #include "chrome/browser/extensions/api/tabs/tabs.h" #include "chrome/browser/extensions/api/test/test_api.h" #include "chrome/browser/extensions/api/web_navigation/web_navigation_api.h" #include "chrome/browser/extensions/api/web_request/web_request_api.h" #include "chrome/browser/extensions/api/web_socket_proxy_private/web_socket_proxy_private_api.h" #include "chrome/browser/extensions/api/webstore_private/webstore_private_api.h" #include "chrome/browser/extensions/extension_module.h" #include "chrome/browser/extensions/extension_preference_api.h" #include "chrome/browser/extensions/extension_processes_api.h" #include "chrome/browser/extensions/settings/settings_api.h" #include "chrome/browser/extensions/system/system_api.h" #include "chrome/browser/history/history_extension_api.h" #include "chrome/browser/history/top_sites_extension_api.h" #include "chrome/browser/infobars/infobar_extension_api.h" #include "chrome/browser/rlz/rlz_extension_api.h" #include "chrome/browser/speech/extension_api/tts_engine_extension_api.h" #include "chrome/browser/speech/extension_api/tts_extension_api.h" #include "chrome/browser/speech/speech_input_extension_api.h" #include "chrome/common/extensions/api/generated_api.h" #if defined(TOOLKIT_VIEWS) #include "chrome/browser/extensions/extension_input_api.h" #endif #if defined(OS_CHROMEOS) #include "chrome/browser/chromeos/extensions/echo_private_api.h" #include "chrome/browser/chromeos/extensions/file_browser_handler_api.h" #include "chrome/browser/chromeos/extensions/file_browser_private_api.h" #include "chrome/browser/chromeos/extensions/wallpaper_private_api.h" #include "chrome/browser/chromeos/media/media_player_extension_api.h" #include "chrome/browser/extensions/api/input_ime/input_ime_api.h" #include "chrome/browser/extensions/api/terminal/terminal_private_api.h" #include "chrome/browser/extensions/extension_info_private_api_chromeos.h" #include "chrome/browser/extensions/extension_input_method_api.h" #endif // static ExtensionFunctionRegistry* ExtensionFunctionRegistry::GetInstance() { return Singleton::get(); } ExtensionFunctionRegistry::ExtensionFunctionRegistry() { ResetFunctions(); } ExtensionFunctionRegistry::~ExtensionFunctionRegistry() { } void ExtensionFunctionRegistry::ResetFunctions() { #if defined(ENABLE_EXTENSIONS) // Register all functions here. // Windows RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Tabs RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Page Actions. RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Browser Actions. RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Script Badges. RegisterFunction(); RegisterFunction(); RegisterFunction(); // Browsing Data. RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Bookmarks. RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Infobars. RegisterFunction(); // BookmarkManager RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // History RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Idle RegisterFunction(); // I18N. RegisterFunction(); // Processes. RegisterFunction(); RegisterFunction(); RegisterFunction(); // Metrics. RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // RLZ. #if defined(OS_WIN) || defined(OS_MACOSX) RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); #endif // Cookies. RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Test. RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Record. RegisterFunction(); RegisterFunction(); // Accessibility. RegisterFunction(); RegisterFunction(); RegisterFunction(); // Text-to-speech. RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Context Menus. RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Omnibox. RegisterFunction(); RegisterFunction(); #if defined(ENABLE_INPUT_SPEECH) // Speech input. RegisterFunction(); RegisterFunction(); RegisterFunction(); #endif #if defined(TOOLKIT_VIEWS) // Input. RegisterFunction(); #endif #if defined(OS_CHROMEOS) // IME RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); #endif // Managed mode. RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Management. RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Extension module. RegisterFunction(); RegisterFunction(); RegisterFunction(); // WebstorePrivate. RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // WebNavigation. RegisterFunction(); RegisterFunction(); // WebRequest. RegisterFunction(); RegisterFunction(); RegisterFunction(); // Preferences. RegisterFunction(); RegisterFunction(); RegisterFunction(); // ChromeOS-specific part of the API. #if defined(OS_CHROMEOS) // Device Customization. RegisterFunction(); // FileBrowserPrivate functions. // TODO(jamescook): Expose these on non-ChromeOS platforms so we can use // the extension-based file picker on Aura. crbug.com/97424 RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // FileBrowserHandler. RegisterFunction(); // Mediaplayer RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // WallpaperManagerPrivate functions. RegisterFunction(); RegisterFunction(); // InputMethod RegisterFunction(); // Echo RegisterFunction(); // Terminal RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); #endif // Websocket to TCP proxy. Currently noop on anything other than ChromeOS. RegisterFunction< extensions::WebSocketProxyPrivateGetPassportForTCPFunction>(); RegisterFunction(); // Debugger RegisterFunction(); RegisterFunction(); RegisterFunction(); // Settings RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Content settings. RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Font settings. RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // CloudPrint settings. RegisterFunction(); // Experimental App API. RegisterFunction(); RegisterFunction(); // Permissions RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // PageCapture RegisterFunction(); // TopSites RegisterFunction(); // Serial RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Sockets RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // System RegisterFunction(); RegisterFunction(); // Net RegisterFunction(); RegisterFunction(); RegisterFunction(); // Experimental Offscreen Tabs RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); RegisterFunction(); // Runtime RegisterFunction(); // Generated APIs extensions::api::GeneratedFunctionRegistry::RegisterAll(this); #endif // defined(ENABLE_EXTENSIONS) } void ExtensionFunctionRegistry::GetAllNames(std::vector* names) { for (FactoryMap::iterator iter = factories_.begin(); iter != factories_.end(); ++iter) { names->push_back(iter->first); } } bool ExtensionFunctionRegistry::OverrideFunction( const std::string& name, ExtensionFunctionFactory factory) { FactoryMap::iterator iter = factories_.find(name); if (iter == factories_.end()) { return false; } else { iter->second = factory; return true; } } ExtensionFunction* ExtensionFunctionRegistry::NewFunction( const std::string& name) { FactoryMap::iterator iter = factories_.find(name); DCHECK(iter != factories_.end()); ExtensionFunction* function = iter->second(); function->set_name(name); return function; }