Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/extension_function_dispatcher.h" | 5 #include "chrome/browser/extensions/extension_function_dispatcher.h" |
| 6 | 6 |
| 7 #include "base/process_util.h" | 7 #include "base/process_util.h" |
| 8 #include "base/singleton.h" | 8 #include "base/singleton.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chrome/browser/extensions/execute_code_in_tab_function.h" | 10 #include "chrome/browser/extensions/execute_code_in_tab_function.h" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 53 | 53 |
| 54 // Allows overriding of specific functions (e.g. for testing). Functions | 54 // Allows overriding of specific functions (e.g. for testing). Functions |
| 55 // must be previously registered. Returns true if successful. | 55 // must be previously registered. Returns true if successful. |
| 56 bool OverrideFunction(const std::string& name, | 56 bool OverrideFunction(const std::string& name, |
| 57 ExtensionFunctionFactory factory); | 57 ExtensionFunctionFactory factory); |
| 58 | 58 |
| 59 // Factory method for the ExtensionFunction registered as 'name'. | 59 // Factory method for the ExtensionFunction registered as 'name'. |
| 60 ExtensionFunction* NewFunction(const std::string& name); | 60 ExtensionFunction* NewFunction(const std::string& name); |
| 61 | 61 |
| 62 private: | 62 private: |
| 63 template<class T> | |
| 64 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.
| |
| 65 factories_[T::function_name()] = &NewExtensionFunction<T>; | |
| 66 } | |
| 67 | |
| 63 typedef std::map<std::string, ExtensionFunctionFactory> FactoryMap; | 68 typedef std::map<std::string, ExtensionFunctionFactory> FactoryMap; |
| 64 FactoryMap factories_; | 69 FactoryMap factories_; |
| 65 }; | 70 }; |
| 66 | 71 |
| 67 FactoryRegistry* FactoryRegistry::instance() { | 72 FactoryRegistry* FactoryRegistry::instance() { |
| 68 return Singleton<FactoryRegistry>::get(); | 73 return Singleton<FactoryRegistry>::get(); |
| 69 } | 74 } |
| 70 | 75 |
| 71 void FactoryRegistry::ResetFunctions() { | 76 void FactoryRegistry::ResetFunctions() { |
| 72 // Register all functions here. | 77 // Register all functions here. |
| 73 | 78 |
| 74 namespace bookmarks = extension_bookmarks_module_constants; | |
| 75 namespace i18n = extension_i18n_api_functions; | |
| 76 namespace page_actions = extension_page_actions_module_constants; | |
| 77 namespace browser_actions = extension_browser_actions_api_constants; | |
| 78 namespace tabs = extension_tabs_module_constants; | |
| 79 namespace test = extension_test_api_functions; | |
| 80 namespace toolstrip = extension_toolstrip_api_functions; | |
| 81 | |
| 82 // Windows | 79 // Windows |
| 83 factories_[tabs::kGetWindowFunction] = | 80 AddFactory<GetWindowFunction>(); |
| 84 &NewExtensionFunction<GetWindowFunction>; | 81 AddFactory<GetCurrentWindowFunction>(); |
| 85 factories_[tabs::kGetCurrentWindowFunction] = | 82 AddFactory<GetLastFocusedWindowFunction>(); |
| 86 &NewExtensionFunction<GetCurrentWindowFunction>; | 83 AddFactory<GetAllWindowsFunction>(); |
| 87 factories_[tabs::kGetLastFocusedWindowFunction] = | 84 AddFactory<CreateWindowFunction>(); |
| 88 &NewExtensionFunction<GetLastFocusedWindowFunction>; | 85 AddFactory<UpdateWindowFunction>(); |
| 89 factories_[tabs::kGetAllWindowsFunction] = | 86 AddFactory<RemoveWindowFunction>(); |
| 90 &NewExtensionFunction<GetAllWindowsFunction>; | |
| 91 factories_[tabs::kCreateWindowFunction] = | |
| 92 &NewExtensionFunction<CreateWindowFunction>; | |
| 93 factories_[tabs::kUpdateWindowFunction] = | |
| 94 &NewExtensionFunction<UpdateWindowFunction>; | |
| 95 factories_[tabs::kRemoveWindowFunction] = | |
| 96 &NewExtensionFunction<RemoveWindowFunction>; | |
| 97 | 87 |
| 98 // Tabs | 88 // Tabs |
| 99 factories_[tabs::kGetTabFunction] = | 89 AddFactory<GetTabFunction>(); |
| 100 &NewExtensionFunction<GetTabFunction>; | 90 AddFactory<GetSelectedTabFunction>(); |
| 101 factories_[tabs::kGetSelectedTabFunction] = | 91 AddFactory<GetAllTabsInWindowFunction>(); |
| 102 &NewExtensionFunction<GetSelectedTabFunction>; | 92 AddFactory<CreateTabFunction>(); |
| 103 factories_[tabs::kGetAllTabsInWindowFunction] = | 93 AddFactory<UpdateTabFunction>(); |
| 104 &NewExtensionFunction<GetAllTabsInWindowFunction>; | 94 AddFactory<MoveTabFunction>(); |
| 105 factories_[tabs::kCreateTabFunction] = | 95 AddFactory<RemoveTabFunction>(); |
| 106 &NewExtensionFunction<CreateTabFunction>; | 96 AddFactory<DetectTabLanguageFunction>(); |
| 107 factories_[tabs::kUpdateTabFunction] = | 97 AddFactory<CaptureVisibleTabFunction>(); |
| 108 &NewExtensionFunction<UpdateTabFunction>; | 98 AddFactory<TabsExecuteScriptFunction>(); |
| 109 factories_[tabs::kMoveTabFunction] = | 99 AddFactory<TabsInsertCSSFunction>(); |
| 110 &NewExtensionFunction<MoveTabFunction>; | |
| 111 factories_[tabs::kRemoveTabFunction] = | |
| 112 &NewExtensionFunction<RemoveTabFunction>; | |
| 113 factories_[tabs::kDetectTabLanguageFunction] = | |
| 114 &NewExtensionFunction<DetectTabLanguageFunction>; | |
| 115 factories_[tabs::kCaptureVisibleTabFunction] = | |
| 116 &NewExtensionFunction<CaptureVisibleTabFunction>; | |
| 117 factories_[tabs::kExecuteScriptFunction] = | |
| 118 &NewExtensionFunction<ExecuteCodeInTabFunction>; | |
| 119 factories_[tabs::kInsertCSSFunction] = | |
| 120 &NewExtensionFunction<ExecuteCodeInTabFunction>; | |
| 121 | 100 |
| 122 // Page Actions. | 101 // Page Actions. |
| 123 factories_[page_actions::kEnablePageActionFunction] = | 102 AddFactory<EnablePageActionFunction>(); |
| 124 &NewExtensionFunction<EnablePageActionFunction>; | 103 AddFactory<DisablePageActionFunction>(); |
| 125 factories_[page_actions::kDisablePageActionFunction] = | |
| 126 &NewExtensionFunction<DisablePageActionFunction>; | |
| 127 | 104 |
| 128 // Browser Actions. | 105 // Browser Actions. |
| 129 factories_[browser_actions::kSetNameFunction] = | 106 AddFactory<BrowserActionSetNameFunction>(); |
| 130 &NewExtensionFunction<BrowserActionSetNameFunction>; | 107 AddFactory<BrowserActionSetIconFunction>(); |
| 131 factories_[browser_actions::kSetIconFunction] = | 108 AddFactory<BrowserActionSetBadgeTextFunction>(); |
| 132 &NewExtensionFunction<BrowserActionSetIconFunction>; | 109 AddFactory<BrowserActionSetBadgeBackgroundColorFunction>(); |
| 133 factories_[browser_actions::kSetBadgeTextFunction] = | |
| 134 &NewExtensionFunction<BrowserActionSetBadgeTextFunction>; | |
| 135 factories_[browser_actions::kSetBadgeBackgroundColorFunction] = | |
| 136 &NewExtensionFunction<BrowserActionSetBadgeBackgroundColorFunction>; | |
| 137 | 110 |
| 138 // Bookmarks. | 111 // Bookmarks. |
| 139 factories_[bookmarks::kGetBookmarksFunction] = | 112 AddFactory<GetBookmarksFunction>(); |
| 140 &NewExtensionFunction<GetBookmarksFunction>; | 113 AddFactory<GetBookmarkChildrenFunction>(); |
| 141 factories_[bookmarks::kGetBookmarkChildrenFunction] = | 114 AddFactory<GetBookmarkTreeFunction>(); |
| 142 &NewExtensionFunction<GetBookmarkChildrenFunction>; | 115 AddFactory<SearchBookmarksFunction>(); |
| 143 factories_[bookmarks::kGetBookmarkTreeFunction] = | 116 AddFactory<RemoveBookmarkFunction>(); |
| 144 &NewExtensionFunction<GetBookmarkTreeFunction>; | 117 AddFactory<RemoveTreeBookmarkFunction>(); |
| 145 factories_[bookmarks::kSearchBookmarksFunction] = | 118 AddFactory<CreateBookmarkFunction>(); |
| 146 &NewExtensionFunction<SearchBookmarksFunction>; | 119 AddFactory<MoveBookmarkFunction>(); |
| 147 factories_[bookmarks::kRemoveBookmarkFunction] = | 120 AddFactory<UpdateBookmarkFunction>(); |
| 148 &NewExtensionFunction<RemoveBookmarkFunction>; | |
| 149 factories_[bookmarks::kRemoveBookmarkTreeFunction] = | |
| 150 &NewExtensionFunction<RemoveBookmarkFunction>; | |
| 151 factories_[bookmarks::kCreateBookmarkFunction] = | |
| 152 &NewExtensionFunction<CreateBookmarkFunction>; | |
| 153 factories_[bookmarks::kMoveBookmarkFunction] = | |
| 154 &NewExtensionFunction<MoveBookmarkFunction>; | |
| 155 factories_[bookmarks::kUpdateBookmarkFunction] = | |
| 156 &NewExtensionFunction<UpdateBookmarkFunction>; | |
| 157 | 121 |
| 158 // Toolstrips. | 122 // Toolstrips. |
| 159 factories_[toolstrip::kExpandFunction] = | 123 AddFactory<ToolstripExpandFunction>(); |
| 160 &NewExtensionFunction<ToolstripExpandFunction>; | 124 AddFactory<ToolstripCollapseFunction>(); |
| 161 factories_[toolstrip::kCollapseFunction] = | |
| 162 &NewExtensionFunction<ToolstripCollapseFunction>; | |
| 163 | 125 |
| 164 // I18N. | 126 // I18N. |
| 165 factories_[i18n::kGetAcceptLanguagesFunction] = | 127 AddFactory<GetAcceptLanguagesFunction>(); |
| 166 &NewExtensionFunction<GetAcceptLanguagesFunction>; | |
| 167 | 128 |
| 168 // Test. | 129 // Test. |
| 169 factories_[test::kPassFunction] = | 130 AddFactory<ExtensionTestPassFunction>(); |
| 170 &NewExtensionFunction<ExtensionTestPassFunction>; | 131 AddFactory<ExtensionTestFailFunction>(); |
| 171 factories_[test::kFailFunction] = | 132 AddFactory<ExtensionTestLogFunction>(); |
| 172 &NewExtensionFunction<ExtensionTestFailFunction>; | |
| 173 factories_[test::kLogFunction] = | |
| 174 &NewExtensionFunction<ExtensionTestLogFunction>; | |
| 175 } | 133 } |
| 176 | 134 |
| 177 void FactoryRegistry::GetAllNames(std::vector<std::string>* names) { | 135 void FactoryRegistry::GetAllNames(std::vector<std::string>* names) { |
| 178 for (FactoryMap::iterator iter = factories_.begin(); | 136 for (FactoryMap::iterator iter = factories_.begin(); |
| 179 iter != factories_.end(); ++iter) { | 137 iter != factories_.end(); ++iter) { |
| 180 names->push_back(iter->first); | 138 names->push_back(iter->first); |
| 181 } | 139 } |
| 182 } | 140 } |
| 183 | 141 |
| 184 bool FactoryRegistry::OverrideFunction(const std::string& name, | 142 bool FactoryRegistry::OverrideFunction(const std::string& name, |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 307 } else { | 265 } else { |
| 308 NOTREACHED(); | 266 NOTREACHED(); |
| 309 base::KillProcess(render_view_host_->process()->process().handle(), | 267 base::KillProcess(render_view_host_->process()->process().handle(), |
| 310 ResultCodes::KILLED_BAD_MESSAGE, false); | 268 ResultCodes::KILLED_BAD_MESSAGE, false); |
| 311 } | 269 } |
| 312 } | 270 } |
| 313 | 271 |
| 314 Profile* ExtensionFunctionDispatcher::profile() { | 272 Profile* ExtensionFunctionDispatcher::profile() { |
| 315 return render_view_host_->process()->profile(); | 273 return render_view_host_->process()->profile(); |
| 316 } | 274 } |
| OLD | NEW |