| 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 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 if (frame_host) | 307 if (frame_host) |
| 308 routing_ids->insert(frame_host->GetGlobalFrameRoutingId()); | 308 routing_ids->insert(frame_host->GetGlobalFrameRoutingId()); |
| 309 if (pending_frame_host) | 309 if (pending_frame_host) |
| 310 routing_ids->insert(pending_frame_host->GetGlobalFrameRoutingId()); | 310 routing_ids->insert(pending_frame_host->GetGlobalFrameRoutingId()); |
| 311 } | 311 } |
| 312 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 312 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
| 313 base::Bind(&NotifyRouteChangesOnIO, frame_callback, | 313 base::Bind(&NotifyRouteChangesOnIO, frame_callback, |
| 314 base::Passed(std::move(routing_ids)))); | 314 base::Passed(std::move(routing_ids)))); |
| 315 } | 315 } |
| 316 | 316 |
| 317 void LookupRenderFrameHostOrProxy(int process_id, |
| 318 int routing_id, |
| 319 RenderFrameHostImpl** rfh, |
| 320 RenderFrameProxyHost** rfph) { |
| 321 *rfh = RenderFrameHostImpl::FromID(process_id, routing_id); |
| 322 if (*rfh == nullptr) |
| 323 *rfph = RenderFrameProxyHost::FromID(process_id, routing_id); |
| 324 } |
| 325 |
| 317 } // namespace | 326 } // namespace |
| 318 | 327 |
| 319 // static | 328 // static |
| 320 RenderFrameHost* RenderFrameHost::FromID(int render_process_id, | 329 RenderFrameHost* RenderFrameHost::FromID(int render_process_id, |
| 321 int render_frame_id) { | 330 int render_frame_id) { |
| 322 return RenderFrameHostImpl::FromID(render_process_id, render_frame_id); | 331 return RenderFrameHostImpl::FromID(render_process_id, render_frame_id); |
| 323 } | 332 } |
| 324 | 333 |
| 325 #if defined(OS_ANDROID) | 334 #if defined(OS_ANDROID) |
| 326 // static | 335 // static |
| (...skipping 3299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3626 frame_tree_node_->current_url().SchemeIs(kChromeDevToolsScheme) || | 3635 frame_tree_node_->current_url().SchemeIs(kChromeDevToolsScheme) || |
| 3627 ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings( | 3636 ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings( |
| 3628 GetProcess()->GetID()) || | 3637 GetProcess()->GetID()) || |
| 3629 // It's possible to load about:blank in a Web UI renderer. | 3638 // It's possible to load about:blank in a Web UI renderer. |
| 3630 // See http://crbug.com/42547 | 3639 // See http://crbug.com/42547 |
| 3631 (frame_tree_node_->current_url().spec() == url::kAboutBlankURL) || | 3640 (frame_tree_node_->current_url().spec() == url::kAboutBlankURL) || |
| 3632 // InterstitialPageImpl should be the only case matching this. | 3641 // InterstitialPageImpl should be the only case matching this. |
| 3633 (delegate_->GetAsWebContents() == nullptr); | 3642 (delegate_->GetAsWebContents() == nullptr); |
| 3634 } | 3643 } |
| 3635 | 3644 |
| 3645 // static |
| 3646 int RenderFrameHost::GetFrameTreeNodeIdForRoutingId(int process_id, |
| 3647 int routing_id) { |
| 3648 RenderFrameHostImpl* rfh = nullptr; |
| 3649 RenderFrameProxyHost* rfph = nullptr; |
| 3650 LookupRenderFrameHostOrProxy(process_id, routing_id, &rfh, &rfph); |
| 3651 if (rfh) { |
| 3652 return rfh->GetFrameTreeNodeId(); |
| 3653 } else if (rfph) { |
| 3654 return rfph->frame_tree_node()->frame_tree_node_id(); |
| 3655 } |
| 3656 return kNoFrameTreeNodeId; |
| 3657 } |
| 3658 |
| 3636 ui::AXTreeIDRegistry::AXTreeID RenderFrameHostImpl::RoutingIDToAXTreeID( | 3659 ui::AXTreeIDRegistry::AXTreeID RenderFrameHostImpl::RoutingIDToAXTreeID( |
| 3637 int routing_id) { | 3660 int routing_id) { |
| 3638 RenderFrameHostImpl* rfh = nullptr; | 3661 RenderFrameHostImpl* rfh = nullptr; |
| 3639 RenderFrameProxyHost* rfph = RenderFrameProxyHost::FromID( | 3662 RenderFrameProxyHost* rfph = nullptr; |
| 3640 GetProcess()->GetID(), routing_id); | 3663 LookupRenderFrameHostOrProxy(GetProcess()->GetID(), routing_id, &rfh, &rfph); |
| 3641 if (rfph) { | 3664 if (rfph) { |
| 3642 FrameTree* frame_tree = rfph->frame_tree_node()->frame_tree(); | 3665 rfh = rfph->frame_tree_node()->current_frame_host(); |
| 3643 FrameTreeNode* frame_tree_node = frame_tree->FindByRoutingID( | |
| 3644 GetProcess()->GetID(), routing_id); | |
| 3645 rfh = frame_tree_node->render_manager()->current_frame_host(); | |
| 3646 } else { | |
| 3647 rfh = RenderFrameHostImpl::FromID(GetProcess()->GetID(), routing_id); | |
| 3648 | |
| 3649 // As a sanity check, make sure we're within the same frame tree and | |
| 3650 // crash the renderer if not. | |
| 3651 if (rfh && | |
| 3652 rfh->frame_tree_node()->frame_tree() != | |
| 3653 frame_tree_node()->frame_tree()) { | |
| 3654 AccessibilityFatalError(); | |
| 3655 return ui::AXTreeIDRegistry::kNoAXTreeID; | |
| 3656 } | |
| 3657 } | 3666 } |
| 3658 | 3667 |
| 3659 if (!rfh) | 3668 if (!rfh) |
| 3660 return ui::AXTreeIDRegistry::kNoAXTreeID; | 3669 return ui::AXTreeIDRegistry::kNoAXTreeID; |
| 3661 | 3670 |
| 3671 // As a sanity check, make sure we're within the same frame tree and |
| 3672 // crash the renderer if not. |
| 3673 if (rfh->frame_tree_node()->frame_tree() != frame_tree_node()->frame_tree()) { |
| 3674 AccessibilityFatalError(); |
| 3675 return ui::AXTreeIDRegistry::kNoAXTreeID; |
| 3676 } |
| 3677 |
| 3662 return rfh->GetAXTreeID(); | 3678 return rfh->GetAXTreeID(); |
| 3663 } | 3679 } |
| 3664 | 3680 |
| 3665 ui::AXTreeIDRegistry::AXTreeID | 3681 ui::AXTreeIDRegistry::AXTreeID |
| 3666 RenderFrameHostImpl::BrowserPluginInstanceIDToAXTreeID(int instance_id) { | 3682 RenderFrameHostImpl::BrowserPluginInstanceIDToAXTreeID(int instance_id) { |
| 3667 RenderFrameHostImpl* guest = static_cast<RenderFrameHostImpl*>( | 3683 RenderFrameHostImpl* guest = static_cast<RenderFrameHostImpl*>( |
| 3668 delegate()->GetGuestByInstanceID(this, instance_id)); | 3684 delegate()->GetGuestByInstanceID(this, instance_id)); |
| 3669 if (!guest) | 3685 if (!guest) |
| 3670 return ui::AXTreeIDRegistry::kNoAXTreeID; | 3686 return ui::AXTreeIDRegistry::kNoAXTreeID; |
| 3671 | 3687 |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3984 } | 4000 } |
| 3985 | 4001 |
| 3986 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( | 4002 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( |
| 3987 const std::string& interface_name, | 4003 const std::string& interface_name, |
| 3988 mojo::ScopedMessagePipeHandle pipe) { | 4004 mojo::ScopedMessagePipeHandle pipe) { |
| 3989 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); | 4005 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); |
| 3990 } | 4006 } |
| 3991 #endif | 4007 #endif |
| 3992 | 4008 |
| 3993 } // namespace content | 4009 } // namespace content |
| OLD | NEW |