Chromium Code Reviews| 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 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 294 if (frame_host) | 294 if (frame_host) |
| 295 routing_ids->insert(frame_host->GetGlobalFrameRoutingId()); | 295 routing_ids->insert(frame_host->GetGlobalFrameRoutingId()); |
| 296 if (pending_frame_host) | 296 if (pending_frame_host) |
| 297 routing_ids->insert(pending_frame_host->GetGlobalFrameRoutingId()); | 297 routing_ids->insert(pending_frame_host->GetGlobalFrameRoutingId()); |
| 298 } | 298 } |
| 299 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 299 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
| 300 base::Bind(&NotifyRouteChangesOnIO, frame_callback, | 300 base::Bind(&NotifyRouteChangesOnIO, frame_callback, |
| 301 base::Passed(std::move(routing_ids)))); | 301 base::Passed(std::move(routing_ids)))); |
| 302 } | 302 } |
| 303 | 303 |
| 304 void LookupRenderFrameHostOrProxy(int process_id, | |
| 305 int routing_id, | |
| 306 RenderFrameHostImpl** rfh, | |
| 307 RenderFrameProxyHost** rfph) { | |
| 308 *rfph = RenderFrameProxyHost::FromID(process_id, routing_id); | |
|
Charlie Reis
2017/05/05 21:03:08
nit: Let's swap the order and do rfh first, just b
lpz
2017/05/10 14:21:09
Done.
| |
| 309 if (*rfph == nullptr) | |
| 310 *rfh = RenderFrameHostImpl::FromID(process_id, routing_id); | |
| 311 } | |
| 312 | |
| 304 } // namespace | 313 } // namespace |
| 305 | 314 |
| 306 // static | 315 // static |
| 307 RenderFrameHost* RenderFrameHost::FromID(int render_process_id, | 316 RenderFrameHost* RenderFrameHost::FromID(int render_process_id, |
| 308 int render_frame_id) { | 317 int render_frame_id) { |
| 309 return RenderFrameHostImpl::FromID(render_process_id, render_frame_id); | 318 return RenderFrameHostImpl::FromID(render_process_id, render_frame_id); |
| 310 } | 319 } |
| 311 | 320 |
| 312 #if defined(OS_ANDROID) | 321 #if defined(OS_ANDROID) |
| 313 // static | 322 // static |
| (...skipping 3207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3521 frame_tree_node_->current_url().SchemeIs(kChromeDevToolsScheme) || | 3530 frame_tree_node_->current_url().SchemeIs(kChromeDevToolsScheme) || |
| 3522 ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings( | 3531 ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings( |
| 3523 GetProcess()->GetID()) || | 3532 GetProcess()->GetID()) || |
| 3524 // It's possible to load about:blank in a Web UI renderer. | 3533 // It's possible to load about:blank in a Web UI renderer. |
| 3525 // See http://crbug.com/42547 | 3534 // See http://crbug.com/42547 |
| 3526 (frame_tree_node_->current_url().spec() == url::kAboutBlankURL) || | 3535 (frame_tree_node_->current_url().spec() == url::kAboutBlankURL) || |
| 3527 // InterstitialPageImpl should be the only case matching this. | 3536 // InterstitialPageImpl should be the only case matching this. |
| 3528 (delegate_->GetAsWebContents() == nullptr); | 3537 (delegate_->GetAsWebContents() == nullptr); |
| 3529 } | 3538 } |
| 3530 | 3539 |
| 3540 // static | |
| 3541 int RenderFrameHost::GetFrameTreeNodeIdForRoutingId(int process_id, | |
| 3542 int routing_id) { | |
| 3543 RenderFrameHostImpl* rfh = nullptr; | |
| 3544 RenderFrameProxyHost* rfph = nullptr; | |
| 3545 LookupRenderFrameHostOrProxy(process_id, routing_id, &rfh, &rfph); | |
| 3546 if (rfph) { | |
| 3547 return rfph->frame_tree_node()->frame_tree_node_id(); | |
| 3548 } else if (rfh) { | |
|
Charlie Reis
2017/05/05 21:03:08
nit: Let's swap the order and do the rfh branch fi
lpz
2017/05/10 14:21:09
Done.
| |
| 3549 return rfh->GetFrameTreeNodeId(); | |
| 3550 } | |
| 3551 | |
| 3552 return kNoFrameTreeNodeId; | |
| 3553 } | |
| 3554 | |
| 3531 ui::AXTreeIDRegistry::AXTreeID RenderFrameHostImpl::RoutingIDToAXTreeID( | 3555 ui::AXTreeIDRegistry::AXTreeID RenderFrameHostImpl::RoutingIDToAXTreeID( |
| 3532 int routing_id) { | 3556 int routing_id) { |
| 3533 RenderFrameHostImpl* rfh = nullptr; | 3557 RenderFrameHostImpl* rfh = nullptr; |
| 3534 RenderFrameProxyHost* rfph = RenderFrameProxyHost::FromID( | 3558 RenderFrameProxyHost* rfph = nullptr; |
| 3535 GetProcess()->GetID(), routing_id); | 3559 LookupRenderFrameHostOrProxy(GetProcess()->GetID(), routing_id, &rfh, &rfph); |
| 3536 if (rfph) { | 3560 if (rfph) { |
| 3537 FrameTree* frame_tree = rfph->frame_tree_node()->frame_tree(); | 3561 FrameTree* frame_tree = rfph->frame_tree_node()->frame_tree(); |
| 3538 FrameTreeNode* frame_tree_node = frame_tree->FindByRoutingID( | 3562 FrameTreeNode* frame_tree_node = frame_tree->FindByRoutingID( |
| 3539 GetProcess()->GetID(), routing_id); | 3563 GetProcess()->GetID(), routing_id); |
| 3540 rfh = frame_tree_node->render_manager()->current_frame_host(); | 3564 rfh = frame_tree_node->render_manager()->current_frame_host(); |
|
Charlie Reis
2017/05/05 21:03:08
Seems like we can clean up these 4 lines quite a b
lpz
2017/05/10 14:21:09
Done.
| |
| 3541 } else { | |
| 3542 rfh = RenderFrameHostImpl::FromID(GetProcess()->GetID(), routing_id); | |
| 3543 | |
| 3544 // As a sanity check, make sure we're within the same frame tree and | |
| 3545 // crash the renderer if not. | |
| 3546 if (rfh && | |
| 3547 rfh->frame_tree_node()->frame_tree() != | |
| 3548 frame_tree_node()->frame_tree()) { | |
| 3549 AccessibilityFatalError(); | |
| 3550 return ui::AXTreeIDRegistry::kNoAXTreeID; | |
| 3551 } | |
| 3552 } | 3565 } |
| 3553 | 3566 |
| 3554 if (!rfh) | 3567 if (!rfh) |
| 3555 return ui::AXTreeIDRegistry::kNoAXTreeID; | 3568 return ui::AXTreeIDRegistry::kNoAXTreeID; |
| 3556 | 3569 |
| 3570 // As a sanity check, make sure we're within the same frame tree and | |
| 3571 // crash the renderer if not. | |
| 3572 if (rfh->frame_tree_node()->frame_tree() != frame_tree_node()->frame_tree()) { | |
| 3573 AccessibilityFatalError(); | |
| 3574 return ui::AXTreeIDRegistry::kNoAXTreeID; | |
| 3575 } | |
| 3576 | |
| 3557 return rfh->GetAXTreeID(); | 3577 return rfh->GetAXTreeID(); |
| 3558 } | 3578 } |
| 3559 | 3579 |
| 3560 ui::AXTreeIDRegistry::AXTreeID | 3580 ui::AXTreeIDRegistry::AXTreeID |
| 3561 RenderFrameHostImpl::BrowserPluginInstanceIDToAXTreeID(int instance_id) { | 3581 RenderFrameHostImpl::BrowserPluginInstanceIDToAXTreeID(int instance_id) { |
| 3562 RenderFrameHostImpl* guest = static_cast<RenderFrameHostImpl*>( | 3582 RenderFrameHostImpl* guest = static_cast<RenderFrameHostImpl*>( |
| 3563 delegate()->GetGuestByInstanceID(this, instance_id)); | 3583 delegate()->GetGuestByInstanceID(this, instance_id)); |
| 3564 if (!guest) | 3584 if (!guest) |
| 3565 return ui::AXTreeIDRegistry::kNoAXTreeID; | 3585 return ui::AXTreeIDRegistry::kNoAXTreeID; |
| 3566 | 3586 |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3856 } | 3876 } |
| 3857 | 3877 |
| 3858 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( | 3878 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( |
| 3859 const std::string& interface_name, | 3879 const std::string& interface_name, |
| 3860 mojo::ScopedMessagePipeHandle pipe) { | 3880 mojo::ScopedMessagePipeHandle pipe) { |
| 3861 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); | 3881 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); |
| 3862 } | 3882 } |
| 3863 #endif | 3883 #endif |
| 3864 | 3884 |
| 3865 } // namespace content | 3885 } // namespace content |
| OLD | NEW |