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

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: Address feedback 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 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 if (frame_host) 305 if (frame_host)
306 routing_ids->insert(frame_host->GetGlobalFrameRoutingId()); 306 routing_ids->insert(frame_host->GetGlobalFrameRoutingId());
307 if (pending_frame_host) 307 if (pending_frame_host)
308 routing_ids->insert(pending_frame_host->GetGlobalFrameRoutingId()); 308 routing_ids->insert(pending_frame_host->GetGlobalFrameRoutingId());
309 } 309 }
310 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 310 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
311 base::Bind(&NotifyRouteChangesOnIO, frame_callback, 311 base::Bind(&NotifyRouteChangesOnIO, frame_callback,
312 base::Passed(std::move(routing_ids)))); 312 base::Passed(std::move(routing_ids))));
313 } 313 }
314 314
315 void LookupRenderFrameHostOrProxy(int process_id,
316 int routing_id,
317 RenderFrameHostImpl** rfh,
318 RenderFrameProxyHost** rfph) {
319 *rfh = RenderFrameHostImpl::FromID(process_id, routing_id);
320 if (*rfh == nullptr)
321 *rfph = RenderFrameProxyHost::FromID(process_id, routing_id);
322 }
323
315 } // namespace 324 } // namespace
316 325
317 // static 326 // static
318 RenderFrameHost* RenderFrameHost::FromID(int render_process_id, 327 RenderFrameHost* RenderFrameHost::FromID(int render_process_id,
319 int render_frame_id) { 328 int render_frame_id) {
320 return RenderFrameHostImpl::FromID(render_process_id, render_frame_id); 329 return RenderFrameHostImpl::FromID(render_process_id, render_frame_id);
321 } 330 }
322 331
323 #if defined(OS_ANDROID) 332 #if defined(OS_ANDROID)
324 // static 333 // static
(...skipping 3242 matching lines...) Expand 10 before | Expand all | Expand 10 after
3567 frame_tree_node_->current_url().SchemeIs(kChromeDevToolsScheme) || 3576 frame_tree_node_->current_url().SchemeIs(kChromeDevToolsScheme) ||
3568 ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings( 3577 ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings(
3569 GetProcess()->GetID()) || 3578 GetProcess()->GetID()) ||
3570 // It's possible to load about:blank in a Web UI renderer. 3579 // It's possible to load about:blank in a Web UI renderer.
3571 // See http://crbug.com/42547 3580 // See http://crbug.com/42547
3572 (frame_tree_node_->current_url().spec() == url::kAboutBlankURL) || 3581 (frame_tree_node_->current_url().spec() == url::kAboutBlankURL) ||
3573 // InterstitialPageImpl should be the only case matching this. 3582 // InterstitialPageImpl should be the only case matching this.
3574 (delegate_->GetAsWebContents() == nullptr); 3583 (delegate_->GetAsWebContents() == nullptr);
3575 } 3584 }
3576 3585
3586 // static
3587 RenderFrameHost* RenderFrameHost::GetRenderFrameHostForRoutingId(
3588 int process_id,
3589 int routing_id) {
3590 RenderFrameHostImpl* rfh = nullptr;
3591 RenderFrameProxyHost* rfph = nullptr;
3592 LookupRenderFrameHostOrProxy(process_id, routing_id, &rfh, &rfph);
3593 if (rfh) {
3594 return rfh;
3595 } else if (rfph) {
3596 return rfph->frame_tree_node()->current_frame_host();
3597 }
3598 return nullptr;
3599 }
3600
3577 ui::AXTreeIDRegistry::AXTreeID RenderFrameHostImpl::RoutingIDToAXTreeID( 3601 ui::AXTreeIDRegistry::AXTreeID RenderFrameHostImpl::RoutingIDToAXTreeID(
3578 int routing_id) { 3602 int routing_id) {
3579 RenderFrameHostImpl* rfh = nullptr; 3603 RenderFrameHostImpl* rfh = nullptr;
3580 RenderFrameProxyHost* rfph = RenderFrameProxyHost::FromID( 3604 RenderFrameProxyHost* rfph = nullptr;
3581 GetProcess()->GetID(), routing_id); 3605 LookupRenderFrameHostOrProxy(GetProcess()->GetID(), routing_id, &rfh, &rfph);
3582 if (rfph) { 3606 if (rfph) {
3583 FrameTree* frame_tree = rfph->frame_tree_node()->frame_tree(); 3607 rfh = rfph->frame_tree_node()->current_frame_host();
3584 FrameTreeNode* frame_tree_node = frame_tree->FindByRoutingID(
3585 GetProcess()->GetID(), routing_id);
3586 rfh = frame_tree_node->render_manager()->current_frame_host();
3587 } else {
3588 rfh = RenderFrameHostImpl::FromID(GetProcess()->GetID(), routing_id);
3589
3590 // As a sanity check, make sure we're within the same frame tree and
3591 // crash the renderer if not.
3592 if (rfh &&
3593 rfh->frame_tree_node()->frame_tree() !=
3594 frame_tree_node()->frame_tree()) {
3595 AccessibilityFatalError();
3596 return ui::AXTreeIDRegistry::kNoAXTreeID;
3597 }
3598 } 3608 }
3599 3609
3600 if (!rfh) 3610 if (!rfh)
3601 return ui::AXTreeIDRegistry::kNoAXTreeID; 3611 return ui::AXTreeIDRegistry::kNoAXTreeID;
3602 3612
3613 // As a sanity check, make sure we're within the same frame tree and
3614 // crash the renderer if not.
3615 if (rfh->frame_tree_node()->frame_tree() != frame_tree_node()->frame_tree()) {
3616 AccessibilityFatalError();
3617 return ui::AXTreeIDRegistry::kNoAXTreeID;
3618 }
3619
3603 return rfh->GetAXTreeID(); 3620 return rfh->GetAXTreeID();
3604 } 3621 }
3605 3622
3606 ui::AXTreeIDRegistry::AXTreeID 3623 ui::AXTreeIDRegistry::AXTreeID
3607 RenderFrameHostImpl::BrowserPluginInstanceIDToAXTreeID(int instance_id) { 3624 RenderFrameHostImpl::BrowserPluginInstanceIDToAXTreeID(int instance_id) {
3608 RenderFrameHostImpl* guest = static_cast<RenderFrameHostImpl*>( 3625 RenderFrameHostImpl* guest = static_cast<RenderFrameHostImpl*>(
3609 delegate()->GetGuestByInstanceID(this, instance_id)); 3626 delegate()->GetGuestByInstanceID(this, instance_id));
3610 if (!guest) 3627 if (!guest)
3611 return ui::AXTreeIDRegistry::kNoAXTreeID; 3628 return ui::AXTreeIDRegistry::kNoAXTreeID;
3612 3629
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
3913 } 3930 }
3914 3931
3915 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( 3932 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame(
3916 const std::string& interface_name, 3933 const std::string& interface_name,
3917 mojo::ScopedMessagePipeHandle pipe) { 3934 mojo::ScopedMessagePipeHandle pipe) {
3918 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); 3935 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe));
3919 } 3936 }
3920 #endif 3937 #endif
3921 3938
3922 } // namespace content 3939 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698