OLD | NEW |
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/renderer/extensions/dispatcher.h" | 5 #include "chrome/renderer/extensions/dispatcher.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/string_piece.h" | 10 #include "base/string_piece.h" |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 int manifest_version_; | 320 int manifest_version_; |
321 bool send_request_disabled_; | 321 bool send_request_disabled_; |
322 }; | 322 }; |
323 | 323 |
324 class LoggingNativeHandler : public ObjectBackedNativeHandler { | 324 class LoggingNativeHandler : public ObjectBackedNativeHandler { |
325 public: | 325 public: |
326 explicit LoggingNativeHandler(v8::Handle<v8::Context> context) | 326 explicit LoggingNativeHandler(v8::Handle<v8::Context> context) |
327 : ObjectBackedNativeHandler(context) { | 327 : ObjectBackedNativeHandler(context) { |
328 RouteFunction("DCHECK", | 328 RouteFunction("DCHECK", |
329 base::Bind(&LoggingNativeHandler::Dcheck, base::Unretained(this))); | 329 base::Bind(&LoggingNativeHandler::Dcheck, base::Unretained(this))); |
| 330 RouteFunction("CHECK", |
| 331 base::Bind(&LoggingNativeHandler::Check, base::Unretained(this))); |
| 332 } |
| 333 |
| 334 v8::Handle<v8::Value> Check(const v8::Arguments& args) { |
| 335 bool check_value; |
| 336 std::string error_message; |
| 337 ParseArgs(args, &check_value, &error_message); |
| 338 CHECK(check_value) << error_message; |
| 339 return v8::Undefined(); |
330 } | 340 } |
331 | 341 |
332 v8::Handle<v8::Value> Dcheck(const v8::Arguments& args) { | 342 v8::Handle<v8::Value> Dcheck(const v8::Arguments& args) { |
| 343 bool check_value; |
| 344 std::string error_message; |
| 345 ParseArgs(args, &check_value, &error_message); |
| 346 DCHECK(check_value) << error_message; |
| 347 return v8::Undefined(); |
| 348 } |
| 349 |
| 350 private: |
| 351 void ParseArgs(const v8::Arguments& args, |
| 352 bool* check_value, |
| 353 std::string* error_message) { |
333 CHECK_LE(args.Length(), 2); | 354 CHECK_LE(args.Length(), 2); |
334 bool check_value = args[0]->BooleanValue(); | 355 *check_value = args[0]->BooleanValue(); |
335 std::string error_message; | |
336 if (args.Length() == 2) | 356 if (args.Length() == 2) |
337 error_message = "Error: " + std::string(*v8::String::AsciiValue(args[1])); | 357 *error_message = "Error: " + std::string( |
| 358 *v8::String::AsciiValue(args[1])); |
338 | 359 |
339 v8::Handle<v8::StackTrace> stack_trace = | 360 v8::Handle<v8::StackTrace> stack_trace = |
340 v8::StackTrace::CurrentStackTrace(10); | 361 v8::StackTrace::CurrentStackTrace(10); |
341 if (stack_trace.IsEmpty() || stack_trace->GetFrameCount() <= 0) { | 362 if (stack_trace.IsEmpty() || stack_trace->GetFrameCount() <= 0) { |
342 error_message += "\n <no stack trace>"; | 363 *error_message += "\n <no stack trace>"; |
343 } else { | 364 } else { |
344 for (size_t i = 0; i < (size_t) stack_trace->GetFrameCount(); ++i) { | 365 for (size_t i = 0; i < (size_t) stack_trace->GetFrameCount(); ++i) { |
345 v8::Handle<v8::StackFrame> frame = stack_trace->GetFrame(i); | 366 v8::Handle<v8::StackFrame> frame = stack_trace->GetFrame(i); |
346 CHECK(!frame.IsEmpty()); | 367 CHECK(!frame.IsEmpty()); |
347 error_message += base::StringPrintf("\n at %s (%s:%d:%d)", | 368 *error_message += base::StringPrintf("\n at %s (%s:%d:%d)", |
348 ToStringOrDefault(frame->GetFunctionName(), "<anonymous>").c_str(), | 369 ToStringOrDefault(frame->GetFunctionName(), "<anonymous>").c_str(), |
349 ToStringOrDefault(frame->GetScriptName(), "<anonymous>").c_str(), | 370 ToStringOrDefault(frame->GetScriptName(), "<anonymous>").c_str(), |
350 frame->GetLineNumber(), | 371 frame->GetLineNumber(), |
351 frame->GetColumn()); | 372 frame->GetColumn()); |
352 } | 373 } |
353 } | 374 } |
354 DCHECK(check_value) << error_message; | |
355 return v8::Undefined(); | |
356 } | 375 } |
357 | 376 |
358 private: | |
359 std::string ToStringOrDefault(const v8::Handle<v8::String>& v8_string, | 377 std::string ToStringOrDefault(const v8::Handle<v8::String>& v8_string, |
360 const std::string& dflt) { | 378 const std::string& dflt) { |
361 if (v8_string.IsEmpty()) | 379 if (v8_string.IsEmpty()) |
362 return dflt; | 380 return dflt; |
363 std::string ascii_value = *v8::String::AsciiValue(v8_string); | 381 std::string ascii_value = *v8::String::AsciiValue(v8_string); |
364 return ascii_value.empty() ? dflt : ascii_value; | 382 return ascii_value.empty() ? dflt : ascii_value; |
365 } | 383 } |
366 }; | 384 }; |
367 | 385 |
368 void InstallAppBindings(ModuleSystem* module_system, | 386 void InstallAppBindings(ModuleSystem* module_system, |
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
782 source_map_.RegisterSource("utils", IDR_UTILS_JS); | 800 source_map_.RegisterSource("utils", IDR_UTILS_JS); |
783 source_map_.RegisterSource("entryIdManager", IDR_ENTRY_ID_MANAGER); | 801 source_map_.RegisterSource("entryIdManager", IDR_ENTRY_ID_MANAGER); |
784 | 802 |
785 // Custom bindings. | 803 // Custom bindings. |
786 source_map_.RegisterSource("app", IDR_APP_CUSTOM_BINDINGS_JS); | 804 source_map_.RegisterSource("app", IDR_APP_CUSTOM_BINDINGS_JS); |
787 source_map_.RegisterSource("app.runtime", IDR_APP_RUNTIME_CUSTOM_BINDINGS_JS); | 805 source_map_.RegisterSource("app.runtime", IDR_APP_RUNTIME_CUSTOM_BINDINGS_JS); |
788 source_map_.RegisterSource("app.window", IDR_APP_WINDOW_CUSTOM_BINDINGS_JS); | 806 source_map_.RegisterSource("app.window", IDR_APP_WINDOW_CUSTOM_BINDINGS_JS); |
789 source_map_.RegisterSource("bluetooth", IDR_BLUETOOTH_CUSTOM_BINDINGS_JS); | 807 source_map_.RegisterSource("bluetooth", IDR_BLUETOOTH_CUSTOM_BINDINGS_JS); |
790 source_map_.RegisterSource("browserAction", | 808 source_map_.RegisterSource("browserAction", |
791 IDR_BROWSER_ACTION_CUSTOM_BINDINGS_JS); | 809 IDR_BROWSER_ACTION_CUSTOM_BINDINGS_JS); |
792 source_map_.RegisterSource("contentSettings", | |
793 IDR_CONTENT_SETTINGS_CUSTOM_BINDINGS_JS); | |
794 source_map_.RegisterSource("contextMenus", | 810 source_map_.RegisterSource("contextMenus", |
795 IDR_CONTEXT_MENUS_CUSTOM_BINDINGS_JS); | 811 IDR_CONTEXT_MENUS_CUSTOM_BINDINGS_JS); |
796 source_map_.RegisterSource("declarativeContent", | 812 source_map_.RegisterSource("declarativeContent", |
797 IDR_DECLARATIVE_CONTENT_CUSTOM_BINDINGS_JS); | 813 IDR_DECLARATIVE_CONTENT_CUSTOM_BINDINGS_JS); |
798 source_map_.RegisterSource("declarativeWebRequest", | 814 source_map_.RegisterSource("declarativeWebRequest", |
799 IDR_DECLARATIVE_WEBREQUEST_CUSTOM_BINDINGS_JS); | 815 IDR_DECLARATIVE_WEBREQUEST_CUSTOM_BINDINGS_JS); |
800 source_map_.RegisterSource("downloads", | 816 source_map_.RegisterSource("downloads", |
801 IDR_DOWNLOADS_CUSTOM_BINDINGS_JS); | 817 IDR_DOWNLOADS_CUSTOM_BINDINGS_JS); |
802 source_map_.RegisterSource( | 818 source_map_.RegisterSource( |
803 "experimental.mediaGalleries", | 819 "experimental.mediaGalleries", |
(...skipping 14 matching lines...) Expand all Loading... |
818 source_map_.RegisterSource("notifications", | 834 source_map_.RegisterSource("notifications", |
819 IDR_NOTIFICATIONS_CUSTOM_BINDINGS_JS); | 835 IDR_NOTIFICATIONS_CUSTOM_BINDINGS_JS); |
820 source_map_.RegisterSource("omnibox", IDR_OMNIBOX_CUSTOM_BINDINGS_JS); | 836 source_map_.RegisterSource("omnibox", IDR_OMNIBOX_CUSTOM_BINDINGS_JS); |
821 source_map_.RegisterSource("pageActions", | 837 source_map_.RegisterSource("pageActions", |
822 IDR_PAGE_ACTIONS_CUSTOM_BINDINGS_JS); | 838 IDR_PAGE_ACTIONS_CUSTOM_BINDINGS_JS); |
823 source_map_.RegisterSource("pageAction", IDR_PAGE_ACTION_CUSTOM_BINDINGS_JS); | 839 source_map_.RegisterSource("pageAction", IDR_PAGE_ACTION_CUSTOM_BINDINGS_JS); |
824 source_map_.RegisterSource("pageCapture", | 840 source_map_.RegisterSource("pageCapture", |
825 IDR_PAGE_CAPTURE_CUSTOM_BINDINGS_JS); | 841 IDR_PAGE_CAPTURE_CUSTOM_BINDINGS_JS); |
826 source_map_.RegisterSource("permissions", IDR_PERMISSIONS_CUSTOM_BINDINGS_JS); | 842 source_map_.RegisterSource("permissions", IDR_PERMISSIONS_CUSTOM_BINDINGS_JS); |
827 source_map_.RegisterSource("runtime", IDR_RUNTIME_CUSTOM_BINDINGS_JS); | 843 source_map_.RegisterSource("runtime", IDR_RUNTIME_CUSTOM_BINDINGS_JS); |
828 source_map_.RegisterSource("storage", IDR_STORAGE_CUSTOM_BINDINGS_JS); | |
829 source_map_.RegisterSource("syncFileSystem", | 844 source_map_.RegisterSource("syncFileSystem", |
830 IDR_SYNC_FILE_SYSTEM_CUSTOM_BINDINGS_JS); | 845 IDR_SYNC_FILE_SYSTEM_CUSTOM_BINDINGS_JS); |
831 source_map_.RegisterSource("systemIndicator", | 846 source_map_.RegisterSource("systemIndicator", |
832 IDR_SYSTEM_INDICATOR_CUSTOM_BINDINGS_JS); | 847 IDR_SYSTEM_INDICATOR_CUSTOM_BINDINGS_JS); |
833 source_map_.RegisterSource("tabCapture", IDR_TAB_CAPTURE_CUSTOM_BINDINGS_JS); | 848 source_map_.RegisterSource("tabCapture", IDR_TAB_CAPTURE_CUSTOM_BINDINGS_JS); |
834 source_map_.RegisterSource("tabs", IDR_TABS_CUSTOM_BINDINGS_JS); | 849 source_map_.RegisterSource("tabs", IDR_TABS_CUSTOM_BINDINGS_JS); |
835 source_map_.RegisterSource("tts", IDR_TTS_CUSTOM_BINDINGS_JS); | 850 source_map_.RegisterSource("tts", IDR_TTS_CUSTOM_BINDINGS_JS); |
836 source_map_.RegisterSource("ttsEngine", IDR_TTS_ENGINE_CUSTOM_BINDINGS_JS); | 851 source_map_.RegisterSource("ttsEngine", IDR_TTS_ENGINE_CUSTOM_BINDINGS_JS); |
837 source_map_.RegisterSource("types", IDR_TYPES_CUSTOM_BINDINGS_JS); | |
838 source_map_.RegisterSource("webRequest", IDR_WEB_REQUEST_CUSTOM_BINDINGS_JS); | 852 source_map_.RegisterSource("webRequest", IDR_WEB_REQUEST_CUSTOM_BINDINGS_JS); |
839 source_map_.RegisterSource("webRequestInternal", | 853 source_map_.RegisterSource("webRequestInternal", |
840 IDR_WEB_REQUEST_INTERNAL_CUSTOM_BINDINGS_JS); | 854 IDR_WEB_REQUEST_INTERNAL_CUSTOM_BINDINGS_JS); |
841 source_map_.RegisterSource("webstore", IDR_WEBSTORE_CUSTOM_BINDINGS_JS); | 855 source_map_.RegisterSource("webstore", IDR_WEBSTORE_CUSTOM_BINDINGS_JS); |
842 source_map_.RegisterSource("binding", IDR_BINDING_JS); | 856 source_map_.RegisterSource("binding", IDR_BINDING_JS); |
843 | 857 |
| 858 // Custom types sources. |
| 859 source_map_.RegisterSource("ChromeSetting", IDR_CHROME_SETTING_JS); |
| 860 source_map_.RegisterSource("StorageArea", IDR_STORAGE_AREA_JS); |
| 861 source_map_.RegisterSource("ContentSetting", IDR_CONTENT_SETTING_JS); |
| 862 |
844 // Platform app sources that are not API-specific.. | 863 // Platform app sources that are not API-specific.. |
845 source_map_.RegisterSource("tagWatcher", IDR_TAG_WATCHER_JS); | 864 source_map_.RegisterSource("tagWatcher", IDR_TAG_WATCHER_JS); |
846 // Note: webView not webview so that this doesn't interfere with the | 865 // Note: webView not webview so that this doesn't interfere with the |
847 // chrome.webview API bindings. | 866 // chrome.webview API bindings. |
848 source_map_.RegisterSource("webView", IDR_WEB_VIEW_JS); | 867 source_map_.RegisterSource("webView", IDR_WEB_VIEW_JS); |
849 source_map_.RegisterSource("webViewExperimental", | 868 source_map_.RegisterSource("webViewExperimental", |
850 IDR_WEB_VIEW_EXPERIMENTAL_JS); | 869 IDR_WEB_VIEW_EXPERIMENTAL_JS); |
851 source_map_.RegisterSource("denyWebView", IDR_WEB_VIEW_DENY_JS); | 870 source_map_.RegisterSource("denyWebView", IDR_WEB_VIEW_DENY_JS); |
852 source_map_.RegisterSource("platformApp", IDR_PLATFORM_APP_JS); | 871 source_map_.RegisterSource("platformApp", IDR_PLATFORM_APP_JS); |
853 source_map_.RegisterSource("injectAppTitlebar", IDR_INJECT_APP_TITLEBAR_JS); | 872 source_map_.RegisterSource("injectAppTitlebar", IDR_INJECT_APP_TITLEBAR_JS); |
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1326 std::string error_msg = base::StringPrintf(kMessage, function_name.c_str()); | 1345 std::string error_msg = base::StringPrintf(kMessage, function_name.c_str()); |
1327 v8::ThrowException( | 1346 v8::ThrowException( |
1328 v8::Exception::Error(v8::String::New(error_msg.c_str()))); | 1347 v8::Exception::Error(v8::String::New(error_msg.c_str()))); |
1329 return false; | 1348 return false; |
1330 } | 1349 } |
1331 | 1350 |
1332 return true; | 1351 return true; |
1333 } | 1352 } |
1334 | 1353 |
1335 } // namespace extensions | 1354 } // namespace extensions |
OLD | NEW |