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

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: Use explicitly-sized int types in IPC definition 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 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 3298 matching lines...) Expand 10 before | Expand all | Expand 10 after
3625 frame_tree_node_->current_url().SchemeIs(kChromeDevToolsScheme) || 3634 frame_tree_node_->current_url().SchemeIs(kChromeDevToolsScheme) ||
3626 ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings( 3635 ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings(
3627 GetProcess()->GetID()) || 3636 GetProcess()->GetID()) ||
3628 // It's possible to load about:blank in a Web UI renderer. 3637 // It's possible to load about:blank in a Web UI renderer.
3629 // See http://crbug.com/42547 3638 // See http://crbug.com/42547
3630 (frame_tree_node_->current_url().spec() == url::kAboutBlankURL) || 3639 (frame_tree_node_->current_url().spec() == url::kAboutBlankURL) ||
3631 // InterstitialPageImpl should be the only case matching this. 3640 // InterstitialPageImpl should be the only case matching this.
3632 (delegate_->GetAsWebContents() == nullptr); 3641 (delegate_->GetAsWebContents() == nullptr);
3633 } 3642 }
3634 3643
3644 // static
3645 int RenderFrameHost::GetFrameTreeNodeIdForRoutingId(int process_id,
3646 int routing_id) {
3647 RenderFrameHostImpl* rfh = nullptr;
3648 RenderFrameProxyHost* rfph = nullptr;
3649 LookupRenderFrameHostOrProxy(process_id, routing_id, &rfh, &rfph);
3650 if (rfh) {
3651 return rfh->GetFrameTreeNodeId();
3652 } else if (rfph) {
3653 return rfph->frame_tree_node()->frame_tree_node_id();
3654 }
3655 return kNoFrameTreeNodeId;
3656 }
3657
3635 ui::AXTreeIDRegistry::AXTreeID RenderFrameHostImpl::RoutingIDToAXTreeID( 3658 ui::AXTreeIDRegistry::AXTreeID RenderFrameHostImpl::RoutingIDToAXTreeID(
3636 int routing_id) { 3659 int routing_id) {
3637 RenderFrameHostImpl* rfh = nullptr; 3660 RenderFrameHostImpl* rfh = nullptr;
3638 RenderFrameProxyHost* rfph = RenderFrameProxyHost::FromID( 3661 RenderFrameProxyHost* rfph = nullptr;
3639 GetProcess()->GetID(), routing_id); 3662 LookupRenderFrameHostOrProxy(GetProcess()->GetID(), routing_id, &rfh, &rfph);
3640 if (rfph) { 3663 if (rfph) {
3641 FrameTree* frame_tree = rfph->frame_tree_node()->frame_tree(); 3664 rfh = rfph->frame_tree_node()->current_frame_host();
3642 FrameTreeNode* frame_tree_node = frame_tree->FindByRoutingID(
3643 GetProcess()->GetID(), routing_id);
3644 rfh = frame_tree_node->render_manager()->current_frame_host();
3645 } else {
3646 rfh = RenderFrameHostImpl::FromID(GetProcess()->GetID(), routing_id);
3647
3648 // As a sanity check, make sure we're within the same frame tree and
3649 // crash the renderer if not.
3650 if (rfh &&
3651 rfh->frame_tree_node()->frame_tree() !=
3652 frame_tree_node()->frame_tree()) {
3653 AccessibilityFatalError();
3654 return ui::AXTreeIDRegistry::kNoAXTreeID;
3655 }
3656 } 3665 }
3657 3666
3658 if (!rfh) 3667 if (!rfh)
3659 return ui::AXTreeIDRegistry::kNoAXTreeID; 3668 return ui::AXTreeIDRegistry::kNoAXTreeID;
3660 3669
3670 // As a sanity check, make sure we're within the same frame tree and
3671 // crash the renderer if not.
3672 if (rfh->frame_tree_node()->frame_tree() != frame_tree_node()->frame_tree()) {
3673 AccessibilityFatalError();
3674 return ui::AXTreeIDRegistry::kNoAXTreeID;
3675 }
3676
3661 return rfh->GetAXTreeID(); 3677 return rfh->GetAXTreeID();
3662 } 3678 }
3663 3679
3664 ui::AXTreeIDRegistry::AXTreeID 3680 ui::AXTreeIDRegistry::AXTreeID
3665 RenderFrameHostImpl::BrowserPluginInstanceIDToAXTreeID(int instance_id) { 3681 RenderFrameHostImpl::BrowserPluginInstanceIDToAXTreeID(int instance_id) {
3666 RenderFrameHostImpl* guest = static_cast<RenderFrameHostImpl*>( 3682 RenderFrameHostImpl* guest = static_cast<RenderFrameHostImpl*>(
3667 delegate()->GetGuestByInstanceID(this, instance_id)); 3683 delegate()->GetGuestByInstanceID(this, instance_id));
3668 if (!guest) 3684 if (!guest)
3669 return ui::AXTreeIDRegistry::kNoAXTreeID; 3685 return ui::AXTreeIDRegistry::kNoAXTreeID;
3670 3686
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
3983 } 3999 }
3984 4000
3985 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( 4001 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame(
3986 const std::string& interface_name, 4002 const std::string& interface_name,
3987 mojo::ScopedMessagePipeHandle pipe) { 4003 mojo::ScopedMessagePipeHandle pipe) {
3988 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); 4004 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe));
3989 } 4005 }
3990 #endif 4006 #endif
3991 4007
3992 } // namespace content 4008 } // namespace content
OLDNEW
« no previous file with comments | « components/safe_browsing/renderer/threat_dom_details.cc ('k') | content/public/browser/render_frame_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698