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 2496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2507 | 2507 |
2508 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { | 2508 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { |
2509 if (!frame_tree_node_->opener()) | 2509 if (!frame_tree_node_->opener()) |
2510 return MSG_ROUTING_NONE; | 2510 return MSG_ROUTING_NONE; |
2511 | 2511 |
2512 return frame_tree_node_->opener() | 2512 return frame_tree_node_->opener() |
2513 ->render_manager() | 2513 ->render_manager() |
2514 ->GetRoutingIdForSiteInstance(instance); | 2514 ->GetRoutingIdForSiteInstance(instance); |
2515 } | 2515 } |
2516 | 2516 |
| 2517 void RenderFrameHostManager::SendPageMessage(IPC::Message* msg) { |
| 2518 DCHECK(IPC_MESSAGE_CLASS(*msg) == PageMsgStart); |
| 2519 |
| 2520 // We should always deliver page messages through the main frame. |
| 2521 DCHECK(!frame_tree_node_->parent()); |
| 2522 |
| 2523 if ((IPC_MESSAGE_CLASS(*msg) != PageMsgStart) || frame_tree_node_->parent()) { |
| 2524 delete msg; |
| 2525 return; |
| 2526 } |
| 2527 |
| 2528 auto send_msg = [](IPC::Sender* sender, int routing_id, IPC::Message* msg) { |
| 2529 IPC::Message* copy = new IPC::Message(*msg); |
| 2530 copy->set_routing_id(routing_id); |
| 2531 sender->Send(copy); |
| 2532 }; |
| 2533 |
| 2534 for (const auto& pair : proxy_hosts_) |
| 2535 send_msg(pair.second.get(), pair.second->GetRoutingID(), msg); |
| 2536 |
| 2537 if (speculative_render_frame_host_) { |
| 2538 send_msg(speculative_render_frame_host_.get(), |
| 2539 speculative_render_frame_host_->GetRoutingID(), msg); |
| 2540 } else if (pending_render_frame_host_) { |
| 2541 send_msg(pending_render_frame_host_.get(), |
| 2542 pending_render_frame_host_->GetRoutingID(), msg); |
| 2543 } |
| 2544 |
| 2545 msg->set_routing_id(render_frame_host_->GetRoutingID()); |
| 2546 render_frame_host_->Send(msg); |
| 2547 } |
| 2548 |
2517 } // namespace content | 2549 } // namespace content |
OLD | NEW |