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

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: fix tts 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
Index: chrome/renderer/extensions/extension_dispatcher.cc
diff --git a/chrome/renderer/extensions/extension_dispatcher.cc b/chrome/renderer/extensions/extension_dispatcher.cc
index f668bafdb3b075cbcd0a60e4b13457fbf9679cd0..c55a465509ee6f0e8ff87f5fa3f0a2921d9ec7fa 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::stringstream error_message;
Matt Perry 2012/07/09 20:36:47 Streams are forbidden by the style guide. Use Stri
koz (OOO until 15th September) 2012/07/11 00:00:38 Done.
+ if (args.Length() == 2)
+ error_message << "Error: " << *v8::String::AsciiValue(args[1])
+ << std::endl;
+
+ v8::Handle<v8::Array> stack_trace(
+ v8::StackTrace::CurrentStackTrace(10)->AsArray());
+ error_message << "Stack trace: {" << std::endl;
+ for (size_t i = 0; i < stack_trace->Length(); i++) {
+ error_message << " " << *v8::String::AsciiValue(stack_trace->Get(i))
+ << std::endl;
+ }
+ error_message << "}";
+ DCHECK(check_value) << error_message.str();
+ 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;

Powered by Google App Engine
This is Rietveld 408576698