| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index e24d104958ac5e423bed4d270eb2d801d205759b..7f2c47d7d14274e4fc538a03eec09c3b14797f7b 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -1023,6 +1023,7 @@ RenderFrameImpl::RenderFrameImpl(const CreateParams& params)
|
| media_player_delegate_(NULL),
|
| is_using_lofi_(false),
|
| is_pasting_(false),
|
| + suppress_further_dialogs_(false),
|
| blame_context_(nullptr),
|
| weak_factory_(this) {
|
| std::pair<RoutingIDFrameMap::iterator, bool> result =
|
| @@ -1438,6 +1439,8 @@ bool RenderFrameImpl::OnMessageReceived(const IPC::Message& msg) {
|
| IPC_MESSAGE_HANDLER(FrameMsg_Find, OnFind)
|
| IPC_MESSAGE_HANDLER(FrameMsg_StopFinding, OnStopFinding)
|
| IPC_MESSAGE_HANDLER(FrameMsg_EnableViewSourceMode, OnEnableViewSourceMode)
|
| + IPC_MESSAGE_HANDLER(FrameMsg_SuppressFurtherDialogs,
|
| + OnSuppressFurtherDialogs)
|
| #if defined(OS_ANDROID)
|
| IPC_MESSAGE_HANDLER(InputMsg_ActivateNearestFindResult,
|
| OnActivateNearestFindResult)
|
| @@ -1569,11 +1572,6 @@ void RenderFrameImpl::OnSwapOut(
|
| blink::WebPageVisibilityStateHidden, false);
|
| }
|
|
|
| - // It is now safe to show modal dialogs again.
|
| - // TODO(creis): Deal with modal dialogs from subframes.
|
| - if (is_main_frame_)
|
| - render_view_->suppress_dialogs_until_swap_out_ = false;
|
| -
|
| Send(new FrameHostMsg_SwapOut_ACK(routing_id_));
|
|
|
| RenderViewImpl* render_view = render_view_.get();
|
| @@ -2145,8 +2143,8 @@ bool RenderFrameImpl::RunJavaScriptMessage(JavaScriptMessageType type,
|
| const GURL& frame_url,
|
| base::string16* result) {
|
| // Don't allow further dialogs if we are waiting to swap out, since the
|
| - // PageGroupLoadDeferrer in our stack prevents it.
|
| - if (render_view()->suppress_dialogs_until_swap_out_)
|
| + // ScopedPageLoadDeferrer in our stack prevents it.
|
| + if (suppress_further_dialogs_)
|
| return false;
|
|
|
| bool success = false;
|
| @@ -3609,8 +3607,8 @@ bool RenderFrameImpl::runModalPromptDialog(
|
|
|
| bool RenderFrameImpl::runModalBeforeUnloadDialog(bool is_reload) {
|
| // Don't allow further dialogs if we are waiting to swap out, since the
|
| - // PageGroupLoadDeferrer in our stack prevents it.
|
| - if (render_view()->suppress_dialogs_until_swap_out_)
|
| + // ScopedPageLoadDeferrer in our stack prevents it.
|
| + if (suppress_further_dialogs_)
|
| return false;
|
|
|
| bool success = false;
|
| @@ -5114,6 +5112,10 @@ void RenderFrameImpl::OnEnableViewSourceMode() {
|
| frame_->enableViewSourceMode(true);
|
| }
|
|
|
| +void RenderFrameImpl::OnSuppressFurtherDialogs() {
|
| + suppress_further_dialogs_ = true;
|
| +}
|
| +
|
| #if defined(OS_ANDROID)
|
| void RenderFrameImpl::OnActivateNearestFindResult(int request_id,
|
| float x,
|
|
|