OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/frame_host/render_frame_host_impl.h" | 5 #include "content/browser/frame_host/render_frame_host_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 2925 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2936 | 2936 |
2937 void RenderFrameHostImpl::DeleteSurroundingTextInCodePoints(int before, | 2937 void RenderFrameHostImpl::DeleteSurroundingTextInCodePoints(int before, |
2938 int after) { | 2938 int after) { |
2939 Send(new InputMsg_DeleteSurroundingTextInCodePoints(routing_id_, before, | 2939 Send(new InputMsg_DeleteSurroundingTextInCodePoints(routing_id_, before, |
2940 after)); | 2940 after)); |
2941 } | 2941 } |
2942 | 2942 |
2943 void RenderFrameHostImpl::JavaScriptDialogClosed( | 2943 void RenderFrameHostImpl::JavaScriptDialogClosed( |
2944 IPC::Message* reply_msg, | 2944 IPC::Message* reply_msg, |
2945 bool success, | 2945 bool success, |
2946 const base::string16& user_input, | 2946 const base::string16& user_input) { |
2947 bool dialog_was_suppressed) { | |
2948 GetProcess()->SetIgnoreInputEvents(false); | 2947 GetProcess()->SetIgnoreInputEvents(false); |
2949 | 2948 |
2950 SendJavaScriptDialogReply(reply_msg, success, user_input); | 2949 SendJavaScriptDialogReply(reply_msg, success, user_input); |
2951 | 2950 |
2952 // If executing as part of beforeunload event handling, there may have been | 2951 // If executing as part of beforeunload event handling, there may have been |
2953 // timers stopped in this frame or a frame up in the frame hierarchy. Restart | 2952 // timers stopped in this frame or a frame up in the frame hierarchy. Restart |
2954 // any timers that were stopped in OnRunBeforeUnloadConfirm(). | 2953 // any timers that were stopped in OnRunBeforeUnloadConfirm(). |
2955 for (RenderFrameHostImpl* frame = this; frame; frame = frame->GetParent()) { | 2954 for (RenderFrameHostImpl* frame = this; frame; frame = frame->GetParent()) { |
2956 if (frame->is_waiting_for_beforeunload_ack_) { | 2955 if (frame->is_waiting_for_beforeunload_ack_ && |
2957 // If we are waiting for a beforeunload ack and the user has suppressed | 2956 frame->beforeunload_timeout_) { |
2958 // messages, kill the tab immediately. A page that's spamming is | 2957 frame->beforeunload_timeout_->Start( |
2959 // presumably malicious, so there's no point in continuing to run its | 2958 TimeDelta::FromMilliseconds(RenderViewHostImpl::kUnloadTimeoutMS)); |
2960 // script and dragging out the process. | |
2961 if (dialog_was_suppressed) { | |
2962 frame->SimulateBeforeUnloadAck(); | |
2963 } else if (frame->beforeunload_timeout_) { | |
2964 frame->beforeunload_timeout_->Start( | |
2965 TimeDelta::FromMilliseconds(RenderViewHostImpl::kUnloadTimeoutMS)); | |
2966 } | |
2967 } | 2959 } |
2968 } | 2960 } |
2969 } | 2961 } |
2970 | 2962 |
2971 void RenderFrameHostImpl::SendJavaScriptDialogReply( | 2963 void RenderFrameHostImpl::SendJavaScriptDialogReply( |
2972 IPC::Message* reply_msg, | 2964 IPC::Message* reply_msg, |
2973 bool success, | 2965 bool success, |
2974 const base::string16& user_input) { | 2966 const base::string16& user_input) { |
2975 FrameHostMsg_RunJavaScriptDialog::WriteReplyParams(reply_msg, success, | 2967 FrameHostMsg_RunJavaScriptDialog::WriteReplyParams(reply_msg, success, |
2976 user_input); | 2968 user_input); |
(...skipping 879 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3856 } | 3848 } |
3857 | 3849 |
3858 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( | 3850 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( |
3859 const std::string& interface_name, | 3851 const std::string& interface_name, |
3860 mojo::ScopedMessagePipeHandle pipe) { | 3852 mojo::ScopedMessagePipeHandle pipe) { |
3861 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); | 3853 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); |
3862 } | 3854 } |
3863 #endif | 3855 #endif |
3864 | 3856 |
3865 } // namespace content | 3857 } // namespace content |
OLD | NEW |