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

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: Fix comment, move web_frame_util function 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 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 if (frame_host) 306 if (frame_host)
307 routing_ids->insert(frame_host->GetGlobalFrameRoutingId()); 307 routing_ids->insert(frame_host->GetGlobalFrameRoutingId());
308 if (pending_frame_host) 308 if (pending_frame_host)
309 routing_ids->insert(pending_frame_host->GetGlobalFrameRoutingId()); 309 routing_ids->insert(pending_frame_host->GetGlobalFrameRoutingId());
310 } 310 }
311 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 311 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
312 base::Bind(&NotifyRouteChangesOnIO, frame_callback, 312 base::Bind(&NotifyRouteChangesOnIO, frame_callback,
313 base::Passed(std::move(routing_ids)))); 313 base::Passed(std::move(routing_ids))));
314 } 314 }
315 315
316 void LookupRenderFrameHostOrProxy(int process_id,
317 int routing_id,
318 RenderFrameHostImpl** rfh,
319 RenderFrameProxyHost** rfph) {
320 *rfh = RenderFrameHostImpl::FromID(process_id, routing_id);
321 if (*rfh == nullptr)
322 *rfph = RenderFrameProxyHost::FromID(process_id, routing_id);
323 }
324
316 } // namespace 325 } // namespace
317 326
318 // static 327 // static
319 RenderFrameHost* RenderFrameHost::FromID(int render_process_id, 328 RenderFrameHost* RenderFrameHost::FromID(int render_process_id,
320 int render_frame_id) { 329 int render_frame_id) {
321 return RenderFrameHostImpl::FromID(render_process_id, render_frame_id); 330 return RenderFrameHostImpl::FromID(render_process_id, render_frame_id);
322 } 331 }
323 332
324 #if defined(OS_ANDROID) 333 #if defined(OS_ANDROID)
325 // static 334 // static
(...skipping 3253 matching lines...) Expand 10 before | Expand all | Expand 10 after
3579 frame_tree_node_->current_url().SchemeIs(kChromeDevToolsScheme) || 3588 frame_tree_node_->current_url().SchemeIs(kChromeDevToolsScheme) ||
3580 ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings( 3589 ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings(
3581 GetProcess()->GetID()) || 3590 GetProcess()->GetID()) ||
3582 // It's possible to load about:blank in a Web UI renderer. 3591 // It's possible to load about:blank in a Web UI renderer.
3583 // See http://crbug.com/42547 3592 // See http://crbug.com/42547
3584 (frame_tree_node_->current_url().spec() == url::kAboutBlankURL) || 3593 (frame_tree_node_->current_url().spec() == url::kAboutBlankURL) ||
3585 // InterstitialPageImpl should be the only case matching this. 3594 // InterstitialPageImpl should be the only case matching this.
3586 (delegate_->GetAsWebContents() == nullptr); 3595 (delegate_->GetAsWebContents() == nullptr);
3587 } 3596 }
3588 3597
3598 // static
3599 int RenderFrameHost::GetFrameTreeNodeIdForRoutingId(int process_id,
3600 int routing_id) {
3601 RenderFrameHostImpl* rfh = nullptr;
3602 RenderFrameProxyHost* rfph = nullptr;
3603 LookupRenderFrameHostOrProxy(process_id, routing_id, &rfh, &rfph);
3604 if (rfh) {
3605 return rfh->GetFrameTreeNodeId();
3606 } else if (rfph) {
3607 return rfph->frame_tree_node()->frame_tree_node_id();
3608 }
3609 return kNoFrameTreeNodeId;
3610 }
3611
3589 ui::AXTreeIDRegistry::AXTreeID RenderFrameHostImpl::RoutingIDToAXTreeID( 3612 ui::AXTreeIDRegistry::AXTreeID RenderFrameHostImpl::RoutingIDToAXTreeID(
3590 int routing_id) { 3613 int routing_id) {
3591 RenderFrameHostImpl* rfh = nullptr; 3614 RenderFrameHostImpl* rfh = nullptr;
3592 RenderFrameProxyHost* rfph = RenderFrameProxyHost::FromID( 3615 RenderFrameProxyHost* rfph = nullptr;
3593 GetProcess()->GetID(), routing_id); 3616 LookupRenderFrameHostOrProxy(GetProcess()->GetID(), routing_id, &rfh, &rfph);
3594 if (rfph) { 3617 if (rfph) {
3595 FrameTree* frame_tree = rfph->frame_tree_node()->frame_tree(); 3618 rfh = rfph->frame_tree_node()->current_frame_host();
3596 FrameTreeNode* frame_tree_node = frame_tree->FindByRoutingID(
3597 GetProcess()->GetID(), routing_id);
3598 rfh = frame_tree_node->render_manager()->current_frame_host();
3599 } else {
3600 rfh = RenderFrameHostImpl::FromID(GetProcess()->GetID(), routing_id);
3601
3602 // As a sanity check, make sure we're within the same frame tree and
3603 // crash the renderer if not.
3604 if (rfh &&
3605 rfh->frame_tree_node()->frame_tree() !=
3606 frame_tree_node()->frame_tree()) {
3607 AccessibilityFatalError();
3608 return ui::AXTreeIDRegistry::kNoAXTreeID;
3609 }
3610 } 3619 }
3611 3620
3612 if (!rfh) 3621 if (!rfh)
3613 return ui::AXTreeIDRegistry::kNoAXTreeID; 3622 return ui::AXTreeIDRegistry::kNoAXTreeID;
3614 3623
3624 // As a sanity check, make sure we're within the same frame tree and
3625 // crash the renderer if not.
3626 if (rfh->frame_tree_node()->frame_tree() != frame_tree_node()->frame_tree()) {
3627 AccessibilityFatalError();
3628 return ui::AXTreeIDRegistry::kNoAXTreeID;
3629 }
3630
3615 return rfh->GetAXTreeID(); 3631 return rfh->GetAXTreeID();
3616 } 3632 }
3617 3633
3618 ui::AXTreeIDRegistry::AXTreeID 3634 ui::AXTreeIDRegistry::AXTreeID
3619 RenderFrameHostImpl::BrowserPluginInstanceIDToAXTreeID(int instance_id) { 3635 RenderFrameHostImpl::BrowserPluginInstanceIDToAXTreeID(int instance_id) {
3620 RenderFrameHostImpl* guest = static_cast<RenderFrameHostImpl*>( 3636 RenderFrameHostImpl* guest = static_cast<RenderFrameHostImpl*>(
3621 delegate()->GetGuestByInstanceID(this, instance_id)); 3637 delegate()->GetGuestByInstanceID(this, instance_id));
3622 if (!guest) 3638 if (!guest)
3623 return ui::AXTreeIDRegistry::kNoAXTreeID; 3639 return ui::AXTreeIDRegistry::kNoAXTreeID;
3624 3640
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
3934 } 3950 }
3935 3951
3936 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( 3952 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame(
3937 const std::string& interface_name, 3953 const std::string& interface_name,
3938 mojo::ScopedMessagePipeHandle pipe) { 3954 mojo::ScopedMessagePipeHandle pipe) {
3939 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); 3955 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe));
3940 } 3956 }
3941 #endif 3957 #endif
3942 3958
3943 } // namespace content 3959 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698