Chromium Code Reviews| Index: content/renderer/browser_plugin/browser_plugin.cc |
| diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc |
| index ed0f293678b2d13a4c5398ce6640fec90470115a..ae4fe8ffa2864663ccddffa7aa34c4db6ce5e235 100644 |
| --- a/content/renderer/browser_plugin/browser_plugin.cc |
| +++ b/content/renderer/browser_plugin/browser_plugin.cc |
| @@ -324,16 +324,18 @@ void BrowserPlugin::GuestCrashed() { |
| if (!HasListeners(kCrashEventName)) |
| return; |
| - EventListeners& listeners = event_listener_map_[kCrashEventName]; |
| + WebKit::WebFrame* frame = container()->element().document().frame(); |
| + v8::HandleScope handle_scope; |
| + v8::Context::Scope context_scope(frame->mainWorldScriptContext()); |
| + |
| + 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); |
| + frame->callFunctionEvenIfScriptDisabled(*it, |
|
abarth-chromium
2012/10/09 18:38:18
How do you know that this call doesn't destroy |fr
Fady Samuel
2012/10/09 20:25:11
Done.
|
| + v8::Object::New(), |
| + 0, |
| + NULL); |
| } |
| } |
| @@ -343,18 +345,20 @@ void BrowserPlugin::DidNavigate(const GURL& url, int process_id) { |
| if (!HasListeners(kNavigationEventName)) |
| return; |
| - EventListeners& listeners = event_listener_map_[kNavigationEventName]; |
| + WebKit::WebFrame* frame = container()->element().document().frame(); |
| + v8::HandleScope handle_scope; |
| + v8::Context::Scope context_scope(frame->mainWorldScriptContext()); |
| + |
| + v8::Local<v8::Value> param = |
| + v8::Local<v8::Value>::New(v8::String::New(src_.c_str())); |
|
abarth-chromium
2012/10/09 18:38:18
It's more efficient to the two-argument form of v8
Fady Samuel
2012/10/09 20:25:11
Done.
|
| + |
| + EventListeners listeners(event_listener_map_[kNavigationEventName]); |
| EventListeners::iterator it = listeners.begin(); |
| for (; it != listeners.end(); ++it) { |
| - v8::Context::Scope context_scope(v8::Context::New()); |
| - v8::HandleScope handle_scope; |
| - v8::Local<v8::Value> param = |
| - v8::Local<v8::Value>::New(v8::String::New(src_.c_str())); |
| - container()->element().document().frame()-> |
| - callFunctionEvenIfScriptDisabled(*it, |
| - v8::Object::New(), |
| - 1, |
| - ¶m); |
| + frame->callFunctionEvenIfScriptDisabled(*it, |
| + v8::Object::New(), |
| + 1, |
| + ¶m); |
| } |
| } |
| @@ -362,27 +366,27 @@ void BrowserPlugin::LoadStart(const GURL& url, bool is_top_level) { |
| if (!HasListeners(kLoadStartEventName)) |
| return; |
| - EventListeners& listeners = event_listener_map_[kLoadStartEventName]; |
| - EventListeners::iterator it = listeners.begin(); |
| - |
| - v8::Context::Scope context_scope(v8::Context::New()); |
| + WebKit::WebFrame* frame = container()->element().document().frame(); |
| v8::HandleScope handle_scope; |
| + v8::Context::Scope context_scope(frame->mainWorldScriptContext()); |
| + |
| // Construct the loadStart event object. |
| - v8::Local<v8::Value> event = |
| + v8::Local<v8::Object> event = |
| v8::Local<v8::Object>::New(v8::Object::New()); |
|
abarth-chromium
2012/10/09 18:38:18
v8::Object::New already returns a local handle. T
Fady Samuel
2012/10/09 20:25:11
Done.
|
| - v8::Local<v8::Object>::Cast(event)->Set( |
| - v8::String::New(kURL, sizeof(kURL) - 1), |
| - v8::String::New(url.spec().c_str(), url.spec().size())); |
| - v8::Local<v8::Object>::Cast(event)->Set( |
| - v8::String::New(kIsTopLevel, sizeof(kIsTopLevel) - 1), |
| - v8::Boolean::New(is_top_level)); |
| + event->Set(v8::String::New(kURL, sizeof(kURL) - 1), |
| + v8::String::New(url.spec().c_str(), url.spec().size())); |
|
abarth-chromium
2012/10/09 18:38:18
There's no reason to call c_str here because you d
Fady Samuel
2012/10/09 20:25:11
Done.
|
| + event->Set(v8::String::New(kIsTopLevel, sizeof(kIsTopLevel) - 1), |
| + v8::Boolean::New(is_top_level)); |
| + v8::Local<v8::Value> val = event; |
| + |
| + EventListeners listeners(event_listener_map_[kLoadStartEventName]); |
| + EventListeners::iterator it = listeners.begin(); |
| for (; it != listeners.end(); ++it) { |
| // Fire the event listener. |
| - container()->element().document().frame()-> |
| - callFunctionEvenIfScriptDisabled(*it, |
| - v8::Object::New(), |
| - 1, |
| - &event); |
| + frame->callFunctionEvenIfScriptDisabled(*it, |
| + v8::Object::New(), |
| + 1, |
| + &val); |
| } |
| } |
| @@ -392,30 +396,29 @@ void BrowserPlugin::LoadAbort(const GURL& url, |
| if (!HasListeners(kLoadAbortEventName)) |
| return; |
| - EventListeners& listeners = event_listener_map_[kLoadAbortEventName]; |
| - EventListeners::iterator it = listeners.begin(); |
| - |
| - v8::Context::Scope context_scope(v8::Context::New()); |
| + WebKit::WebFrame* frame = container()->element().document().frame(); |
| v8::HandleScope handle_scope; |
| + v8::Context::Scope context_scope(frame->mainWorldScriptContext()); |
| + |
| // Construct the loadAbort event object. |
| - v8::Local<v8::Value> event = |
| + v8::Local<v8::Object> event = |
| v8::Local<v8::Object>::New(v8::Object::New()); |
| - v8::Local<v8::Object>::Cast(event)->Set( |
| - v8::String::New(kURL, sizeof(kURL) - 1), |
| - v8::String::New(url.spec().c_str(), url.spec().size())); |
| - v8::Local<v8::Object>::Cast(event)->Set( |
| - v8::String::New(kIsTopLevel, sizeof(kIsTopLevel) - 1), |
| - v8::Boolean::New(is_top_level)); |
| - v8::Local<v8::Object>::Cast(event)->Set( |
| - v8::String::New(kType, sizeof(kType) - 1), |
| - v8::String::New(type.c_str(), type.size())); |
| + event->Set(v8::String::New(kURL, sizeof(kURL) - 1), |
| + v8::String::New(url.spec().c_str(), url.spec().size())); |
| + event->Set(v8::String::New(kIsTopLevel, sizeof(kIsTopLevel) - 1), |
| + v8::Boolean::New(is_top_level)); |
| + event->Set(v8::String::New(kType, sizeof(kType) - 1), |
| + v8::String::New(type.c_str(), type.size())); |
| + v8::Local<v8::Value> val = event; |
| + |
| + EventListeners listeners(event_listener_map_[kLoadAbortEventName]); |
| + EventListeners::iterator it = listeners.begin(); |
| for (; it != listeners.end(); ++it) { |
| // Fire the event listener. |
| - container()->element().document().frame()-> |
| - callFunctionEvenIfScriptDisabled(*it, |
| - v8::Object::New(), |
| - 1, |
| - &event); |
| + frame->callFunctionEvenIfScriptDisabled(*it, |
| + v8::Object::New(), |
| + 1, |
| + &val); |
| } |
| } |
| @@ -425,31 +428,29 @@ void BrowserPlugin::LoadRedirect(const GURL& old_url, |
| if (!HasListeners(kLoadRedirectEventName)) |
| return; |
| - EventListeners& listeners = event_listener_map_[kLoadRedirectEventName]; |
| - EventListeners::iterator it = listeners.begin(); |
| - |
| - v8::Context::Scope context_scope(v8::Context::New()); |
| + WebKit::WebFrame* frame = container()->element().document().frame(); |
| v8::HandleScope handle_scope; |
| + v8::Context::Scope context_scope(frame->mainWorldScriptContext()); |
| // Construct the loadRedirect event object. |
| - v8::Local<v8::Value> event = |
| + v8::Local<v8::Object> event = |
| v8::Local<v8::Object>::New(v8::Object::New()); |
| - v8::Local<v8::Object>::Cast(event)->Set( |
| - v8::String::New(kOldURL, sizeof(kOldURL) - 1), |
| - v8::String::New(old_url.spec().c_str(), old_url.spec().size())); |
| - v8::Local<v8::Object>::Cast(event)->Set( |
| - v8::String::New(kNewURL, sizeof(kNewURL) - 1), |
| - v8::String::New(new_url.spec().c_str(), new_url.spec().size())); |
| - v8::Local<v8::Object>::Cast(event)->Set( |
| - v8::String::New(kIsTopLevel, sizeof(kIsTopLevel) - 1), |
| - v8::Boolean::New(is_top_level)); |
| + event->Set(v8::String::New(kOldURL, sizeof(kOldURL) - 1), |
| + v8::String::New(old_url.spec().c_str(), old_url.spec().size())); |
| + event->Set(v8::String::New(kNewURL, sizeof(kNewURL) - 1), |
| + v8::String::New(new_url.spec().c_str(), new_url.spec().size())); |
| + event->Set(v8::String::New(kIsTopLevel, sizeof(kIsTopLevel) - 1), |
| + v8::Boolean::New(is_top_level)); |
| + v8::Local<v8::Value> val = event; |
| + |
| + EventListeners listeners(event_listener_map_[kLoadRedirectEventName]); |
| + EventListeners::iterator it = listeners.begin(); |
| for (; it != listeners.end(); ++it) { |
| // Fire the event listener. |
| - container()->element().document().frame()-> |
| - callFunctionEvenIfScriptDisabled(*it, |
| - v8::Object::New(), |
| - 1, |
| - &event); |
| + frame->callFunctionEvenIfScriptDisabled(*it, |
| + v8::Object::New(), |
| + 1, |
| + &val); |
| } |
| } |