Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(378)

Unified Diff: trunk/src/content/browser/renderer_host/render_view_host_impl.cc

Issue 177263002: Revert 252883 "Remove tests and code for showModalDialog" (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: trunk/src/content/browser/renderer_host/render_view_host_impl.cc
===================================================================
--- trunk/src/content/browser/renderer_host/render_view_host_impl.cc (revision 252888)
+++ trunk/src/content/browser/renderer_host/render_view_host_impl.cc (working copy)
@@ -206,6 +206,8 @@
navigations_suspended_(false),
has_accessed_initial_document_(false),
main_frame_routing_id_(main_frame_routing_id),
+ run_modal_reply_msg_(NULL),
+ run_modal_opener_id_(MSG_ROUTING_NONE),
is_waiting_for_beforeunload_ack_(false),
unload_ack_is_for_cross_site_transition_(false),
are_javascript_messages_suppressed_(false),
@@ -1171,6 +1173,7 @@
IPC_MESSAGE_HANDLER(ViewHostMsg_ShowWidget, OnShowWidget)
IPC_MESSAGE_HANDLER(ViewHostMsg_ShowFullscreenWidget,
OnShowFullscreenWidget)
+ IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_RunModal, OnRunModal)
IPC_MESSAGE_HANDLER(ViewHostMsg_RenderViewReady, OnRenderViewReady)
IPC_MESSAGE_HANDLER(ViewHostMsg_RenderProcessGone, OnRenderProcessGone)
IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateState, OnUpdateState)
@@ -1256,6 +1259,25 @@
RenderWidgetHostImpl::Init();
}
+void RenderViewHostImpl::Shutdown() {
+ // If we are being run modally (see RunModal), then we need to cleanup.
+ if (run_modal_reply_msg_) {
+ Send(run_modal_reply_msg_);
+ run_modal_reply_msg_ = NULL;
+ RenderViewHostImpl* opener =
+ RenderViewHostImpl::FromID(GetProcess()->GetID(), run_modal_opener_id_);
+ if (opener) {
+ opener->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(
+ hung_renderer_delay_ms_));
+ // Balance out the decrement when we got created.
+ opener->increment_in_flight_event_count();
+ }
+ run_modal_opener_id_ = MSG_ROUTING_NONE;
+ }
+
+ RenderWidgetHostImpl::Shutdown();
+}
+
bool RenderViewHostImpl::IsRenderView() const {
return true;
}
@@ -1308,6 +1330,26 @@
Send(new ViewMsg_Move_ACK(route_id));
}
+void RenderViewHostImpl::OnRunModal(int opener_id, IPC::Message* reply_msg) {
+ DCHECK(!run_modal_reply_msg_);
+ run_modal_reply_msg_ = reply_msg;
+ run_modal_opener_id_ = opener_id;
+
+ RecordAction(base::UserMetricsAction("ShowModalDialog"));
+
+ RenderViewHostImpl* opener =
+ RenderViewHostImpl::FromID(GetProcess()->GetID(), run_modal_opener_id_);
+ if (opener) {
+ opener->StopHangMonitorTimeout();
+ // The ack for the mouse down won't come until the dialog closes, so fake it
+ // so that we don't get a timeout.
+ opener->decrement_in_flight_event_count();
+ }
+
+ // TODO(darin): Bug 1107929: Need to inform our delegate to show this view in
+ // an app-modal fashion.
+}
+
void RenderViewHostImpl::OnRenderViewReady() {
render_view_termination_status_ = base::TERMINATION_STATUS_STILL_RUNNING;
SendScreenRects();

Powered by Google App Engine
This is Rietveld 408576698