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_manager.h" | 5 #include "content/browser/frame_host/render_frame_host_manager.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <utility> | 10 #include <utility> |
(...skipping 1492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1503 | 1503 |
1504 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrameHost( | 1504 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrameHost( |
1505 SiteInstance* site_instance, | 1505 SiteInstance* site_instance, |
1506 int32_t view_routing_id, | 1506 int32_t view_routing_id, |
1507 int32_t frame_routing_id, | 1507 int32_t frame_routing_id, |
1508 int32_t widget_routing_id, | 1508 int32_t widget_routing_id, |
1509 int flags) { | 1509 int flags) { |
1510 if (frame_routing_id == MSG_ROUTING_NONE) | 1510 if (frame_routing_id == MSG_ROUTING_NONE) |
1511 frame_routing_id = site_instance->GetProcess()->GetNextRoutingID(); | 1511 frame_routing_id = site_instance->GetProcess()->GetNextRoutingID(); |
1512 | 1512 |
1513 bool swapped_out = !!(flags & CREATE_RF_SWAPPED_OUT); | |
1514 bool hidden = !!(flags & CREATE_RF_HIDDEN); | 1513 bool hidden = !!(flags & CREATE_RF_HIDDEN); |
1515 | 1514 |
1516 // Create a RVH for main frames, or find the existing one for subframes. | 1515 // Create a RVH for main frames, or find the existing one for subframes. |
1517 FrameTree* frame_tree = frame_tree_node_->frame_tree(); | 1516 FrameTree* frame_tree = frame_tree_node_->frame_tree(); |
1518 RenderViewHostImpl* render_view_host = nullptr; | 1517 RenderViewHostImpl* render_view_host = nullptr; |
1519 if (frame_tree_node_->IsMainFrame()) { | 1518 if (frame_tree_node_->IsMainFrame()) { |
1520 render_view_host = frame_tree->CreateRenderViewHost( | 1519 render_view_host = frame_tree->CreateRenderViewHost( |
1521 site_instance, view_routing_id, frame_routing_id, swapped_out, hidden); | 1520 site_instance, view_routing_id, frame_routing_id, false, hidden); |
1522 // TODO(avi): It's a bit bizarre that this logic lives here instead of in | 1521 // TODO(avi): It's a bit bizarre that this logic lives here instead of in |
1523 // CreateRenderFrame(). It turns out that FrameTree::CreateRenderViewHost | 1522 // CreateRenderFrame(). It turns out that FrameTree::CreateRenderViewHost |
1524 // doesn't /always/ create a new RenderViewHost. It first tries to find an | 1523 // doesn't /always/ create a new RenderViewHost. It first tries to find an |
1525 // already existing one to reuse by a SiteInstance lookup. If it finds one, | 1524 // already existing one to reuse by a SiteInstance lookup. If it finds one, |
1526 // then the supplied routing IDs are completely ignored. | 1525 // then the supplied routing IDs are completely ignored. |
1527 // CreateRenderFrame() could do this lookup too, but it seems redundant to | 1526 // CreateRenderFrame() could do this lookup too, but it seems redundant to |
1528 // do this lookup in two places. This is a good yak shave to clean up, or, | 1527 // do this lookup in two places. This is a good yak shave to clean up, or, |
1529 // if just ignored, should be an easy cleanup once RenderViewHostImpl has-a | 1528 // if just ignored, should be an easy cleanup once RenderViewHostImpl has-a |
1530 // RenderWidgetHostImpl. https://crbug.com/545684 | 1529 // RenderWidgetHostImpl. https://crbug.com/545684 |
1531 if (view_routing_id == MSG_ROUTING_NONE) { | 1530 if (view_routing_id == MSG_ROUTING_NONE) { |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1566 speculative_render_frame_host_ = | 1565 speculative_render_frame_host_ = |
1567 CreateRenderFrame(new_instance, create_render_frame_flags, nullptr); | 1566 CreateRenderFrame(new_instance, create_render_frame_flags, nullptr); |
1568 | 1567 |
1569 return !!speculative_render_frame_host_; | 1568 return !!speculative_render_frame_host_; |
1570 } | 1569 } |
1571 | 1570 |
1572 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrame( | 1571 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrame( |
1573 SiteInstance* instance, | 1572 SiteInstance* instance, |
1574 int flags, | 1573 int flags, |
1575 int* view_routing_id_ptr) { | 1574 int* view_routing_id_ptr) { |
1576 bool swapped_out = !!(flags & CREATE_RF_SWAPPED_OUT); | |
1577 int32_t widget_routing_id = MSG_ROUTING_NONE; | 1575 int32_t widget_routing_id = MSG_ROUTING_NONE; |
1578 RenderFrameProxyHost* proxy = GetRenderFrameProxyHost(instance); | 1576 RenderFrameProxyHost* proxy = GetRenderFrameProxyHost(instance); |
1579 | 1577 |
1580 CHECK(instance); | 1578 CHECK(instance); |
1581 CHECK(!swapped_out); | |
1582 CHECK(SiteIsolationPolicy::AreCrossProcessFramesPossible() || | 1579 CHECK(SiteIsolationPolicy::AreCrossProcessFramesPossible() || |
1583 frame_tree_node_->IsMainFrame()); | 1580 frame_tree_node_->IsMainFrame()); |
1584 | 1581 |
1585 // Swapped out views should always be hidden. | |
1586 DCHECK(!swapped_out || (flags & CREATE_RF_HIDDEN)); | |
1587 | |
1588 scoped_ptr<RenderFrameHostImpl> new_render_frame_host; | 1582 scoped_ptr<RenderFrameHostImpl> new_render_frame_host; |
1589 bool success = true; | 1583 bool success = true; |
1590 if (view_routing_id_ptr) | 1584 if (view_routing_id_ptr) |
1591 *view_routing_id_ptr = MSG_ROUTING_NONE; | 1585 *view_routing_id_ptr = MSG_ROUTING_NONE; |
1592 | 1586 |
1593 // We are creating a pending, speculative or swapped out RFH here. We should | 1587 // We are creating a pending, speculative or swapped out RFH here. We should |
1594 // never create it in the same SiteInstance as our current RFH. | 1588 // never create it in the same SiteInstance as our current RFH. |
1595 CHECK_NE(render_frame_host_->GetSiteInstance(), instance); | 1589 CHECK_NE(render_frame_host_->GetSiteInstance(), instance); |
1596 | 1590 |
1597 // A RenderFrame in a different process from its parent RenderFrame | 1591 // A RenderFrame in a different process from its parent RenderFrame |
(...skipping 834 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2432 } else if (pending_render_frame_host_) { | 2426 } else if (pending_render_frame_host_) { |
2433 send_msg(pending_render_frame_host_.get(), | 2427 send_msg(pending_render_frame_host_.get(), |
2434 pending_render_frame_host_->GetRoutingID(), msg); | 2428 pending_render_frame_host_->GetRoutingID(), msg); |
2435 } | 2429 } |
2436 | 2430 |
2437 msg->set_routing_id(render_frame_host_->GetRoutingID()); | 2431 msg->set_routing_id(render_frame_host_->GetRoutingID()); |
2438 render_frame_host_->Send(msg); | 2432 render_frame_host_->Send(msg); |
2439 } | 2433 } |
2440 | 2434 |
2441 } // namespace content | 2435 } // namespace content |
OLD | NEW |