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

Unified Diff: chrome/renderer/extensions/extension_dispatcher.cc

Issue 10704073: Plumb listenerIDs correctly for events that clobber chrome.Event.prototype.dispatch. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/extensions/event_unittest.cc ('k') | chrome/renderer/module_system.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/extensions/extension_dispatcher.cc
diff --git a/chrome/renderer/extensions/extension_dispatcher.cc b/chrome/renderer/extensions/extension_dispatcher.cc
index 9dc2c8954edc4be345b945cc391a0e72a98ad5d3..63c893ff2f7d5a5ee7d8722af90e5a6aa473a7e2 100644
--- a/chrome/renderer/extensions/extension_dispatcher.cc
+++ b/chrome/renderer/extensions/extension_dispatcher.cc
@@ -211,6 +211,35 @@ class ChannelNativeHandler : public NativeHandler {
chrome::VersionInfo::Channel channel_;
};
+class LoggingNativeHandler : public NativeHandler {
+ public:
+ LoggingNativeHandler() {
+ RouteFunction("DCHECK",
+ base::Bind(&LoggingNativeHandler::Dcheck,
+ base::Unretained(this)));
+ }
+
+ v8::Handle<v8::Value> Dcheck(const v8::Arguments& args) {
+ CHECK_LE(args.Length(), 2);
+ bool check_value = args[0]->BooleanValue();
+ std::string error_message;
+ if (args.Length() == 2)
+ error_message += "Error: " + std::string(*v8::String::AsciiValue(args[1]))
+ + "\n";
+
+ v8::Handle<v8::Array> stack_trace(
+ v8::StackTrace::CurrentStackTrace(10)->AsArray());
+ error_message += "Stack trace: {\n";
+ for (size_t i = 0; i < stack_trace->Length(); i++) {
+ error_message += " "
+ + std::string(*v8::String::AsciiValue(stack_trace->Get(i))) + "\n";
+ }
+ error_message += "}";
+ DCHECK(check_value) << error_message;
+ return v8::Undefined();
+ }
+};
+
void InstallAppBindings(ModuleSystem* module_system,
v8::Handle<v8::Object> chrome,
v8::Handle<v8::Object> chrome_hidden) {
@@ -229,7 +258,7 @@ void InstallWebstoreBindings(ModuleSystem* module_system,
"chromeHiddenWebstore");
}
-}
+} // namespace
ExtensionDispatcher::ExtensionDispatcher()
: is_webkit_initialized_(false),
@@ -690,6 +719,8 @@ void ExtensionDispatcher::DidCreateScriptContext(
module_system->RegisterNativeHandler("channel",
scoped_ptr<NativeHandler>(new ChannelNativeHandler(
static_cast<chrome::VersionInfo::Channel>(chrome_channel_))));
+ module_system->RegisterNativeHandler("logging",
+ scoped_ptr<NativeHandler>(new LoggingNativeHandler()));
// Create the 'chrome' variable if it doesn't already exist.
{
v8::HandleScope handle_scope;
« no previous file with comments | « chrome/renderer/extensions/event_unittest.cc ('k') | chrome/renderer/module_system.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698