Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1931)

Side by Side Diff: content/browser/frame_host/render_frame_host_impl.cc

Issue 2837603002: Content API changes to improve DOM stitching in ThreatDetails code. (Closed)
Patch Set: Set output pointers correctly Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698