| 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 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 | 132 |
| 133 // static | 133 // static |
| 134 const int RenderViewHostImpl::kUnloadTimeoutMS = 1000; | 134 const int RenderViewHostImpl::kUnloadTimeoutMS = 1000; |
| 135 | 135 |
| 136 /////////////////////////////////////////////////////////////////////////////// | 136 /////////////////////////////////////////////////////////////////////////////// |
| 137 // RenderViewHost, public: | 137 // RenderViewHost, public: |
| 138 | 138 |
| 139 // static | 139 // static |
| 140 bool RenderViewHostImpl::IsRVHStateActive(RenderViewHostImplState rvh_state) { | 140 bool RenderViewHostImpl::IsRVHStateActive(RenderViewHostImplState rvh_state) { |
| 141 if (rvh_state == STATE_DEFAULT || | 141 if (rvh_state == STATE_DEFAULT || |
| 142 rvh_state == STATE_WAITING_FOR_UNLOAD_ACK || | |
| 143 rvh_state == STATE_WAITING_FOR_COMMIT || | |
| 144 rvh_state == STATE_WAITING_FOR_CLOSE) | 142 rvh_state == STATE_WAITING_FOR_CLOSE) |
| 145 return true; | 143 return true; |
| 146 return false; | 144 return false; |
| 147 } | 145 } |
| 148 | 146 |
| 149 // static | 147 // static |
| 150 RenderViewHost* RenderViewHost::FromID(int render_process_id, | 148 RenderViewHost* RenderViewHost::FromID(int render_process_id, |
| 151 int render_view_id) { | 149 int render_view_id) { |
| 152 return RenderViewHostImpl::FromID(render_process_id, render_view_id); | 150 return RenderViewHostImpl::FromID(render_process_id, render_view_id); |
| 153 } | 151 } |
| (...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 532 // Log a histogram point to help us diagnose how many of those kills | 530 // Log a histogram point to help us diagnose how many of those kills |
| 533 // we have performed. 1 is the enum value for RendererType Normal for | 531 // we have performed. 1 is the enum value for RendererType Normal for |
| 534 // the histogram. | 532 // the histogram. |
| 535 UMA_HISTOGRAM_PERCENTAGE( | 533 UMA_HISTOGRAM_PERCENTAGE( |
| 536 "BrowserRenderProcessHost.ChildKillsUnresponsive", 1); | 534 "BrowserRenderProcessHost.ChildKillsUnresponsive", 1); |
| 537 } | 535 } |
| 538 } | 536 } |
| 539 } | 537 } |
| 540 | 538 |
| 541 switch (rvh_state_) { | 539 switch (rvh_state_) { |
| 542 case STATE_WAITING_FOR_UNLOAD_ACK: | |
| 543 SetState(STATE_WAITING_FOR_COMMIT); | |
| 544 break; | |
| 545 case STATE_PENDING_SWAP_OUT: | 540 case STATE_PENDING_SWAP_OUT: |
| 546 SetState(STATE_SWAPPED_OUT); | 541 SetState(STATE_SWAPPED_OUT); |
| 547 break; | 542 break; |
| 548 case STATE_PENDING_SHUTDOWN: | 543 case STATE_PENDING_SHUTDOWN: |
| 549 DCHECK(!pending_shutdown_on_swap_out_.is_null()); | 544 DCHECK(!pending_shutdown_on_swap_out_.is_null()); |
| 550 pending_shutdown_on_swap_out_.Run(); | 545 pending_shutdown_on_swap_out_.Run(); |
| 551 break; | 546 break; |
| 552 default: | 547 default: |
| 553 NOTREACHED(); | 548 NOTREACHED(); |
| 554 } | 549 } |
| 555 } | 550 } |
| 556 | 551 |
| 557 void RenderViewHostImpl::WasSwappedOut( | |
| 558 const base::Closure& pending_delete_on_swap_out) { | |
| 559 Send(new ViewMsg_WasSwappedOut(GetRoutingID())); | |
| 560 if (rvh_state_ == STATE_WAITING_FOR_UNLOAD_ACK) { | |
| 561 SetState(STATE_PENDING_SWAP_OUT); | |
| 562 if (!instance_->active_view_count()) | |
| 563 SetPendingShutdown(pending_delete_on_swap_out); | |
| 564 } else if (rvh_state_ == STATE_WAITING_FOR_COMMIT) { | |
| 565 SetState(STATE_SWAPPED_OUT); | |
| 566 } else if (rvh_state_ == STATE_DEFAULT) { | |
| 567 // When the RenderView is not live, the RenderFrameHostManager will call | |
| 568 // CommitPending directly, without calling SwapOut on the old RVH. This will | |
| 569 // cause WasSwappedOut to be called directly on the live old RVH. | |
| 570 DCHECK(!IsRenderViewLive()); | |
| 571 SetState(STATE_SWAPPED_OUT); | |
| 572 } else { | |
| 573 NOTREACHED(); | |
| 574 } | |
| 575 } | |
| 576 | |
| 577 void RenderViewHostImpl::SetPendingShutdown(const base::Closure& on_swap_out) { | 552 void RenderViewHostImpl::SetPendingShutdown(const base::Closure& on_swap_out) { |
| 578 pending_shutdown_on_swap_out_ = on_swap_out; | 553 pending_shutdown_on_swap_out_ = on_swap_out; |
| 579 SetState(STATE_PENDING_SHUTDOWN); | 554 SetState(STATE_PENDING_SHUTDOWN); |
| 580 } | 555 } |
| 581 | 556 |
| 582 void RenderViewHostImpl::ClosePage() { | 557 void RenderViewHostImpl::ClosePage() { |
| 583 SetState(STATE_WAITING_FOR_CLOSE); | 558 SetState(STATE_WAITING_FOR_CLOSE); |
| 584 StartHangMonitorTimeout(TimeDelta::FromMilliseconds(kUnloadTimeoutMS)); | 559 StartHangMonitorTimeout(TimeDelta::FromMilliseconds(kUnloadTimeoutMS)); |
| 585 | 560 |
| 586 if (IsRenderViewLive()) { | 561 if (IsRenderViewLive()) { |
| (...skipping 763 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1350 void RenderViewHostImpl::DidSelectPopupMenuItem(int selected_index) { | 1325 void RenderViewHostImpl::DidSelectPopupMenuItem(int selected_index) { |
| 1351 Send(new ViewMsg_SelectPopupMenuItem(GetRoutingID(), selected_index)); | 1326 Send(new ViewMsg_SelectPopupMenuItem(GetRoutingID(), selected_index)); |
| 1352 } | 1327 } |
| 1353 | 1328 |
| 1354 void RenderViewHostImpl::DidCancelPopupMenu() { | 1329 void RenderViewHostImpl::DidCancelPopupMenu() { |
| 1355 Send(new ViewMsg_SelectPopupMenuItem(GetRoutingID(), -1)); | 1330 Send(new ViewMsg_SelectPopupMenuItem(GetRoutingID(), -1)); |
| 1356 } | 1331 } |
| 1357 #endif | 1332 #endif |
| 1358 | 1333 |
| 1359 bool RenderViewHostImpl::IsWaitingForUnloadACK() const { | 1334 bool RenderViewHostImpl::IsWaitingForUnloadACK() const { |
| 1360 return rvh_state_ == STATE_WAITING_FOR_UNLOAD_ACK || | 1335 return rvh_state_ == STATE_WAITING_FOR_CLOSE || |
| 1361 rvh_state_ == STATE_WAITING_FOR_CLOSE || | |
| 1362 rvh_state_ == STATE_PENDING_SHUTDOWN || | 1336 rvh_state_ == STATE_PENDING_SHUTDOWN || |
| 1363 rvh_state_ == STATE_PENDING_SWAP_OUT; | 1337 rvh_state_ == STATE_PENDING_SWAP_OUT; |
| 1364 } | 1338 } |
| 1365 | 1339 |
| 1366 void RenderViewHostImpl::OnTextSurroundingSelectionResponse( | 1340 void RenderViewHostImpl::OnTextSurroundingSelectionResponse( |
| 1367 const base::string16& content, | 1341 const base::string16& content, |
| 1368 size_t start_offset, | 1342 size_t start_offset, |
| 1369 size_t end_offset) { | 1343 size_t end_offset) { |
| 1370 if (!view_) | 1344 if (!view_) |
| 1371 return; | 1345 return; |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1558 FrameTree* frame_tree = delegate_->GetFrameTree(); | 1532 FrameTree* frame_tree = delegate_->GetFrameTree(); |
| 1559 | 1533 |
| 1560 frame_tree->ResetForMainFrameSwap(); | 1534 frame_tree->ResetForMainFrameSwap(); |
| 1561 } | 1535 } |
| 1562 | 1536 |
| 1563 void RenderViewHostImpl::SelectWordAroundCaret() { | 1537 void RenderViewHostImpl::SelectWordAroundCaret() { |
| 1564 Send(new ViewMsg_SelectWordAroundCaret(GetRoutingID())); | 1538 Send(new ViewMsg_SelectWordAroundCaret(GetRoutingID())); |
| 1565 } | 1539 } |
| 1566 | 1540 |
| 1567 } // namespace content | 1541 } // namespace content |
| OLD | NEW |