Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(412)

Side by Side Diff: chrome/browser/extensions/extension_function_dispatcher.cc

Issue 9359040: WIP IDL-IPC2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Checkpoint before going back to returning ListValue via ExtensionMsg_Response. Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <map> 7 #include <map>
8 8
9 #include "base/json/json_string_value_serializer.h" 9 #include "base/json/json_string_value_serializer.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
11 #include "base/memory/singleton.h"
12 #include "base/process_util.h" 11 #include "base/process_util.h"
13 #include "base/values.h" 12 #include "base/values.h"
14 #include "build/build_config.h" 13 #include "build/build_config.h"
15 #include "chrome/browser/accessibility/accessibility_extension_api.h"
16 #include "chrome/browser/bookmarks/bookmark_extension_api.h"
17 #include "chrome/browser/bookmarks/bookmark_manager_extension_api.h"
18 #include "chrome/browser/download/download_extension_api.h"
19 #include "chrome/browser/extensions/api/app/app_api.h"
20 #include "chrome/browser/extensions/api/browsingdata/browsing_data_api.h"
21 #include "chrome/browser/extensions/api/declarative/declarative_api.h"
22 #include "chrome/browser/extensions/api/dns/dns_api.h"
23 #include "chrome/browser/extensions/api/permissions/permissions_api.h"
24 #include "chrome/browser/extensions/api/serial/serial_api.h"
25 #include "chrome/browser/extensions/api/socket/socket_api.h"
26 #include "chrome/browser/extensions/api/webrequest/webrequest_api.h"
27 #include "chrome/browser/extensions/execute_code_in_tab_function.h"
28 #include "chrome/browser/extensions/extension_activity_log.h" 14 #include "chrome/browser/extensions/extension_activity_log.h"
29 #include "chrome/browser/extensions/extension_browser_actions_api.h"
30 #include "chrome/browser/extensions/extension_chrome_auth_private_api.h"
31 #include "chrome/browser/extensions/extension_content_settings_api.h"
32 #include "chrome/browser/extensions/extension_context_menu_api.h"
33 #include "chrome/browser/extensions/extension_cookies_api.h"
34 #include "chrome/browser/extensions/extension_debugger_api.h"
35 #include "chrome/browser/extensions/extension_font_settings_api.h"
36 #include "chrome/browser/extensions/extension_function.h" 15 #include "chrome/browser/extensions/extension_function.h"
37 #include "chrome/browser/extensions/extension_i18n_api.h"
38 #include "chrome/browser/extensions/extension_idle_api.h"
39 #include "chrome/browser/extensions/extension_management_api.h"
40 #include "chrome/browser/extensions/extension_metrics_module.h"
41 #include "chrome/browser/extensions/extension_module.h"
42 #include "chrome/browser/extensions/extension_omnibox_api.h"
43 #include "chrome/browser/extensions/extension_page_actions_module.h"
44 #include "chrome/browser/extensions/extension_page_capture_api.h"
45 #include "chrome/browser/extensions/extension_preference_api.h"
46 #include "chrome/browser/extensions/extension_processes_api.h"
47 #include "chrome/browser/extensions/extension_proxy_api.h"
48 #include "chrome/browser/extensions/extension_service.h" 16 #include "chrome/browser/extensions/extension_service.h"
49 #include "chrome/browser/extensions/extension_tabs_module.h"
50 #include "chrome/browser/extensions/extension_test_api.h"
51 #include "chrome/browser/extensions/extension_tts_api.h"
52 #include "chrome/browser/extensions/extension_tts_engine_api.h"
53 #include "chrome/browser/extensions/extension_web_socket_proxy_private_api.h"
54 #include "chrome/browser/extensions/extension_web_ui.h" 17 #include "chrome/browser/extensions/extension_web_ui.h"
55 #include "chrome/browser/extensions/extension_webnavigation_api.h"
56 #include "chrome/browser/extensions/extension_webstore_private_api.h"
57 #include "chrome/browser/extensions/extensions_quota_service.h" 18 #include "chrome/browser/extensions/extensions_quota_service.h"
58 #include "chrome/browser/extensions/system/system_api.h"
59 #include "chrome/browser/extensions/process_map.h" 19 #include "chrome/browser/extensions/process_map.h"
60 #include "chrome/browser/extensions/settings/settings_api.h"
61 #include "chrome/browser/external_protocol/external_protocol_handler.h" 20 #include "chrome/browser/external_protocol/external_protocol_handler.h"
62 #include "chrome/browser/history/history_extension_api.h"
63 #include "chrome/browser/history/top_sites_extension_api.h"
64 #include "chrome/browser/infobars/infobar_extension_api.h"
65 #include "chrome/browser/profiles/profile.h" 21 #include "chrome/browser/profiles/profile.h"
66 #include "chrome/browser/renderer_host/chrome_render_message_filter.h" 22 #include "chrome/browser/renderer_host/chrome_render_message_filter.h"
67 #include "chrome/browser/rlz/rlz_extension_api.h"
68 #include "chrome/browser/speech/speech_input_extension_api.h"
69 #include "chrome/browser/ui/browser_list.h" 23 #include "chrome/browser/ui/browser_list.h"
70 #include "chrome/browser/ui/browser_window.h" 24 #include "chrome/browser/ui/browser_window.h"
71 #include "chrome/common/extensions/api/extension_api.h" 25 #include "chrome/common/extensions/api/extension_api.h"
72 #include "chrome/common/extensions/extension_messages.h" 26 #include "chrome/common/extensions/extension_messages.h"
73 #include "chrome/common/extensions/extension_set.h" 27 #include "chrome/common/extensions/extension_set.h"
74 #include "chrome/common/url_constants.h" 28 #include "chrome/common/url_constants.h"
75 #include "content/browser/renderer_host/render_view_host.h" 29 #include "content/browser/renderer_host/render_view_host.h"
76 #include "content/public/browser/render_process_host.h" 30 #include "content/public/browser/render_process_host.h"
77 #include "ipc/ipc_message.h" 31 #include "ipc/ipc_message.h"
78 #include "ipc/ipc_message_macros.h" 32 #include "ipc/ipc_message_macros.h"
79 #include "third_party/skia/include/core/SkBitmap.h"
80 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" 33 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h"
81 34
82 #if defined(TOOLKIT_VIEWS) 35 #if defined(TOOLKIT_VIEWS)
83 #include "chrome/browser/extensions/extension_input_api.h" 36 #include "chrome/browser/extensions/extension_input_api.h"
84 #endif 37 #endif
85 38
86 #if defined(OS_CHROMEOS) && defined(USE_VIRTUAL_KEYBOARD) 39 #if defined(OS_CHROMEOS) && defined(USE_VIRTUAL_KEYBOARD)
87 #include "chrome/browser/extensions/extension_input_ui_api.h" 40 #include "chrome/browser/extensions/extension_input_ui_api.h"
88 #endif 41 #endif
89 42
90 #if defined(OS_CHROMEOS) 43 #if defined(OS_CHROMEOS)
91 #include "chrome/browser/extensions/api/terminal/terminal_private_api.h" 44 #include "chrome/browser/extensions/api/terminal/terminal_private_api.h"
92 #include "chrome/browser/extensions/extension_info_private_api_chromeos.h" 45 #include "chrome/browser/extensions/extension_info_private_api_chromeos.h"
93 #include "chrome/browser/extensions/extension_input_ime_api.h" 46 #include "chrome/browser/extensions/extension_input_ime_api.h"
94 #include "chrome/browser/extensions/extension_input_method_api.h" 47 #include "chrome/browser/extensions/extension_input_method_api.h"
95 #include "chrome/browser/chromeos/extensions/file_browser_private_api.h" 48 #include "chrome/browser/chromeos/extensions/file_browser_private_api.h"
96 #include "chrome/browser/chromeos/media/media_player_extension_api.h" 49 #include "chrome/browser/chromeos/media/media_player_extension_api.h"
97 #endif 50 #endif
98 51
52 #include "third_party/skia/include/core/SkBitmap.h"
53
99 using extensions::ExtensionAPI; 54 using extensions::ExtensionAPI;
100 using WebKit::WebSecurityOrigin; 55 using WebKit::WebSecurityOrigin;
101 56
102 // FactoryRegistry -------------------------------------------------------------
103
104 namespace {
105
106 // Template for defining ExtensionFunctionFactory.
107 template<class T>
108 ExtensionFunction* NewExtensionFunction() {
109 return new T();
110 }
111
112 // Contains a list of all known extension functions and allows clients to
113 // create instances of them.
114 class FactoryRegistry {
115 public:
116 static FactoryRegistry* GetInstance();
117 FactoryRegistry() { ResetFunctions(); }
118
119 // Resets all functions to their default values.
120 void ResetFunctions();
121
122 // Adds all function names to 'names'.
123 void GetAllNames(std::vector<std::string>* names);
124
125 // Allows overriding of specific functions (e.g. for testing). Functions
126 // must be previously registered. Returns true if successful.
127 bool OverrideFunction(const std::string& name,
128 ExtensionFunctionFactory factory);
129
130 // Factory method for the ExtensionFunction registered as 'name'.
131 ExtensionFunction* NewFunction(const std::string& name);
132
133 private:
134 template<class T>
135 void RegisterFunction() {
136 factories_[T::function_name()] = &NewExtensionFunction<T>;
137 }
138
139 typedef std::map<std::string, ExtensionFunctionFactory> FactoryMap;
140 FactoryMap factories_;
141 };
142
143 FactoryRegistry* FactoryRegistry::GetInstance() {
144 return Singleton<FactoryRegistry>::get();
145 }
146
147 void FactoryRegistry::ResetFunctions() {
148 // Register all functions here.
149
150 // Windows
151 RegisterFunction<GetWindowFunction>();
152 RegisterFunction<GetCurrentWindowFunction>();
153 RegisterFunction<GetLastFocusedWindowFunction>();
154 RegisterFunction<GetAllWindowsFunction>();
155 RegisterFunction<CreateWindowFunction>();
156 RegisterFunction<UpdateWindowFunction>();
157 RegisterFunction<RemoveWindowFunction>();
158
159 // Tabs
160 RegisterFunction<GetTabFunction>();
161 RegisterFunction<GetCurrentTabFunction>();
162 RegisterFunction<GetSelectedTabFunction>();
163 RegisterFunction<GetAllTabsInWindowFunction>();
164 RegisterFunction<QueryTabsFunction>();
165 RegisterFunction<HighlightTabsFunction>();
166 RegisterFunction<CreateTabFunction>();
167 RegisterFunction<UpdateTabFunction>();
168 RegisterFunction<MoveTabsFunction>();
169 RegisterFunction<ReloadTabFunction>();
170 RegisterFunction<RemoveTabsFunction>();
171 RegisterFunction<DetectTabLanguageFunction>();
172 RegisterFunction<CaptureVisibleTabFunction>();
173 RegisterFunction<TabsExecuteScriptFunction>();
174 RegisterFunction<TabsInsertCSSFunction>();
175
176 // Page Actions.
177 RegisterFunction<EnablePageActionFunction>();
178 RegisterFunction<DisablePageActionFunction>();
179 RegisterFunction<PageActionShowFunction>();
180 RegisterFunction<PageActionHideFunction>();
181 RegisterFunction<PageActionSetIconFunction>();
182 RegisterFunction<PageActionSetTitleFunction>();
183 RegisterFunction<PageActionSetPopupFunction>();
184
185 // Browser Actions.
186 RegisterFunction<BrowserActionSetIconFunction>();
187 RegisterFunction<BrowserActionSetTitleFunction>();
188 RegisterFunction<BrowserActionSetBadgeTextFunction>();
189 RegisterFunction<BrowserActionSetBadgeBackgroundColorFunction>();
190 RegisterFunction<BrowserActionSetPopupFunction>();
191
192 // Browsing Data.
193 RegisterFunction<RemoveBrowsingDataFunction>();
194 RegisterFunction<RemoveAppCacheFunction>();
195 RegisterFunction<RemoveCacheFunction>();
196 RegisterFunction<RemoveCookiesFunction>();
197 RegisterFunction<RemoveDownloadsFunction>();
198 RegisterFunction<RemoveFileSystemsFunction>();
199 RegisterFunction<RemoveFormDataFunction>();
200 RegisterFunction<RemoveHistoryFunction>();
201 RegisterFunction<RemoveIndexedDBFunction>();
202 RegisterFunction<RemoveLocalStorageFunction>();
203 RegisterFunction<RemoveOriginBoundCertsFunction>();
204 RegisterFunction<RemovePluginDataFunction>();
205 RegisterFunction<RemovePasswordsFunction>();
206 RegisterFunction<RemoveWebSQLFunction>();
207
208 // Bookmarks.
209 RegisterFunction<GetBookmarksFunction>();
210 RegisterFunction<GetBookmarkChildrenFunction>();
211 RegisterFunction<GetBookmarkRecentFunction>();
212 RegisterFunction<GetBookmarkTreeFunction>();
213 RegisterFunction<GetBookmarkSubTreeFunction>();
214 RegisterFunction<SearchBookmarksFunction>();
215 RegisterFunction<RemoveBookmarkFunction>();
216 RegisterFunction<RemoveTreeBookmarkFunction>();
217 RegisterFunction<CreateBookmarkFunction>();
218 RegisterFunction<MoveBookmarkFunction>();
219 RegisterFunction<UpdateBookmarkFunction>();
220
221 // Infobars.
222 RegisterFunction<ShowInfoBarFunction>();
223
224 // BookmarkManager
225 RegisterFunction<CopyBookmarkManagerFunction>();
226 RegisterFunction<CutBookmarkManagerFunction>();
227 RegisterFunction<PasteBookmarkManagerFunction>();
228 RegisterFunction<CanPasteBookmarkManagerFunction>();
229 RegisterFunction<ImportBookmarksFunction>();
230 RegisterFunction<ExportBookmarksFunction>();
231 RegisterFunction<SortChildrenBookmarkManagerFunction>();
232 RegisterFunction<BookmarkManagerGetStringsFunction>();
233 RegisterFunction<StartDragBookmarkManagerFunction>();
234 RegisterFunction<DropBookmarkManagerFunction>();
235 RegisterFunction<GetSubtreeBookmarkManagerFunction>();
236 RegisterFunction<CanEditBookmarkManagerFunction>();
237
238 // History
239 RegisterFunction<AddUrlHistoryFunction>();
240 RegisterFunction<DeleteAllHistoryFunction>();
241 RegisterFunction<DeleteRangeHistoryFunction>();
242 RegisterFunction<DeleteUrlHistoryFunction>();
243 RegisterFunction<GetVisitsHistoryFunction>();
244 RegisterFunction<SearchHistoryFunction>();
245
246 // Idle
247 RegisterFunction<ExtensionIdleQueryStateFunction>();
248
249 // I18N.
250 RegisterFunction<GetAcceptLanguagesFunction>();
251
252 // Processes.
253 RegisterFunction<GetProcessIdForTabFunction>();
254
255 // Metrics.
256 RegisterFunction<MetricsRecordUserActionFunction>();
257 RegisterFunction<MetricsRecordValueFunction>();
258 RegisterFunction<MetricsRecordPercentageFunction>();
259 RegisterFunction<MetricsRecordCountFunction>();
260 RegisterFunction<MetricsRecordSmallCountFunction>();
261 RegisterFunction<MetricsRecordMediumCountFunction>();
262 RegisterFunction<MetricsRecordTimeFunction>();
263 RegisterFunction<MetricsRecordMediumTimeFunction>();
264 RegisterFunction<MetricsRecordLongTimeFunction>();
265
266 // RLZ.
267 #if defined(OS_WIN)
268 RegisterFunction<RlzRecordProductEventFunction>();
269 RegisterFunction<RlzGetAccessPointRlzFunction>();
270 RegisterFunction<RlzSendFinancialPingFunction>();
271 RegisterFunction<RlzClearProductStateFunction>();
272 #endif
273
274 // Cookies.
275 RegisterFunction<GetCookieFunction>();
276 RegisterFunction<GetAllCookiesFunction>();
277 RegisterFunction<SetCookieFunction>();
278 RegisterFunction<RemoveCookieFunction>();
279 RegisterFunction<GetAllCookieStoresFunction>();
280
281 // Test.
282 RegisterFunction<ExtensionTestPassFunction>();
283 RegisterFunction<ExtensionTestFailFunction>();
284 RegisterFunction<ExtensionTestLogFunction>();
285 RegisterFunction<ExtensionTestQuotaResetFunction>();
286 RegisterFunction<ExtensionTestCreateIncognitoTabFunction>();
287 RegisterFunction<ExtensionTestSendMessageFunction>();
288 RegisterFunction<ExtensionTestGetConfigFunction>();
289
290 // Accessibility.
291 RegisterFunction<GetFocusedControlFunction>();
292 RegisterFunction<SetAccessibilityEnabledFunction>();
293 RegisterFunction<GetAlertsForTabFunction>();
294
295 // Text-to-speech.
296 RegisterFunction<ExtensionTtsEngineSendTtsEventFunction>();
297 RegisterFunction<ExtensionTtsGetVoicesFunction>();
298 RegisterFunction<ExtensionTtsIsSpeakingFunction>();
299 RegisterFunction<ExtensionTtsSpeakFunction>();
300 RegisterFunction<ExtensionTtsStopSpeakingFunction>();
301
302 // Context Menus.
303 RegisterFunction<CreateContextMenuFunction>();
304 RegisterFunction<UpdateContextMenuFunction>();
305 RegisterFunction<RemoveContextMenuFunction>();
306 RegisterFunction<RemoveAllContextMenusFunction>();
307
308 // Omnibox.
309 RegisterFunction<OmniboxSendSuggestionsFunction>();
310 RegisterFunction<OmniboxSetDefaultSuggestionFunction>();
311
312 // Speech input.
313 RegisterFunction<StartSpeechInputFunction>();
314 RegisterFunction<StopSpeechInputFunction>();
315 RegisterFunction<IsRecordingSpeechInputFunction>();
316
317 #if defined(TOOLKIT_VIEWS)
318 // Input.
319 RegisterFunction<SendKeyboardEventInputFunction>();
320 #endif
321
322 #if defined(USE_VIRTUAL_KEYBOARD)
323 RegisterFunction<HideKeyboardFunction>();
324 RegisterFunction<SetKeyboardHeightFunction>();
325 #endif
326
327 #if defined(OS_CHROMEOS)
328 // IME
329 RegisterFunction<SetCompositionFunction>();
330 RegisterFunction<ClearCompositionFunction>();
331 RegisterFunction<CommitTextFunction>();
332 RegisterFunction<SetCandidateWindowPropertiesFunction>();
333 RegisterFunction<SetCandidatesFunction>();
334 RegisterFunction<SetCursorPositionFunction>();
335 RegisterFunction<SetMenuItemsFunction>();
336 RegisterFunction<UpdateMenuItemsFunction>();
337
338 RegisterFunction<InputEventHandled>();
339 #if defined(USE_VIRTUAL_KEYBOARD)
340 RegisterFunction<CandidateClickedInputUiFunction>();
341 RegisterFunction<CursorUpInputUiFunction>();
342 RegisterFunction<CursorDownInputUiFunction>();
343 RegisterFunction<PageUpInputUiFunction>();
344 RegisterFunction<PageDownInputUiFunction>();
345 RegisterFunction<RegisterInputUiFunction>();
346 RegisterFunction<PageUpInputUiFunction>();
347 RegisterFunction<PageDownInputUiFunction>();
348 #endif
349 #endif
350
351 // Management.
352 RegisterFunction<GetAllExtensionsFunction>();
353 RegisterFunction<GetExtensionByIdFunction>();
354 RegisterFunction<GetPermissionWarningsByIdFunction>();
355 RegisterFunction<GetPermissionWarningsByManifestFunction>();
356 RegisterFunction<LaunchAppFunction>();
357 RegisterFunction<SetEnabledFunction>();
358 RegisterFunction<UninstallFunction>();
359
360 // Extension module.
361 RegisterFunction<SetUpdateUrlDataFunction>();
362 RegisterFunction<IsAllowedIncognitoAccessFunction>();
363 RegisterFunction<IsAllowedFileSchemeAccessFunction>();
364
365 // WebstorePrivate.
366 RegisterFunction<GetBrowserLoginFunction>();
367 RegisterFunction<GetStoreLoginFunction>();
368 RegisterFunction<SetStoreLoginFunction>();
369 RegisterFunction<InstallBundleFunction>();
370 RegisterFunction<BeginInstallWithManifestFunction>();
371 RegisterFunction<CompleteInstallFunction>();
372 RegisterFunction<SilentlyInstallFunction>();
373 RegisterFunction<GetWebGLStatusFunction>();
374
375 // WebNavigation.
376 RegisterFunction<GetFrameFunction>();
377 RegisterFunction<GetAllFramesFunction>();
378
379 // WebRequest.
380 RegisterFunction<WebRequestAddEventListener>();
381 RegisterFunction<WebRequestEventHandled>();
382 RegisterFunction<WebRequestHandlerBehaviorChanged>();
383
384 // Preferences.
385 RegisterFunction<GetPreferenceFunction>();
386 RegisterFunction<SetPreferenceFunction>();
387 RegisterFunction<ClearPreferenceFunction>();
388
389 // ChromeOS-specific part of the API.
390 #if defined(OS_CHROMEOS)
391 // Device Customization.
392 RegisterFunction<GetChromeosInfoFunction>();
393
394 // FileBrowserPrivate functions.
395 // TODO(jamescook): Expose these on non-ChromeOS platforms so we can use
396 // the extension-based file picker on Aura. crbug.com/97424
397 RegisterFunction<CancelFileDialogFunction>();
398 RegisterFunction<ExecuteTasksFileBrowserFunction>();
399 RegisterFunction<FileDialogStringsFunction>();
400 RegisterFunction<GetFileTasksFileBrowserFunction>();
401 RegisterFunction<GetVolumeMetadataFunction>();
402 RegisterFunction<RequestLocalFileSystemFunction>();
403 RegisterFunction<AddFileWatchBrowserFunction>();
404 RegisterFunction<RemoveFileWatchBrowserFunction>();
405 RegisterFunction<SelectFileFunction>();
406 RegisterFunction<SelectFilesFunction>();
407 RegisterFunction<AddMountFunction>();
408 RegisterFunction<RemoveMountFunction>();
409 RegisterFunction<GetMountPointsFunction>();
410 RegisterFunction<GetSizeStatsFunction>();
411 RegisterFunction<FormatDeviceFunction>();
412 RegisterFunction<ViewFilesFunction>();
413
414 // Mediaplayer
415 RegisterFunction<PlayMediaplayerFunction>();
416 RegisterFunction<GetPlaylistMediaplayerFunction>();
417 RegisterFunction<SetWindowHeightMediaplayerFunction>();
418 RegisterFunction<CloseWindowMediaplayerFunction>();
419
420 // InputMethod
421 RegisterFunction<GetInputMethodFunction>();
422
423 // Terminal
424 RegisterFunction<OpenTerminalProcessFunction>();
425 RegisterFunction<SendInputToTerminalProcessFunction>();
426 RegisterFunction<CloseTerminalProcessFunction>();
427 RegisterFunction<OnTerminalResizeFunction>();
428
429 #if defined(USE_VIRTUAL_KEYBOARD)
430 // Input
431 RegisterFunction<SendHandwritingStrokeFunction>();
432 RegisterFunction<CancelHandwritingStrokesFunction>();
433 #endif
434 #endif
435
436 // Websocket to TCP proxy. Currently noop on anything other than ChromeOS.
437 RegisterFunction<WebSocketProxyPrivateGetPassportForTCPFunction>();
438 RegisterFunction<WebSocketProxyPrivateGetURLForTCPFunction>();
439
440 // Debugger
441 RegisterFunction<AttachDebuggerFunction>();
442 RegisterFunction<DetachDebuggerFunction>();
443 RegisterFunction<SendCommandDebuggerFunction>();
444
445 // Settings
446 RegisterFunction<extensions::GetSettingsFunction>();
447 RegisterFunction<extensions::SetSettingsFunction>();
448 RegisterFunction<extensions::RemoveSettingsFunction>();
449 RegisterFunction<extensions::ClearSettingsFunction>();
450 RegisterFunction<extensions::GetBytesInUseSettingsFunction>();
451
452 // Content settings.
453 RegisterFunction<GetResourceIdentifiersFunction>();
454 RegisterFunction<ClearContentSettingsFunction>();
455 RegisterFunction<GetContentSettingFunction>();
456 RegisterFunction<SetContentSettingFunction>();
457
458 // Font settings.
459 RegisterFunction<GetFontNameFunction>();
460 RegisterFunction<SetFontNameFunction>();
461
462 // ChromeAuth settings.
463 RegisterFunction<SetCloudPrintCredentialsFunction>();
464
465 // Experimental App API.
466 RegisterFunction<AppNotifyFunction>();
467 RegisterFunction<AppClearAllNotificationsFunction>();
468
469 // Permissions
470 RegisterFunction<ContainsPermissionsFunction>();
471 RegisterFunction<GetAllPermissionsFunction>();
472 RegisterFunction<RemovePermissionsFunction>();
473 RegisterFunction<RequestPermissionsFunction>();
474
475 // Downloads
476 RegisterFunction<DownloadsDownloadFunction>();
477 RegisterFunction<DownloadsSearchFunction>();
478 RegisterFunction<DownloadsPauseFunction>();
479 RegisterFunction<DownloadsResumeFunction>();
480 RegisterFunction<DownloadsCancelFunction>();
481 RegisterFunction<DownloadsEraseFunction>();
482 RegisterFunction<DownloadsSetDestinationFunction>();
483 RegisterFunction<DownloadsAcceptDangerFunction>();
484 RegisterFunction<DownloadsShowFunction>();
485 RegisterFunction<DownloadsDragFunction>();
486 RegisterFunction<DownloadsGetFileIconFunction>();
487
488 // PageCapture
489 RegisterFunction<PageCaptureSaveAsMHTMLFunction>();
490
491 // TopSites
492 RegisterFunction<GetTopSitesFunction>();
493
494 // Serial
495 RegisterFunction<extensions::SerialOpenFunction>();
496 RegisterFunction<extensions::SerialCloseFunction>();
497 RegisterFunction<extensions::SerialReadFunction>();
498 RegisterFunction<extensions::SerialWriteFunction>();
499
500 // Sockets
501 RegisterFunction<extensions::SocketCreateFunction>();
502 RegisterFunction<extensions::SocketDestroyFunction>();
503 RegisterFunction<extensions::SocketConnectFunction>();
504 RegisterFunction<extensions::SocketDisconnectFunction>();
505 RegisterFunction<extensions::SocketReadFunction>();
506 RegisterFunction<extensions::SocketWriteFunction>();
507
508 // DNS
509 RegisterFunction<extensions::DNSResolveFunction>();
510
511 // System
512 RegisterFunction<extensions::GetIncognitoModeAvailabilityFunction>();
513 RegisterFunction<extensions::GetUpdateStatusFunction>();
514
515 // Net
516 RegisterFunction<extensions::AddRulesFunction>();
517 RegisterFunction<extensions::RemoveRulesFunction>();
518 RegisterFunction<extensions::GetRulesFunction>();
519 }
520
521 void FactoryRegistry::GetAllNames(std::vector<std::string>* names) {
522 for (FactoryMap::iterator iter = factories_.begin();
523 iter != factories_.end(); ++iter) {
524 names->push_back(iter->first);
525 }
526 }
527
528 bool FactoryRegistry::OverrideFunction(const std::string& name,
529 ExtensionFunctionFactory factory) {
530 FactoryMap::iterator iter = factories_.find(name);
531 if (iter == factories_.end()) {
532 return false;
533 } else {
534 iter->second = factory;
535 return true;
536 }
537 }
538
539 ExtensionFunction* FactoryRegistry::NewFunction(const std::string& name) {
540 FactoryMap::iterator iter = factories_.find(name);
541 DCHECK(iter != factories_.end());
542 ExtensionFunction* function = iter->second();
543 function->set_name(name);
544 return function;
545 }
546
547 const char kAccessDenied[] = "access denied"; 57 const char kAccessDenied[] = "access denied";
548 const char kQuotaExceeded[] = "quota exceeded"; 58 const char kQuotaExceeded[] = "quota exceeded";
549 59
550 void LogSuccess(const Extension* extension, 60 void LogSuccess(const Extension* extension,
551 const ExtensionHostMsg_Request_Params& params) { 61 const ExtensionHostMsg_Request_Params& params) {
552 ExtensionActivityLog* extension_activity_log = 62 ExtensionActivityLog* extension_activity_log =
553 ExtensionActivityLog::GetInstance(); 63 ExtensionActivityLog::GetInstance();
554 if (extension_activity_log->HasObservers(extension)) { 64 if (extension_activity_log->HasObservers(extension)) {
555 std::string call_signature = params.name + "("; 65 std::string call_signature = params.name + "(";
556 ListValue::const_iterator it = params.arguments.begin(); 66 ListValue::const_iterator it = params.arguments.begin();
(...skipping 21 matching lines...) Expand all
578 ExtensionActivityLog* extension_activity_log = 88 ExtensionActivityLog* extension_activity_log =
579 ExtensionActivityLog::GetInstance(); 89 ExtensionActivityLog::GetInstance();
580 if (extension_activity_log->HasObservers(extension)) { 90 if (extension_activity_log->HasObservers(extension)) {
581 extension_activity_log->Log( 91 extension_activity_log->Log(
582 extension, 92 extension,
583 ExtensionActivityLog::ACTIVITY_EXTENSION_API_BLOCK, 93 ExtensionActivityLog::ACTIVITY_EXTENSION_API_BLOCK,
584 func_name + ": " + reason); 94 func_name + ": " + reason);
585 } 95 }
586 } 96 }
587 97
588 }; // namespace
589
590 // ExtensionFunctionDispatcher -------------------------------------------------
591
592 void ExtensionFunctionDispatcher::GetAllFunctionNames( 98 void ExtensionFunctionDispatcher::GetAllFunctionNames(
593 std::vector<std::string>* names) { 99 std::vector<std::string>* names) {
594 FactoryRegistry::GetInstance()->GetAllNames(names); 100 FactoryRegistry::GetInstance()->GetAllNames(names);
595 } 101 }
596 102
597 bool ExtensionFunctionDispatcher::OverrideFunction( 103 bool ExtensionFunctionDispatcher::OverrideFunction(
598 const std::string& name, ExtensionFunctionFactory factory) { 104 const std::string& name, ExtensionFunctionFactory factory) {
599 return FactoryRegistry::GetInstance()->OverrideFunction(name, factory); 105 return FactoryRegistry::GetInstance()->OverrideFunction(name, factory);
600 } 106 }
601 107
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
787 return function; 293 return function;
788 } 294 }
789 295
790 // static 296 // static
791 void ExtensionFunctionDispatcher::SendAccessDenied( 297 void ExtensionFunctionDispatcher::SendAccessDenied(
792 IPC::Message::Sender* ipc_sender, int routing_id, int request_id) { 298 IPC::Message::Sender* ipc_sender, int routing_id, int request_id) {
793 ipc_sender->Send(new ExtensionMsg_Response( 299 ipc_sender->Send(new ExtensionMsg_Response(
794 routing_id, request_id, false, std::string(), 300 routing_id, request_id, false, std::string(),
795 "Access to extension API denied.")); 301 "Access to extension API denied."));
796 } 302 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_function_dispatcher.h ('k') | chrome/browser/extensions/extension_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698