Chromium Code Reviews| Index: chrome/browser/extensions/extension_function_dispatcher.cc |
| diff --git a/chrome/browser/extensions/extension_function_dispatcher.cc b/chrome/browser/extensions/extension_function_dispatcher.cc |
| index d17e575c261bc87db60b3884ea0a9cc195b7b89e..5bdd54eb8214363f24c32ae076ce81e13b7a5af0 100644 |
| --- a/chrome/browser/extensions/extension_function_dispatcher.cc |
| +++ b/chrome/browser/extensions/extension_function_dispatcher.cc |
| @@ -60,6 +60,11 @@ class FactoryRegistry { |
| ExtensionFunction* NewFunction(const std::string& name); |
| private: |
| + template<class T> |
| + void AddFactory() { |
|
Aaron Boodman
2009/10/14 22:16:29
Nit: I think a better name for this method would b
Matt Perry
2009/10/14 22:19:21
Done.
|
| + factories_[T::function_name()] = &NewExtensionFunction<T>; |
| + } |
| + |
| typedef std::map<std::string, ExtensionFunctionFactory> FactoryMap; |
| FactoryMap factories_; |
| }; |
| @@ -71,107 +76,60 @@ FactoryRegistry* FactoryRegistry::instance() { |
| void FactoryRegistry::ResetFunctions() { |
| // Register all functions here. |
| - namespace bookmarks = extension_bookmarks_module_constants; |
| - namespace i18n = extension_i18n_api_functions; |
| - namespace page_actions = extension_page_actions_module_constants; |
| - namespace browser_actions = extension_browser_actions_api_constants; |
| - namespace tabs = extension_tabs_module_constants; |
| - namespace test = extension_test_api_functions; |
| - namespace toolstrip = extension_toolstrip_api_functions; |
| - |
| // Windows |
| - factories_[tabs::kGetWindowFunction] = |
| - &NewExtensionFunction<GetWindowFunction>; |
| - factories_[tabs::kGetCurrentWindowFunction] = |
| - &NewExtensionFunction<GetCurrentWindowFunction>; |
| - factories_[tabs::kGetLastFocusedWindowFunction] = |
| - &NewExtensionFunction<GetLastFocusedWindowFunction>; |
| - factories_[tabs::kGetAllWindowsFunction] = |
| - &NewExtensionFunction<GetAllWindowsFunction>; |
| - factories_[tabs::kCreateWindowFunction] = |
| - &NewExtensionFunction<CreateWindowFunction>; |
| - factories_[tabs::kUpdateWindowFunction] = |
| - &NewExtensionFunction<UpdateWindowFunction>; |
| - factories_[tabs::kRemoveWindowFunction] = |
| - &NewExtensionFunction<RemoveWindowFunction>; |
| + AddFactory<GetWindowFunction>(); |
| + AddFactory<GetCurrentWindowFunction>(); |
| + AddFactory<GetLastFocusedWindowFunction>(); |
| + AddFactory<GetAllWindowsFunction>(); |
| + AddFactory<CreateWindowFunction>(); |
| + AddFactory<UpdateWindowFunction>(); |
| + AddFactory<RemoveWindowFunction>(); |
| // Tabs |
| - factories_[tabs::kGetTabFunction] = |
| - &NewExtensionFunction<GetTabFunction>; |
| - factories_[tabs::kGetSelectedTabFunction] = |
| - &NewExtensionFunction<GetSelectedTabFunction>; |
| - factories_[tabs::kGetAllTabsInWindowFunction] = |
| - &NewExtensionFunction<GetAllTabsInWindowFunction>; |
| - factories_[tabs::kCreateTabFunction] = |
| - &NewExtensionFunction<CreateTabFunction>; |
| - factories_[tabs::kUpdateTabFunction] = |
| - &NewExtensionFunction<UpdateTabFunction>; |
| - factories_[tabs::kMoveTabFunction] = |
| - &NewExtensionFunction<MoveTabFunction>; |
| - factories_[tabs::kRemoveTabFunction] = |
| - &NewExtensionFunction<RemoveTabFunction>; |
| - factories_[tabs::kDetectTabLanguageFunction] = |
| - &NewExtensionFunction<DetectTabLanguageFunction>; |
| - factories_[tabs::kCaptureVisibleTabFunction] = |
| - &NewExtensionFunction<CaptureVisibleTabFunction>; |
| - factories_[tabs::kExecuteScriptFunction] = |
| - &NewExtensionFunction<ExecuteCodeInTabFunction>; |
| - factories_[tabs::kInsertCSSFunction] = |
| - &NewExtensionFunction<ExecuteCodeInTabFunction>; |
| + AddFactory<GetTabFunction>(); |
| + AddFactory<GetSelectedTabFunction>(); |
| + AddFactory<GetAllTabsInWindowFunction>(); |
| + AddFactory<CreateTabFunction>(); |
| + AddFactory<UpdateTabFunction>(); |
| + AddFactory<MoveTabFunction>(); |
| + AddFactory<RemoveTabFunction>(); |
| + AddFactory<DetectTabLanguageFunction>(); |
| + AddFactory<CaptureVisibleTabFunction>(); |
| + AddFactory<TabsExecuteScriptFunction>(); |
| + AddFactory<TabsInsertCSSFunction>(); |
| // Page Actions. |
| - factories_[page_actions::kEnablePageActionFunction] = |
| - &NewExtensionFunction<EnablePageActionFunction>; |
| - factories_[page_actions::kDisablePageActionFunction] = |
| - &NewExtensionFunction<DisablePageActionFunction>; |
| + AddFactory<EnablePageActionFunction>(); |
| + AddFactory<DisablePageActionFunction>(); |
| // Browser Actions. |
| - factories_[browser_actions::kSetNameFunction] = |
| - &NewExtensionFunction<BrowserActionSetNameFunction>; |
| - factories_[browser_actions::kSetIconFunction] = |
| - &NewExtensionFunction<BrowserActionSetIconFunction>; |
| - factories_[browser_actions::kSetBadgeTextFunction] = |
| - &NewExtensionFunction<BrowserActionSetBadgeTextFunction>; |
| - factories_[browser_actions::kSetBadgeBackgroundColorFunction] = |
| - &NewExtensionFunction<BrowserActionSetBadgeBackgroundColorFunction>; |
| + AddFactory<BrowserActionSetNameFunction>(); |
| + AddFactory<BrowserActionSetIconFunction>(); |
| + AddFactory<BrowserActionSetBadgeTextFunction>(); |
| + AddFactory<BrowserActionSetBadgeBackgroundColorFunction>(); |
| // Bookmarks. |
| - factories_[bookmarks::kGetBookmarksFunction] = |
| - &NewExtensionFunction<GetBookmarksFunction>; |
| - factories_[bookmarks::kGetBookmarkChildrenFunction] = |
| - &NewExtensionFunction<GetBookmarkChildrenFunction>; |
| - factories_[bookmarks::kGetBookmarkTreeFunction] = |
| - &NewExtensionFunction<GetBookmarkTreeFunction>; |
| - factories_[bookmarks::kSearchBookmarksFunction] = |
| - &NewExtensionFunction<SearchBookmarksFunction>; |
| - factories_[bookmarks::kRemoveBookmarkFunction] = |
| - &NewExtensionFunction<RemoveBookmarkFunction>; |
| - factories_[bookmarks::kRemoveBookmarkTreeFunction] = |
| - &NewExtensionFunction<RemoveBookmarkFunction>; |
| - factories_[bookmarks::kCreateBookmarkFunction] = |
| - &NewExtensionFunction<CreateBookmarkFunction>; |
| - factories_[bookmarks::kMoveBookmarkFunction] = |
| - &NewExtensionFunction<MoveBookmarkFunction>; |
| - factories_[bookmarks::kUpdateBookmarkFunction] = |
| - &NewExtensionFunction<UpdateBookmarkFunction>; |
| + AddFactory<GetBookmarksFunction>(); |
| + AddFactory<GetBookmarkChildrenFunction>(); |
| + AddFactory<GetBookmarkTreeFunction>(); |
| + AddFactory<SearchBookmarksFunction>(); |
| + AddFactory<RemoveBookmarkFunction>(); |
| + AddFactory<RemoveTreeBookmarkFunction>(); |
| + AddFactory<CreateBookmarkFunction>(); |
| + AddFactory<MoveBookmarkFunction>(); |
| + AddFactory<UpdateBookmarkFunction>(); |
| // Toolstrips. |
| - factories_[toolstrip::kExpandFunction] = |
| - &NewExtensionFunction<ToolstripExpandFunction>; |
| - factories_[toolstrip::kCollapseFunction] = |
| - &NewExtensionFunction<ToolstripCollapseFunction>; |
| + AddFactory<ToolstripExpandFunction>(); |
| + AddFactory<ToolstripCollapseFunction>(); |
| // I18N. |
| - factories_[i18n::kGetAcceptLanguagesFunction] = |
| - &NewExtensionFunction<GetAcceptLanguagesFunction>; |
| + AddFactory<GetAcceptLanguagesFunction>(); |
| // Test. |
| - factories_[test::kPassFunction] = |
| - &NewExtensionFunction<ExtensionTestPassFunction>; |
| - factories_[test::kFailFunction] = |
| - &NewExtensionFunction<ExtensionTestFailFunction>; |
| - factories_[test::kLogFunction] = |
| - &NewExtensionFunction<ExtensionTestLogFunction>; |
| + AddFactory<ExtensionTestPassFunction>(); |
| + AddFactory<ExtensionTestFailFunction>(); |
| + AddFactory<ExtensionTestLogFunction>(); |
| } |
| void FactoryRegistry::GetAllNames(std::vector<std::string>* names) { |