Commit bfe14502 authored by fsamuel@chromium.org's avatar fsamuel@chromium.org

Browser Plugin: Report Guest crash to Javascript

BUG=141207

Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=150664

Review URL: https://chromiumcodereview.appspot.com/10832207

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@150989 0039d316-1c4b-4281-b951-d872f2087c98
parent 609d7ae8
......@@ -37,6 +37,7 @@ using WebKit::WebVector;
namespace content {
namespace {
const char kCrashEventName[] = "crash";
const char kNavigationEventName[] = "navigation";
const char* kSrcAttribute = "src";
}
......@@ -184,6 +185,21 @@ void BrowserPlugin::UpdateRect(
void BrowserPlugin::GuestCrashed() {
guest_crashed_ = true;
container_->invalidate();
if (!HasListeners(kCrashEventName))
return;
EventListeners& listeners = event_listener_map_[kCrashEventName];
EventListeners::iterator it = listeners.begin();
for (; it != listeners.end(); ++it) {
v8::Context::Scope context_scope(v8::Context::New());
v8::HandleScope handle_scope;
container()->element().document().frame()->
callFunctionEvenIfScriptDisabled(*it,
v8::Object::New(),
0,
NULL);
}
}
void BrowserPlugin::DidNavigate(const GURL& url) {
......
......@@ -240,8 +240,22 @@ TEST_F(BrowserPluginTest, GuestCrash) {
BrowserPluginHostMsg_HandleInputEvent::ID));
browser_plugin_manager()->sink().ClearMessages();
const char* kAddEventListener =
"var msg;"
"function crashListener() {"
" msg = 'crashed';"
"}"
"document.getElementById('browserplugin')."
" addEventListener('crash', crashListener);";
ExecuteJavaScript(kAddEventListener);
// Pretend that the guest has crashed
browser_plugin->GuestCrashed();
// Verify that our event listener has fired.
EXPECT_EQ("crashed", ExecuteScriptAndReturnString("msg"));
// Send an event and verify that events are no longer deported.
browser_plugin->handleInputEvent(WebKit::WebMouseEvent(),
cursor_info);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment