From b62de6b223ad59c0183fb0890f27121c7d24d852 Mon Sep 17 00:00:00 2001 From: "jam@chromium.org" Date: Sat, 21 Feb 2009 08:10:29 +0000 Subject: 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 --- chrome/plugin/npobject_util.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'chrome/plugin/npobject_util.cc') diff --git a/chrome/plugin/npobject_util.cc b/chrome/plugin/npobject_util.cc index e3ba520..7bed9b4 100644 --- a/chrome/plugin/npobject_util.cc +++ b/chrome/plugin/npobject_util.cc @@ -139,7 +139,8 @@ NPIdentifier CreateNPIdentifier(const NPIdentifier_Param& param) { void CreateNPVariantParam(const NPVariant& variant, PluginChannelBase* channel, NPVariant_Param* param, - bool release) { + bool release, + base::WaitableEvent* modal_dialog_event) { switch (variant.type) { case NPVariantType_Void: param->type = NPVARIANT_PARAM_VOID; @@ -184,7 +185,7 @@ void CreateNPVariantParam(const NPVariant& variant, param->type = NPVARIANT_PARAM_OBJECT_ROUTING_ID; int route_id = channel->GenerateRouteID(); NPObjectStub* object_stub = new NPObjectStub( - variant.value.objectValue, channel, route_id); + variant.value.objectValue, channel, route_id, modal_dialog_event); param->npobject_routing_id = route_id; param->npobject_pointer = variant.value.objectValue; } else { -- cgit v1.1