| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/renderer_host/render_view_host_impl.h" | 5 #include "content/browser/renderer_host/render_view_host_impl.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 base::Bind(base::IgnoreResult(&DismissVirtualKeyboardTask)), | 119 base::Bind(base::IgnoreResult(&DismissVirtualKeyboardTask)), |
| 120 TimeDelta::FromMilliseconds(kVirtualKeyboardDisplayWaitTimeoutMs)); | 120 TimeDelta::FromMilliseconds(kVirtualKeyboardDisplayWaitTimeoutMs)); |
| 121 ++virtual_keyboard_display_retries; | 121 ++virtual_keyboard_display_retries; |
| 122 } else { | 122 } else { |
| 123 virtual_keyboard_display_retries = 0; | 123 virtual_keyboard_display_retries = 0; |
| 124 } | 124 } |
| 125 } | 125 } |
| 126 } | 126 } |
| 127 #endif | 127 #endif |
| 128 | 128 |
| 129 // Enable sudden termination for the current RenderFrameHost of | |
| 130 // |frame_tree_node| if the ID of its SiteInstance is |site_instance_id|. Used | |
| 131 // with FrameTree::ForEach. | |
| 132 bool EnableSuddenTermination(int32 site_instance_id, | |
| 133 FrameTreeNode* frame_tree_node) { | |
| 134 if (frame_tree_node->current_frame_host()->GetSiteInstance()->GetId() | |
| 135 == site_instance_id) { | |
| 136 frame_tree_node->current_frame_host() | |
| 137 ->set_override_sudden_termination_status(true); | |
| 138 } | |
| 139 return true; | |
| 140 } | |
| 141 | |
| 142 } // namespace | 129 } // namespace |
| 143 | 130 |
| 144 // static | 131 // static |
| 145 const int64 RenderViewHostImpl::kUnloadTimeoutMS = 1000; | 132 const int64 RenderViewHostImpl::kUnloadTimeoutMS = 1000; |
| 146 | 133 |
| 147 /////////////////////////////////////////////////////////////////////////////// | 134 /////////////////////////////////////////////////////////////////////////////// |
| 148 // RenderViewHost, public: | 135 // RenderViewHost, public: |
| 149 | 136 |
| 150 // static | 137 // static |
| 151 RenderViewHost* RenderViewHost::FromID(int render_process_id, | 138 RenderViewHost* RenderViewHost::FromID(int render_process_id, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 frames_ref_count_(0), | 175 frames_ref_count_(0), |
| 189 delegate_(delegate), | 176 delegate_(delegate), |
| 190 instance_(static_cast<SiteInstanceImpl*>(instance)), | 177 instance_(static_cast<SiteInstanceImpl*>(instance)), |
| 191 waiting_for_drag_context_response_(false), | 178 waiting_for_drag_context_response_(false), |
| 192 enabled_bindings_(0), | 179 enabled_bindings_(0), |
| 193 page_id_(-1), | 180 page_id_(-1), |
| 194 is_active_(!swapped_out), | 181 is_active_(!swapped_out), |
| 195 is_swapped_out_(swapped_out), | 182 is_swapped_out_(swapped_out), |
| 196 main_frame_routing_id_(main_frame_routing_id), | 183 main_frame_routing_id_(main_frame_routing_id), |
| 197 is_waiting_for_close_ack_(false), | 184 is_waiting_for_close_ack_(false), |
| 185 sudden_termination_allowed_(false), |
| 198 render_view_termination_status_(base::TERMINATION_STATUS_STILL_RUNNING), | 186 render_view_termination_status_(base::TERMINATION_STATUS_STILL_RUNNING), |
| 199 virtual_keyboard_requested_(false), | 187 virtual_keyboard_requested_(false), |
| 200 is_focused_element_editable_(false), | 188 is_focused_element_editable_(false), |
| 201 updating_web_preferences_(false), | 189 updating_web_preferences_(false), |
| 202 weak_factory_(this) { | 190 weak_factory_(this) { |
| 203 DCHECK(instance_.get()); | 191 DCHECK(instance_.get()); |
| 204 CHECK(delegate_); // http://crbug.com/82827 | 192 CHECK(delegate_); // http://crbug.com/82827 |
| 205 | 193 |
| 206 GetProcess()->EnableSendQueue(); | 194 GetProcess()->EnableSendQueue(); |
| 207 | 195 |
| (...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 523 // This RenderViewHost doesn't have a live renderer, so just skip the unload | 511 // This RenderViewHost doesn't have a live renderer, so just skip the unload |
| 524 // event and close the page. | 512 // event and close the page. |
| 525 ClosePageIgnoringUnloadEvents(); | 513 ClosePageIgnoringUnloadEvents(); |
| 526 } | 514 } |
| 527 } | 515 } |
| 528 | 516 |
| 529 void RenderViewHostImpl::ClosePageIgnoringUnloadEvents() { | 517 void RenderViewHostImpl::ClosePageIgnoringUnloadEvents() { |
| 530 StopHangMonitorTimeout(); | 518 StopHangMonitorTimeout(); |
| 531 is_waiting_for_close_ack_ = false; | 519 is_waiting_for_close_ack_ = false; |
| 532 | 520 |
| 533 // Enable sudden termination for all RenderFrameHosts in the FrameTree. | 521 sudden_termination_allowed_ = true; |
| 534 FrameTree* frame_tree = static_cast<RenderFrameHostImpl*>(GetMainFrame()) | |
| 535 ->frame_tree_node()->frame_tree(); | |
| 536 frame_tree->ForEach(base::Bind(&EnableSuddenTermination, instance_->GetId())); | |
| 537 delegate_->Close(this); | 522 delegate_->Close(this); |
| 538 } | 523 } |
| 539 | 524 |
| 540 #if defined(OS_ANDROID) | 525 #if defined(OS_ANDROID) |
| 541 void RenderViewHostImpl::ActivateNearestFindResult(int request_id, | 526 void RenderViewHostImpl::ActivateNearestFindResult(int request_id, |
| 542 float x, | 527 float x, |
| 543 float y) { | 528 float y) { |
| 544 Send(new InputMsg_ActivateNearestFindResult(GetRoutingID(), | 529 Send(new InputMsg_ActivateNearestFindResult(GetRoutingID(), |
| 545 request_id, x, y)); | 530 request_id, x, y)); |
| 546 } | 531 } |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 815 } | 800 } |
| 816 | 801 |
| 817 void RenderViewHostImpl::LoadStateChanged( | 802 void RenderViewHostImpl::LoadStateChanged( |
| 818 const GURL& url, | 803 const GURL& url, |
| 819 const net::LoadStateWithParam& load_state, | 804 const net::LoadStateWithParam& load_state, |
| 820 uint64 upload_position, | 805 uint64 upload_position, |
| 821 uint64 upload_size) { | 806 uint64 upload_size) { |
| 822 delegate_->LoadStateChanged(url, load_state, upload_position, upload_size); | 807 delegate_->LoadStateChanged(url, load_state, upload_position, upload_size); |
| 823 } | 808 } |
| 824 | 809 |
| 810 bool RenderViewHostImpl::SuddenTerminationAllowed() const { |
| 811 return sudden_termination_allowed_ || |
| 812 GetProcess()->SuddenTerminationAllowed(); |
| 813 } |
| 814 |
| 825 /////////////////////////////////////////////////////////////////////////////// | 815 /////////////////////////////////////////////////////////////////////////////// |
| 826 // RenderViewHostImpl, IPC message handlers: | 816 // RenderViewHostImpl, IPC message handlers: |
| 827 | 817 |
| 828 bool RenderViewHostImpl::OnMessageReceived(const IPC::Message& msg) { | 818 bool RenderViewHostImpl::OnMessageReceived(const IPC::Message& msg) { |
| 829 if (!BrowserMessageFilter::CheckCanDispatchOnUI(msg, this)) | 819 if (!BrowserMessageFilter::CheckCanDispatchOnUI(msg, this)) |
| 830 return true; | 820 return true; |
| 831 | 821 |
| 832 // Filter out most IPC messages if this renderer is swapped out. | 822 // Filter out most IPC messages if this renderer is swapped out. |
| 833 // We still want to handle certain ACKs to keep our state consistent. | 823 // We still want to handle certain ACKs to keep our state consistent. |
| 834 if (is_swapped_out_) { | 824 if (is_swapped_out_) { |
| (...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1420 FrameTree* frame_tree = delegate_->GetFrameTree(); | 1410 FrameTree* frame_tree = delegate_->GetFrameTree(); |
| 1421 | 1411 |
| 1422 frame_tree->ResetForMainFrameSwap(); | 1412 frame_tree->ResetForMainFrameSwap(); |
| 1423 } | 1413 } |
| 1424 | 1414 |
| 1425 void RenderViewHostImpl::SelectWordAroundCaret() { | 1415 void RenderViewHostImpl::SelectWordAroundCaret() { |
| 1426 Send(new ViewMsg_SelectWordAroundCaret(GetRoutingID())); | 1416 Send(new ViewMsg_SelectWordAroundCaret(GetRoutingID())); |
| 1427 } | 1417 } |
| 1428 | 1418 |
| 1429 } // namespace content | 1419 } // namespace content |
| OLD | NEW |