Index: chrome/renderer/extensions/extension_dispatcher.cc |
diff --git a/chrome/renderer/extensions/extension_dispatcher.cc b/chrome/renderer/extensions/extension_dispatcher.cc |
index 7ef396f4882a693d05e5f43db7f8612772f1071b..00a5fb238609d1212da532f9edb0b1390ee5edc2 100644 |
--- a/chrome/renderer/extensions/extension_dispatcher.cc |
+++ b/chrome/renderer/extensions/extension_dispatcher.cc |
@@ -208,6 +208,25 @@ class ChannelNativeHandler : public NativeHandler { |
chrome::VersionInfo::Channel channel_; |
}; |
+class DebugNativeHandler : public NativeHandler { |
+ public: |
+ DebugNativeHandler() { |
+ RouteFunction("DCHECK", |
+ base::Bind(&DebugNativeHandler::Dcheck, |
+ base::Unretained(this))); |
+ } |
+ |
+ v8::Handle<v8::Value> Dcheck(const v8::Arguments& args) { |
+ CHECK_LE(args.Length(), 2); |
+ bool check_value = args[0]->BooleanValue(); |
benwells
2012/07/03 23:34:29
Oh yeah, forgot to ask: Does this handle passing n
koz (OOO until 15th September)
2012/07/05 04:38:32
This will convert any JS values to bools using the
|
+ std::string error_message; |
+ if (args.Length() == 2) |
+ error_message = *v8::String::AsciiValue(args[1]); |
not at google - send to devlin
2012/07/03 07:47:04
Is there a way to get a v8 stack trace in here?
koz (OOO until 15th September)
2012/07/05 04:38:32
Yes, it turns out. Done.
|
+ DCHECK(check_value) << error_message; |
+ return v8::Undefined(); |
+ } |
+}; |
+ |
void InstallAppBindings(ModuleSystem* module_system, |
v8::Handle<v8::Object> chrome, |
v8::Handle<v8::Object> chrome_hidden) { |
@@ -226,7 +245,7 @@ void InstallWebstoreBindings(ModuleSystem* module_system, |
"chromeHiddenWebstore"); |
} |
-} |
+} // namespace |
ExtensionDispatcher::ExtensionDispatcher() |
: is_webkit_initialized_(false), |
@@ -681,6 +700,8 @@ void ExtensionDispatcher::DidCreateScriptContext( |
module_system->RegisterNativeHandler("channel", |
scoped_ptr<NativeHandler>(new ChannelNativeHandler( |
static_cast<chrome::VersionInfo::Channel>(chrome_channel_)))); |
+ module_system->RegisterNativeHandler("debug", |
+ scoped_ptr<NativeHandler>(new DebugNativeHandler())); |
not at google - send to devlin
2012/07/03 07:47:04
drive-by: DCHECK is in base/logging.h, so perhaps
koz (OOO until 15th September)
2012/07/05 04:38:32
Done.
|
// Create the 'chrome' variable if it doesn't already exist. |
{ |
v8::HandleScope handle_scope; |