summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/plugin_channel_host.h4
-rw-r--r--chrome/renderer/render_view.cc13
-rw-r--r--chrome/renderer/render_view.h13
-rw-r--r--chrome/renderer/webplugin_delegate_proxy.cc12
4 files changed, 13 insertions, 29 deletions
diff --git a/chrome/renderer/plugin_channel_host.h b/chrome/renderer/plugin_channel_host.h
index 8d27f9a..f3d066b 100644
--- a/chrome/renderer/plugin_channel_host.h
+++ b/chrome/renderer/plugin_channel_host.h
@@ -33,6 +33,10 @@ class PluginChannelHost : public PluginChannelBase {
static bool IsListening();
+ static void Broadcast(IPC::Message* message) {
+ PluginChannelBase::Broadcast(message);
+ }
+
private:
// Called on the render thread
PluginChannelHost();
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index 231cfa7..66ac3bf 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -29,6 +29,7 @@
#include "chrome/common/chrome_constants.h"
#include "chrome/common/jstemplate_builder.h"
#include "chrome/common/page_zoom.h"
+#include "chrome/common/plugin_messages.h"
#include "chrome/common/render_messages.h"
#include "chrome/common/renderer_preferences.h"
#include "chrome/common/thumbnail_score.h"
@@ -44,6 +45,7 @@
#include "chrome/renderer/localized_error.h"
#include "chrome/renderer/media/audio_renderer_impl.h"
#include "chrome/renderer/navigation_state.h"
+#include "chrome/renderer/plugin_channel_host.h"
#include "chrome/renderer/print_web_view_helper.h"
#include "chrome/renderer/render_process.h"
#include "chrome/renderer/user_script_slave.h"
@@ -208,7 +210,6 @@ RenderView::RenderView(RenderThreadBase* render_thread,
last_indexed_page_id_(-1),
opened_by_user_gesture_(true),
ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)),
- modal_dialog_count_(0),
devtools_agent_(NULL),
devtools_client_(NULL),
history_back_list_count_(0),
@@ -230,8 +231,6 @@ RenderView::RenderView(RenderThreadBase* render_thread,
document_tag_(0),
webkit_preferences_(webkit_preferences) {
Singleton<RenderViewSet>()->render_view_set_.insert(this);
-
- modal_dialog_event_.reset(new base::WaitableEvent(true, false));
}
RenderView::~RenderView() {
@@ -3573,14 +3572,14 @@ void RenderView::EnsureDocumentTag() {
}
bool RenderView::SendAndRunNestedMessageLoop(IPC::SyncMessage* message) {
- if (modal_dialog_count_++ == 0)
- modal_dialog_event_->Signal();
+ PluginChannelHost::Broadcast(
+ new PluginMsg_SignalModalDialogEvent(host_window_));
message->EnableMessagePumping(); // Runs a nested message loop.
bool rv = Send(message);
- if (--modal_dialog_count_ == 0)
- modal_dialog_event_->Reset();
+ PluginChannelHost::Broadcast(
+ new PluginMsg_ResetModalDialogEvent(host_window_));
return rv;
}
diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h
index fd8c981..decad59 100644
--- a/chrome/renderer/render_view.h
+++ b/chrome/renderer/render_view.h
@@ -140,10 +140,6 @@ class RenderView : public RenderWidget,
return host_window_;
}
- base::WaitableEvent* modal_dialog_event() {
- return modal_dialog_event_.get();
- }
-
int browser_window_id() {
return browser_window_id_;
}
@@ -819,15 +815,6 @@ class RenderView : public RenderWidget,
// recent message if new ones come in).
scoped_ptr<IPC::Message> queued_find_reply_message_;
- // Handle to an event that's set when the page is showing a modal dialog (or
- // equivalent constrained window). The renderer and any plugin processes
- // check this to know if they should pump messages/tasks then.
- scoped_ptr<base::WaitableEvent> modal_dialog_event_;
-
- // Multiple dialog boxes can be shown before the first one is finished,
- // so we keep a counter to know when we can reset the modal dialog event.
- int modal_dialog_count_;
-
// Provides access to this renderer from the remote Inspector UI.
scoped_ptr<DevToolsAgent> devtools_agent_;
diff --git a/chrome/renderer/webplugin_delegate_proxy.cc b/chrome/renderer/webplugin_delegate_proxy.cc
index 4c5e54e..cdf5720 100644
--- a/chrome/renderer/webplugin_delegate_proxy.cc
+++ b/chrome/renderer/webplugin_delegate_proxy.cc
@@ -271,9 +271,6 @@ bool WebPluginDelegateProxy::Initialize(const GURL& url,
}
}
params.load_manually = load_manually;
-#if defined(OS_WIN)
- params.modal_dialog_event = render_view_->modal_dialog_event()->handle();
-#endif
plugin_ = plugin;
@@ -746,8 +743,7 @@ NPObject* WebPluginDelegateProxy::GetPluginScriptableObject() {
return NULL;
npobject_ = NPObjectProxy::Create(
- channel_host_.get(), route_id, npobject_ptr,
- render_view_->modal_dialog_event(), page_url_);
+ channel_host_.get(), route_id, npobject_ptr, 0, page_url_);
return WebBindings::retainObject(npobject_);
}
@@ -833,8 +829,7 @@ 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,
- render_view_->modal_dialog_event(), page_url_);
+ npobject, channel_host_.get(), route_id, 0, page_url_);
window_script_object_ = stub;
window_script_object_->set_proxy(this);
*success = true;
@@ -853,8 +848,7 @@ void WebPluginDelegateProxy::OnGetPluginElement(
// The stub will delete itself when the proxy tells it that it's released, or
// otherwise when the channel is closed.
new NPObjectStub(
- npobject, channel_host_.get(), route_id,
- render_view_->modal_dialog_event(), page_url_);
+ npobject, channel_host_.get(), route_id, 0, page_url_);
*success = true;
*npobject_ptr = reinterpret_cast<intptr_t>(npobject);
}