Index: chrome/renderer/extensions/dispatcher.cc |
diff --git a/chrome/renderer/extensions/dispatcher.cc b/chrome/renderer/extensions/dispatcher.cc |
index e6c06a64272d60b68b2d4350b0ea72f8d2ac82ff..cedd40fd72e05cab1a4c884238b33ee03365d22f 100644 |
--- a/chrome/renderer/extensions/dispatcher.cc |
+++ b/chrome/renderer/extensions/dispatcher.cc |
@@ -327,35 +327,53 @@ class LoggingNativeHandler : public ObjectBackedNativeHandler { |
: ObjectBackedNativeHandler(context) { |
RouteFunction("DCHECK", |
base::Bind(&LoggingNativeHandler::Dcheck, base::Unretained(this))); |
+ RouteFunction("CHECK", |
+ base::Bind(&LoggingNativeHandler::Check, base::Unretained(this))); |
+ } |
+ |
+ v8::Handle<v8::Value> Check(const v8::Arguments& args) { |
+ bool check_value; |
+ std::string error_message; |
+ ParseArgs(args, &check_value, &error_message); |
+ CHECK(check_value) << error_message; |
+ return v8::Undefined(); |
} |
v8::Handle<v8::Value> Dcheck(const v8::Arguments& args) { |
- CHECK_LE(args.Length(), 2); |
- bool check_value = args[0]->BooleanValue(); |
+ bool check_value; |
std::string error_message; |
+ ParseArgs(args, &check_value, &error_message); |
+ DCHECK(check_value) << error_message; |
+ return v8::Undefined(); |
+ } |
+ |
+ private: |
+ void ParseArgs(const v8::Arguments& args, |
+ bool* check_value, |
+ std::string* error_message) { |
+ CHECK_LE(args.Length(), 2); |
+ *check_value = args[0]->BooleanValue(); |
if (args.Length() == 2) |
- error_message = "Error: " + std::string(*v8::String::AsciiValue(args[1])); |
+ *error_message = "Error: " + std::string( |
+ *v8::String::AsciiValue(args[1])); |
v8::Handle<v8::StackTrace> stack_trace = |
v8::StackTrace::CurrentStackTrace(10); |
if (stack_trace.IsEmpty() || stack_trace->GetFrameCount() <= 0) { |
- error_message += "\n <no stack trace>"; |
+ *error_message += "\n <no stack trace>"; |
} else { |
for (size_t i = 0; i < (size_t) stack_trace->GetFrameCount(); ++i) { |
v8::Handle<v8::StackFrame> frame = stack_trace->GetFrame(i); |
CHECK(!frame.IsEmpty()); |
- error_message += base::StringPrintf("\n at %s (%s:%d:%d)", |
+ *error_message += base::StringPrintf("\n at %s (%s:%d:%d)", |
ToStringOrDefault(frame->GetFunctionName(), "<anonymous>").c_str(), |
ToStringOrDefault(frame->GetScriptName(), "<anonymous>").c_str(), |
frame->GetLineNumber(), |
frame->GetColumn()); |
} |
} |
- DCHECK(check_value) << error_message; |
- return v8::Undefined(); |
} |
- private: |
std::string ToStringOrDefault(const v8::Handle<v8::String>& v8_string, |
const std::string& dflt) { |
if (v8_string.IsEmpty()) |
@@ -789,8 +807,6 @@ void Dispatcher::PopulateSourceMap() { |
source_map_.RegisterSource("bluetooth", IDR_BLUETOOTH_CUSTOM_BINDINGS_JS); |
source_map_.RegisterSource("browserAction", |
IDR_BROWSER_ACTION_CUSTOM_BINDINGS_JS); |
- source_map_.RegisterSource("contentSettings", |
- IDR_CONTENT_SETTINGS_CUSTOM_BINDINGS_JS); |
source_map_.RegisterSource("contextMenus", |
IDR_CONTEXT_MENUS_CUSTOM_BINDINGS_JS); |
source_map_.RegisterSource("declarativeContent", |
@@ -825,7 +841,6 @@ void Dispatcher::PopulateSourceMap() { |
IDR_PAGE_CAPTURE_CUSTOM_BINDINGS_JS); |
source_map_.RegisterSource("permissions", IDR_PERMISSIONS_CUSTOM_BINDINGS_JS); |
source_map_.RegisterSource("runtime", IDR_RUNTIME_CUSTOM_BINDINGS_JS); |
- source_map_.RegisterSource("storage", IDR_STORAGE_CUSTOM_BINDINGS_JS); |
source_map_.RegisterSource("syncFileSystem", |
IDR_SYNC_FILE_SYSTEM_CUSTOM_BINDINGS_JS); |
source_map_.RegisterSource("systemIndicator", |
@@ -834,13 +849,17 @@ void Dispatcher::PopulateSourceMap() { |
source_map_.RegisterSource("tabs", IDR_TABS_CUSTOM_BINDINGS_JS); |
source_map_.RegisterSource("tts", IDR_TTS_CUSTOM_BINDINGS_JS); |
source_map_.RegisterSource("ttsEngine", IDR_TTS_ENGINE_CUSTOM_BINDINGS_JS); |
- source_map_.RegisterSource("types", IDR_TYPES_CUSTOM_BINDINGS_JS); |
source_map_.RegisterSource("webRequest", IDR_WEB_REQUEST_CUSTOM_BINDINGS_JS); |
source_map_.RegisterSource("webRequestInternal", |
IDR_WEB_REQUEST_INTERNAL_CUSTOM_BINDINGS_JS); |
source_map_.RegisterSource("webstore", IDR_WEBSTORE_CUSTOM_BINDINGS_JS); |
source_map_.RegisterSource("binding", IDR_BINDING_JS); |
+ // Custom types sources. |
+ source_map_.RegisterSource("ChromeSetting", IDR_CHROME_SETTING_JS); |
+ source_map_.RegisterSource("StorageArea", IDR_STORAGE_AREA_JS); |
+ source_map_.RegisterSource("ContentSetting", IDR_CONTENT_SETTING_JS); |
+ |
// Platform app sources that are not API-specific.. |
source_map_.RegisterSource("tagWatcher", IDR_TAG_WATCHER_JS); |
// Note: webView not webview so that this doesn't interfere with the |