| Index: chrome/browser/extensions/extension_function_dispatcher.cc
|
| ===================================================================
|
| --- chrome/browser/extensions/extension_function_dispatcher.cc (revision 127187)
|
| +++ chrome/browser/extensions/extension_function_dispatcher.cc (working copy)
|
| @@ -8,19 +8,64 @@
|
|
|
| #include "base/json/json_string_value_serializer.h"
|
| #include "base/memory/ref_counted.h"
|
| +#include "base/memory/singleton.h"
|
| #include "base/process_util.h"
|
| #include "base/values.h"
|
| #include "build/build_config.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/download/download_extension_api.h"
|
| +#include "chrome/browser/extensions/api/app/app_api.h"
|
| +#include "chrome/browser/extensions/api/browsingdata/browsing_data_api.h"
|
| +#include "chrome/browser/extensions/api/declarative/declarative_api.h"
|
| +#include "chrome/browser/extensions/api/dns/dns_api.h"
|
| +#include "chrome/browser/extensions/api/permissions/permissions_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/webrequest/webrequest_api.h"
|
| +#include "chrome/browser/extensions/execute_code_in_tab_function.h"
|
| #include "chrome/browser/extensions/extension_activity_log.h"
|
| +#include "chrome/browser/extensions/extension_browser_actions_api.h"
|
| +#include "chrome/browser/extensions/extension_chrome_auth_private_api.h"
|
| +#include "chrome/browser/extensions/extension_content_settings_api.h"
|
| +#include "chrome/browser/extensions/extension_context_menu_api.h"
|
| +#include "chrome/browser/extensions/extension_cookies_api.h"
|
| +#include "chrome/browser/extensions/extension_debugger_api.h"
|
| +#include "chrome/browser/extensions/extension_font_settings_api.h"
|
| #include "chrome/browser/extensions/extension_function.h"
|
| -#include "chrome/browser/extensions/extension_function_registry.h"
|
| +#include "chrome/browser/extensions/extension_i18n_api.h"
|
| +#include "chrome/browser/extensions/extension_idle_api.h"
|
| +#include "chrome/browser/extensions/extension_managed_mode_api.h"
|
| +#include "chrome/browser/extensions/extension_management_api.h"
|
| +#include "chrome/browser/extensions/extension_metrics_module.h"
|
| +#include "chrome/browser/extensions/extension_module.h"
|
| +#include "chrome/browser/extensions/extension_omnibox_api.h"
|
| +#include "chrome/browser/extensions/extension_page_actions_module.h"
|
| +#include "chrome/browser/extensions/extension_page_capture_api.h"
|
| +#include "chrome/browser/extensions/extension_preference_api.h"
|
| +#include "chrome/browser/extensions/extension_processes_api.h"
|
| #include "chrome/browser/extensions/extension_service.h"
|
| +#include "chrome/browser/extensions/extension_tabs_module.h"
|
| +#include "chrome/browser/extensions/extension_test_api.h"
|
| +#include "chrome/browser/extensions/extension_tts_api.h"
|
| +#include "chrome/browser/extensions/extension_tts_engine_api.h"
|
| +#include "chrome/browser/extensions/extension_web_socket_proxy_private_api.h"
|
| #include "chrome/browser/extensions/extension_web_ui.h"
|
| +#include "chrome/browser/extensions/extension_webnavigation_api.h"
|
| +#include "chrome/browser/extensions/extension_webstore_private_api.h"
|
| #include "chrome/browser/extensions/extensions_quota_service.h"
|
| #include "chrome/browser/extensions/process_map.h"
|
| +#include "chrome/browser/extensions/settings/settings_api.h"
|
| +#include "chrome/browser/extensions/system/system_api.h"
|
| #include "chrome/browser/external_protocol/external_protocol_handler.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/profiles/profile.h"
|
| #include "chrome/browser/renderer_host/chrome_render_message_filter.h"
|
| +#include "chrome/browser/rlz/rlz_extension_api.h"
|
| +#include "chrome/browser/speech/speech_input_extension_api.h"
|
| #include "chrome/browser/ui/browser_list.h"
|
| #include "chrome/browser/ui/browser_window.h"
|
| #include "chrome/common/extensions/api/extension_api.h"
|
| @@ -33,12 +78,484 @@
|
| #include "ipc/ipc_message_macros.h"
|
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h"
|
| #include "third_party/skia/include/core/SkBitmap.h"
|
| -#include "webkit/glue/resource_type.h"
|
|
|
| +#if defined(TOOLKIT_VIEWS)
|
| +#include "chrome/browser/extensions/extension_input_api.h"
|
| +#endif
|
| +
|
| +#if defined(OS_CHROMEOS) && defined(USE_VIRTUAL_KEYBOARD)
|
| +#include "chrome/browser/extensions/extension_input_ui_api.h"
|
| +#endif
|
| +
|
| +#if defined(OS_CHROMEOS)
|
| +#include "chrome/browser/chromeos/extensions/file_browser_private_api.h"
|
| +#include "chrome/browser/chromeos/media/media_player_extension_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_ime_api.h"
|
| +#include "chrome/browser/extensions/extension_input_method_api.h"
|
| +#endif
|
| +
|
| using extensions::ExtensionAPI;
|
| using content::RenderViewHost;
|
| using WebKit::WebSecurityOrigin;
|
|
|
| +// FactoryRegistry -------------------------------------------------------------
|
| +
|
| +namespace {
|
| +
|
| +// Template for defining ExtensionFunctionFactory.
|
| +template<class T>
|
| +ExtensionFunction* NewExtensionFunction() {
|
| + return new T();
|
| +}
|
| +
|
| +// Contains a list of all known extension functions and allows clients to
|
| +// create instances of them.
|
| +class FactoryRegistry {
|
| + public:
|
| + static FactoryRegistry* GetInstance();
|
| + FactoryRegistry() { ResetFunctions(); }
|
| +
|
| + // Resets all functions to their default values.
|
| + void ResetFunctions();
|
| +
|
| + // Adds all function names to 'names'.
|
| + void GetAllNames(std::vector<std::string>* names);
|
| +
|
| + // Allows overriding of specific functions (e.g. for testing). Functions
|
| + // must be previously registered. Returns true if successful.
|
| + bool OverrideFunction(const std::string& name,
|
| + ExtensionFunctionFactory factory);
|
| +
|
| + // Factory method for the ExtensionFunction registered as 'name'.
|
| + ExtensionFunction* NewFunction(const std::string& name);
|
| +
|
| + private:
|
| + template<class T>
|
| + void RegisterFunction() {
|
| + factories_[T::function_name()] = &NewExtensionFunction<T>;
|
| + }
|
| +
|
| + typedef std::map<std::string, ExtensionFunctionFactory> FactoryMap;
|
| + FactoryMap factories_;
|
| +};
|
| +
|
| +FactoryRegistry* FactoryRegistry::GetInstance() {
|
| + return Singleton<FactoryRegistry>::get();
|
| +}
|
| +
|
| +void FactoryRegistry::ResetFunctions() {
|
| + // Register all functions here.
|
| +
|
| + // Windows
|
| + RegisterFunction<GetWindowFunction>();
|
| + RegisterFunction<GetCurrentWindowFunction>();
|
| + RegisterFunction<GetLastFocusedWindowFunction>();
|
| + RegisterFunction<GetAllWindowsFunction>();
|
| + RegisterFunction<CreateWindowFunction>();
|
| + RegisterFunction<UpdateWindowFunction>();
|
| + RegisterFunction<RemoveWindowFunction>();
|
| +
|
| + // Tabs
|
| + RegisterFunction<GetTabFunction>();
|
| + RegisterFunction<GetCurrentTabFunction>();
|
| + RegisterFunction<GetSelectedTabFunction>();
|
| + RegisterFunction<GetAllTabsInWindowFunction>();
|
| + RegisterFunction<QueryTabsFunction>();
|
| + RegisterFunction<HighlightTabsFunction>();
|
| + RegisterFunction<CreateTabFunction>();
|
| + RegisterFunction<UpdateTabFunction>();
|
| + RegisterFunction<MoveTabsFunction>();
|
| + RegisterFunction<ReloadTabFunction>();
|
| + RegisterFunction<RemoveTabsFunction>();
|
| + RegisterFunction<DetectTabLanguageFunction>();
|
| + RegisterFunction<CaptureVisibleTabFunction>();
|
| + RegisterFunction<TabsExecuteScriptFunction>();
|
| + RegisterFunction<TabsInsertCSSFunction>();
|
| +
|
| + // Page Actions.
|
| + RegisterFunction<EnablePageActionFunction>();
|
| + RegisterFunction<DisablePageActionFunction>();
|
| + RegisterFunction<PageActionShowFunction>();
|
| + RegisterFunction<PageActionHideFunction>();
|
| + RegisterFunction<PageActionSetIconFunction>();
|
| + RegisterFunction<PageActionSetTitleFunction>();
|
| + RegisterFunction<PageActionSetPopupFunction>();
|
| +
|
| + // Browser Actions.
|
| + RegisterFunction<BrowserActionSetIconFunction>();
|
| + RegisterFunction<BrowserActionSetTitleFunction>();
|
| + RegisterFunction<BrowserActionSetBadgeTextFunction>();
|
| + RegisterFunction<BrowserActionSetBadgeBackgroundColorFunction>();
|
| + RegisterFunction<BrowserActionSetPopupFunction>();
|
| +
|
| + // Browsing Data.
|
| + RegisterFunction<RemoveBrowsingDataFunction>();
|
| + RegisterFunction<RemoveAppCacheFunction>();
|
| + RegisterFunction<RemoveCacheFunction>();
|
| + RegisterFunction<RemoveCookiesFunction>();
|
| + RegisterFunction<RemoveDownloadsFunction>();
|
| + RegisterFunction<RemoveFileSystemsFunction>();
|
| + RegisterFunction<RemoveFormDataFunction>();
|
| + RegisterFunction<RemoveHistoryFunction>();
|
| + RegisterFunction<RemoveIndexedDBFunction>();
|
| + RegisterFunction<RemoveLocalStorageFunction>();
|
| + RegisterFunction<RemoveOriginBoundCertsFunction>();
|
| + RegisterFunction<RemovePluginDataFunction>();
|
| + RegisterFunction<RemovePasswordsFunction>();
|
| + RegisterFunction<RemoveWebSQLFunction>();
|
| +
|
| + // Bookmarks.
|
| + RegisterFunction<GetBookmarksFunction>();
|
| + RegisterFunction<GetBookmarkChildrenFunction>();
|
| + RegisterFunction<GetBookmarkRecentFunction>();
|
| + RegisterFunction<GetBookmarkTreeFunction>();
|
| + RegisterFunction<GetBookmarkSubTreeFunction>();
|
| + RegisterFunction<SearchBookmarksFunction>();
|
| + RegisterFunction<RemoveBookmarkFunction>();
|
| + RegisterFunction<RemoveTreeBookmarkFunction>();
|
| + RegisterFunction<CreateBookmarkFunction>();
|
| + RegisterFunction<MoveBookmarkFunction>();
|
| + RegisterFunction<UpdateBookmarkFunction>();
|
| +
|
| + // Infobars.
|
| + RegisterFunction<ShowInfoBarFunction>();
|
| +
|
| + // BookmarkManager
|
| + RegisterFunction<CopyBookmarkManagerFunction>();
|
| + RegisterFunction<CutBookmarkManagerFunction>();
|
| + RegisterFunction<PasteBookmarkManagerFunction>();
|
| + RegisterFunction<CanPasteBookmarkManagerFunction>();
|
| + RegisterFunction<ImportBookmarksFunction>();
|
| + RegisterFunction<ExportBookmarksFunction>();
|
| + RegisterFunction<SortChildrenBookmarkManagerFunction>();
|
| + RegisterFunction<BookmarkManagerGetStringsFunction>();
|
| + RegisterFunction<StartDragBookmarkManagerFunction>();
|
| + RegisterFunction<DropBookmarkManagerFunction>();
|
| + RegisterFunction<GetSubtreeBookmarkManagerFunction>();
|
| + RegisterFunction<CanEditBookmarkManagerFunction>();
|
| +
|
| + // History
|
| + RegisterFunction<AddUrlHistoryFunction>();
|
| + RegisterFunction<DeleteAllHistoryFunction>();
|
| + RegisterFunction<DeleteRangeHistoryFunction>();
|
| + RegisterFunction<DeleteUrlHistoryFunction>();
|
| + RegisterFunction<GetVisitsHistoryFunction>();
|
| + RegisterFunction<SearchHistoryFunction>();
|
| +
|
| + // Idle
|
| + RegisterFunction<ExtensionIdleQueryStateFunction>();
|
| +
|
| + // I18N.
|
| + RegisterFunction<GetAcceptLanguagesFunction>();
|
| +
|
| + // Processes.
|
| + RegisterFunction<GetProcessIdForTabFunction>();
|
| +
|
| + // Metrics.
|
| + RegisterFunction<MetricsRecordUserActionFunction>();
|
| + RegisterFunction<MetricsRecordValueFunction>();
|
| + RegisterFunction<MetricsRecordPercentageFunction>();
|
| + RegisterFunction<MetricsRecordCountFunction>();
|
| + RegisterFunction<MetricsRecordSmallCountFunction>();
|
| + RegisterFunction<MetricsRecordMediumCountFunction>();
|
| + RegisterFunction<MetricsRecordTimeFunction>();
|
| + RegisterFunction<MetricsRecordMediumTimeFunction>();
|
| + RegisterFunction<MetricsRecordLongTimeFunction>();
|
| +
|
| + // RLZ.
|
| +#if defined(OS_WIN)
|
| + RegisterFunction<RlzRecordProductEventFunction>();
|
| + RegisterFunction<RlzGetAccessPointRlzFunction>();
|
| + RegisterFunction<RlzSendFinancialPingFunction>();
|
| + RegisterFunction<RlzClearProductStateFunction>();
|
| +#endif
|
| +
|
| + // Cookies.
|
| + RegisterFunction<GetCookieFunction>();
|
| + RegisterFunction<GetAllCookiesFunction>();
|
| + RegisterFunction<SetCookieFunction>();
|
| + RegisterFunction<RemoveCookieFunction>();
|
| + RegisterFunction<GetAllCookieStoresFunction>();
|
| +
|
| + // Test.
|
| + RegisterFunction<ExtensionTestPassFunction>();
|
| + RegisterFunction<ExtensionTestFailFunction>();
|
| + RegisterFunction<ExtensionTestLogFunction>();
|
| + RegisterFunction<ExtensionTestQuotaResetFunction>();
|
| + RegisterFunction<ExtensionTestCreateIncognitoTabFunction>();
|
| + RegisterFunction<ExtensionTestSendMessageFunction>();
|
| + RegisterFunction<ExtensionTestGetConfigFunction>();
|
| +
|
| + // Accessibility.
|
| + RegisterFunction<GetFocusedControlFunction>();
|
| + RegisterFunction<SetAccessibilityEnabledFunction>();
|
| + RegisterFunction<GetAlertsForTabFunction>();
|
| +
|
| + // Text-to-speech.
|
| + RegisterFunction<ExtensionTtsEngineSendTtsEventFunction>();
|
| + RegisterFunction<ExtensionTtsGetVoicesFunction>();
|
| + RegisterFunction<ExtensionTtsIsSpeakingFunction>();
|
| + RegisterFunction<ExtensionTtsSpeakFunction>();
|
| + RegisterFunction<ExtensionTtsStopSpeakingFunction>();
|
| +
|
| + // Context Menus.
|
| + RegisterFunction<CreateContextMenuFunction>();
|
| + RegisterFunction<UpdateContextMenuFunction>();
|
| + RegisterFunction<RemoveContextMenuFunction>();
|
| + RegisterFunction<RemoveAllContextMenusFunction>();
|
| +
|
| + // Omnibox.
|
| + RegisterFunction<OmniboxSendSuggestionsFunction>();
|
| + RegisterFunction<OmniboxSetDefaultSuggestionFunction>();
|
| +
|
| + // Speech input.
|
| + RegisterFunction<StartSpeechInputFunction>();
|
| + RegisterFunction<StopSpeechInputFunction>();
|
| + RegisterFunction<IsRecordingSpeechInputFunction>();
|
| +
|
| +#if defined(TOOLKIT_VIEWS)
|
| + // Input.
|
| + RegisterFunction<SendKeyboardEventInputFunction>();
|
| +#endif
|
| +
|
| +#if defined(USE_VIRTUAL_KEYBOARD)
|
| + RegisterFunction<HideKeyboardFunction>();
|
| + RegisterFunction<SetKeyboardHeightFunction>();
|
| +#endif
|
| +
|
| +#if defined(OS_CHROMEOS)
|
| + // IME
|
| + RegisterFunction<SetCompositionFunction>();
|
| + RegisterFunction<ClearCompositionFunction>();
|
| + RegisterFunction<CommitTextFunction>();
|
| + RegisterFunction<SetCandidateWindowPropertiesFunction>();
|
| + RegisterFunction<SetCandidatesFunction>();
|
| + RegisterFunction<SetCursorPositionFunction>();
|
| + RegisterFunction<SetMenuItemsFunction>();
|
| + RegisterFunction<UpdateMenuItemsFunction>();
|
| +
|
| + RegisterFunction<InputEventHandled>();
|
| +#if defined(USE_VIRTUAL_KEYBOARD)
|
| + RegisterFunction<CandidateClickedInputUiFunction>();
|
| + RegisterFunction<CursorUpInputUiFunction>();
|
| + RegisterFunction<CursorDownInputUiFunction>();
|
| + RegisterFunction<PageUpInputUiFunction>();
|
| + RegisterFunction<PageDownInputUiFunction>();
|
| + RegisterFunction<RegisterInputUiFunction>();
|
| + RegisterFunction<PageUpInputUiFunction>();
|
| + RegisterFunction<PageDownInputUiFunction>();
|
| +#endif
|
| +#endif
|
| +
|
| + // Managed mode.
|
| + RegisterFunction<GetManagedModeFunction>();
|
| + RegisterFunction<EnterManagedModeFunction>();
|
| +
|
| + // Management.
|
| + RegisterFunction<GetAllExtensionsFunction>();
|
| + RegisterFunction<GetExtensionByIdFunction>();
|
| + RegisterFunction<GetPermissionWarningsByIdFunction>();
|
| + RegisterFunction<GetPermissionWarningsByManifestFunction>();
|
| + RegisterFunction<LaunchAppFunction>();
|
| + RegisterFunction<SetEnabledFunction>();
|
| + RegisterFunction<UninstallFunction>();
|
| +
|
| + // Extension module.
|
| + RegisterFunction<SetUpdateUrlDataFunction>();
|
| + RegisterFunction<IsAllowedIncognitoAccessFunction>();
|
| + RegisterFunction<IsAllowedFileSchemeAccessFunction>();
|
| +
|
| + // WebstorePrivate.
|
| + RegisterFunction<GetBrowserLoginFunction>();
|
| + RegisterFunction<GetStoreLoginFunction>();
|
| + RegisterFunction<SetStoreLoginFunction>();
|
| + RegisterFunction<InstallBundleFunction>();
|
| + RegisterFunction<BeginInstallWithManifestFunction>();
|
| + RegisterFunction<CompleteInstallFunction>();
|
| + RegisterFunction<SilentlyInstallFunction>();
|
| + RegisterFunction<GetWebGLStatusFunction>();
|
| +
|
| + // WebNavigation.
|
| + RegisterFunction<GetFrameFunction>();
|
| + RegisterFunction<GetAllFramesFunction>();
|
| +
|
| + // WebRequest.
|
| + RegisterFunction<WebRequestAddEventListener>();
|
| + RegisterFunction<WebRequestEventHandled>();
|
| + RegisterFunction<WebRequestHandlerBehaviorChanged>();
|
| +
|
| + // Preferences.
|
| + RegisterFunction<GetPreferenceFunction>();
|
| + RegisterFunction<SetPreferenceFunction>();
|
| + RegisterFunction<ClearPreferenceFunction>();
|
| +
|
| + // ChromeOS-specific part of the API.
|
| +#if defined(OS_CHROMEOS)
|
| + // Device Customization.
|
| + RegisterFunction<GetChromeosInfoFunction>();
|
| +
|
| + // 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<CancelFileDialogFunction>();
|
| + RegisterFunction<ExecuteTasksFileBrowserFunction>();
|
| + RegisterFunction<FileDialogStringsFunction>();
|
| + RegisterFunction<GetFileTasksFileBrowserFunction>();
|
| + RegisterFunction<GetVolumeMetadataFunction>();
|
| + RegisterFunction<RequestLocalFileSystemFunction>();
|
| + RegisterFunction<AddFileWatchBrowserFunction>();
|
| + RegisterFunction<RemoveFileWatchBrowserFunction>();
|
| + RegisterFunction<SelectFileFunction>();
|
| + RegisterFunction<SelectFilesFunction>();
|
| + RegisterFunction<AddMountFunction>();
|
| + RegisterFunction<RemoveMountFunction>();
|
| + RegisterFunction<GetMountPointsFunction>();
|
| + RegisterFunction<GetSizeStatsFunction>();
|
| + RegisterFunction<FormatDeviceFunction>();
|
| + RegisterFunction<ViewFilesFunction>();
|
| + RegisterFunction<ToggleFullscreenFunction>();
|
| + RegisterFunction<IsFullscreenFunction>();
|
| + RegisterFunction<GetGDataFilePropertiesFunction>();
|
| + RegisterFunction<PinGDataFileFunction>();
|
| + RegisterFunction<GetFileLocationsFunction>();
|
| + RegisterFunction<GetGDataFilesFunction>();
|
| +
|
| + // Mediaplayer
|
| + RegisterFunction<PlayMediaplayerFunction>();
|
| + RegisterFunction<GetPlaylistMediaplayerFunction>();
|
| + RegisterFunction<SetWindowHeightMediaplayerFunction>();
|
| + RegisterFunction<CloseWindowMediaplayerFunction>();
|
| +
|
| + // InputMethod
|
| + RegisterFunction<GetInputMethodFunction>();
|
| +
|
| + // Terminal
|
| + RegisterFunction<OpenTerminalProcessFunction>();
|
| + RegisterFunction<SendInputToTerminalProcessFunction>();
|
| + RegisterFunction<CloseTerminalProcessFunction>();
|
| + RegisterFunction<OnTerminalResizeFunction>();
|
| +
|
| +#if defined(USE_VIRTUAL_KEYBOARD)
|
| + // Input
|
| + RegisterFunction<SendHandwritingStrokeFunction>();
|
| + RegisterFunction<CancelHandwritingStrokesFunction>();
|
| +#endif
|
| +#endif
|
| +
|
| + // Websocket to TCP proxy. Currently noop on anything other than ChromeOS.
|
| + RegisterFunction<WebSocketProxyPrivateGetPassportForTCPFunction>();
|
| + RegisterFunction<WebSocketProxyPrivateGetURLForTCPFunction>();
|
| +
|
| + // Debugger
|
| + RegisterFunction<AttachDebuggerFunction>();
|
| + RegisterFunction<DetachDebuggerFunction>();
|
| + RegisterFunction<SendCommandDebuggerFunction>();
|
| +
|
| + // Settings
|
| + RegisterFunction<extensions::GetSettingsFunction>();
|
| + RegisterFunction<extensions::SetSettingsFunction>();
|
| + RegisterFunction<extensions::RemoveSettingsFunction>();
|
| + RegisterFunction<extensions::ClearSettingsFunction>();
|
| + RegisterFunction<extensions::GetBytesInUseSettingsFunction>();
|
| +
|
| + // Content settings.
|
| + RegisterFunction<GetResourceIdentifiersFunction>();
|
| + RegisterFunction<ClearContentSettingsFunction>();
|
| + RegisterFunction<GetContentSettingFunction>();
|
| + RegisterFunction<SetContentSettingFunction>();
|
| +
|
| + // Font settings.
|
| + RegisterFunction<GetFontListFunction>();
|
| + RegisterFunction<GetFontNameFunction>();
|
| + RegisterFunction<SetFontNameFunction>();
|
| +
|
| + // ChromeAuth settings.
|
| + RegisterFunction<SetCloudPrintCredentialsFunction>();
|
| +
|
| + // Experimental App API.
|
| + RegisterFunction<AppNotifyFunction>();
|
| + RegisterFunction<AppClearAllNotificationsFunction>();
|
| +
|
| + // Permissions
|
| + RegisterFunction<ContainsPermissionsFunction>();
|
| + RegisterFunction<GetAllPermissionsFunction>();
|
| + RegisterFunction<RemovePermissionsFunction>();
|
| + RegisterFunction<RequestPermissionsFunction>();
|
| +
|
| + // Downloads
|
| + RegisterFunction<DownloadsDownloadFunction>();
|
| + RegisterFunction<DownloadsSearchFunction>();
|
| + RegisterFunction<DownloadsPauseFunction>();
|
| + RegisterFunction<DownloadsResumeFunction>();
|
| + RegisterFunction<DownloadsCancelFunction>();
|
| + RegisterFunction<DownloadsEraseFunction>();
|
| + RegisterFunction<DownloadsSetDestinationFunction>();
|
| + RegisterFunction<DownloadsAcceptDangerFunction>();
|
| + RegisterFunction<DownloadsShowFunction>();
|
| + RegisterFunction<DownloadsDragFunction>();
|
| + RegisterFunction<DownloadsGetFileIconFunction>();
|
| +
|
| + // PageCapture
|
| + RegisterFunction<PageCaptureSaveAsMHTMLFunction>();
|
| +
|
| + // TopSites
|
| + RegisterFunction<GetTopSitesFunction>();
|
| +
|
| + // Serial
|
| + RegisterFunction<extensions::SerialOpenFunction>();
|
| + RegisterFunction<extensions::SerialCloseFunction>();
|
| + RegisterFunction<extensions::SerialReadFunction>();
|
| + RegisterFunction<extensions::SerialWriteFunction>();
|
| +
|
| + // Sockets
|
| + RegisterFunction<extensions::SocketCreateFunction>();
|
| + RegisterFunction<extensions::SocketDestroyFunction>();
|
| + RegisterFunction<extensions::SocketConnectFunction>();
|
| + RegisterFunction<extensions::SocketDisconnectFunction>();
|
| + RegisterFunction<extensions::SocketReadFunction>();
|
| + RegisterFunction<extensions::SocketWriteFunction>();
|
| +
|
| + // DNS
|
| + RegisterFunction<extensions::DNSResolveFunction>();
|
| +
|
| + // System
|
| + RegisterFunction<extensions::GetIncognitoModeAvailabilityFunction>();
|
| + RegisterFunction<extensions::GetUpdateStatusFunction>();
|
| +
|
| + // Net
|
| + RegisterFunction<extensions::AddRulesFunction>();
|
| + RegisterFunction<extensions::RemoveRulesFunction>();
|
| + RegisterFunction<extensions::GetRulesFunction>();
|
| +}
|
| +
|
| +void FactoryRegistry::GetAllNames(std::vector<std::string>* names) {
|
| + for (FactoryMap::iterator iter = factories_.begin();
|
| + iter != factories_.end(); ++iter) {
|
| + names->push_back(iter->first);
|
| + }
|
| +}
|
| +
|
| +bool FactoryRegistry::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* FactoryRegistry::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;
|
| +}
|
| +
|
| const char kAccessDenied[] = "access denied";
|
| const char kQuotaExceeded[] = "quota exceeded";
|
|
|
| @@ -80,19 +597,22 @@
|
| }
|
| }
|
|
|
| +}; // namespace
|
| +
|
| +// ExtensionFunctionDispatcher -------------------------------------------------
|
| +
|
| void ExtensionFunctionDispatcher::GetAllFunctionNames(
|
| std::vector<std::string>* names) {
|
| - ExtensionFunctionRegistry::GetInstance()->GetAllNames(names);
|
| + FactoryRegistry::GetInstance()->GetAllNames(names);
|
| }
|
|
|
| bool ExtensionFunctionDispatcher::OverrideFunction(
|
| const std::string& name, ExtensionFunctionFactory factory) {
|
| - return ExtensionFunctionRegistry::GetInstance()->OverrideFunction(name,
|
| - factory);
|
| + return FactoryRegistry::GetInstance()->OverrideFunction(name, factory);
|
| }
|
|
|
| void ExtensionFunctionDispatcher::ResetFunctions() {
|
| - ExtensionFunctionRegistry::GetInstance()->ResetFunctions();
|
| + FactoryRegistry::GetInstance()->ResetFunctions();
|
| }
|
|
|
| // static
|
| @@ -268,7 +788,7 @@
|
| }
|
|
|
| ExtensionFunction* function =
|
| - ExtensionFunctionRegistry::GetInstance()->NewFunction(params.name);
|
| + FactoryRegistry::GetInstance()->NewFunction(params.name);
|
| function->SetArgs(¶ms.arguments);
|
| function->set_source_url(params.source_url);
|
| function->set_request_id(params.request_id);
|
|
|