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 |