Index: chrome/plugin/webplugin_proxy.cc |
diff --git a/chrome/plugin/webplugin_proxy.cc b/chrome/plugin/webplugin_proxy.cc |
index 0bd6ed82b5df293db4a2fc1b1515646630bdcf0d..bb7ee5c6afe5cf7b15fadbdcc53402bfcd9324ab 100644 |
--- a/chrome/plugin/webplugin_proxy.cc |
+++ b/chrome/plugin/webplugin_proxy.cc |
@@ -8,6 +8,7 @@ |
#include "base/scoped_handle.h" |
#include "base/shared_memory.h" |
#include "base/singleton.h" |
+#include "base/waitable_event.h" |
#include "chrome/common/gfx/chrome_canvas.h" |
#include "chrome/common/plugin_messages.h" |
#include "chrome/common/win_util.h" |
@@ -47,7 +48,7 @@ WebPluginProxy::WebPluginProxy( |
FALSE, |
0); |
DCHECK(result) << "Couldn't duplicate the modal dialog handle for the plugin."; |
- modal_dialog_event_.Set(event); |
+ modal_dialog_event_.reset(new base::WaitableEvent(event)); |
} |
WebPluginProxy::~WebPluginProxy() { |
@@ -121,7 +122,7 @@ NPObject* WebPluginProxy::GetWindowScriptNPObject() { |
window_npobject_ = NPObjectProxy::Create(channel_, |
npobject_route_id, |
npobject_ptr, |
- modal_dialog_event_.Get()); |
+ modal_dialog_event_.get()); |
return window_npobject_; |
} |
@@ -141,7 +142,7 @@ NPObject* WebPluginProxy::GetPluginElement() { |
plugin_element_ = NPObjectProxy::Create(channel_, |
npobject_route_id, |
npobject_ptr, |
- modal_dialog_event_.Get()); |
+ modal_dialog_event_.get()); |
return plugin_element_; |
} |
@@ -170,8 +171,9 @@ void WebPluginProxy::ShowModalHTMLDialog(const GURL& url, int width, int height, |
// Create a new event and set it. This forces us to pump messages while |
// waiting for a response (which won't come until the dialog is closed). This |
// avoids a deadlock. |
- ScopedHandle event(CreateEvent(NULL, FALSE, TRUE, NULL)); |
- msg->set_pump_messages_event(event); |
+ scoped_ptr<base::WaitableEvent> event( |
+ new base::WaitableEvent(false, true)); |
+ msg->set_pump_messages_event(event.get()); |
Send(msg); |
} |