diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-21 08:10:29 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-21 08:10:29 +0000 |
commit | b62de6b223ad59c0183fb0890f27121c7d24d852 (patch) | |
tree | 92787f54447c363052070044c7033f56c62e262f /chrome/renderer | |
parent | 8930d471c128ed74b11beaa78ea1b171c1ac7157 (diff) | |
download | chromium_src-b62de6b223ad59c0183fb0890f27121c7d24d852.zip chromium_src-b62de6b223ad59c0183fb0890f27121c7d24d852.tar.gz chromium_src-b62de6b223ad59c0183fb0890f27121c7d24d852.tar.bz2 |
Fix plugin hang that Earth team found.
Normally an NPObjectProxy uses the modal dialog event to figure out when it needs to pump window messages in an invoke. However, an NPObjectProxy created by an NPObjectStub never got access to this event, which led to this hang.
BUG=7793
Review URL: http://codereview.chromium.org/20515
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10145 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/webplugin_delegate_proxy.cc | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/chrome/renderer/webplugin_delegate_proxy.cc b/chrome/renderer/webplugin_delegate_proxy.cc index bc0754e..0e63b57 100644 --- a/chrome/renderer/webplugin_delegate_proxy.cc +++ b/chrome/renderer/webplugin_delegate_proxy.cc @@ -545,7 +545,8 @@ NPObject* WebPluginDelegateProxy::GetPluginScriptableObject() { return NULL; npobject_ = NPObjectProxy::Create( - channel_host_.get(), route_id, npobject_ptr, NULL); + channel_host_.get(), route_id, npobject_ptr, + render_view_->modal_dialog_event()); return NPN_RetainObject(npobject_); } @@ -618,8 +619,9 @@ void WebPluginDelegateProxy::OnGetWindowScriptNPObject( // The stub will delete itself when the proxy tells it that it's released, or // otherwise when the channel is closed. - NPObjectStub* stub = new NPObjectStub(npobject, channel_host_.get(), - route_id); + NPObjectStub* stub = new NPObjectStub( + npobject, channel_host_.get(), route_id, + render_view_->modal_dialog_event()); window_script_object_ = stub; window_script_object_->set_proxy(this); *success = true; @@ -637,8 +639,9 @@ void WebPluginDelegateProxy::OnGetPluginElement( // The stub will delete itself when the proxy tells it that it's released, or // otherwise when the channel is closed. - NPObjectStub* stub = new NPObjectStub(npobject, channel_host_.get(), - route_id); + NPObjectStub* stub = new NPObjectStub( + npobject, channel_host_.get(), route_id, + render_view_->modal_dialog_event()); *success = true; *npobject_ptr = npobject; } |