| 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 |