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

Unified 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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/frame_host/render_frame_host_impl.cc
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index 55e731cda2a209abf59122cee740afa2cf320f40..5dd3dc79dbf647dc4858f650a48a775967f6a409 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -314,6 +314,15 @@ void NotifyForEachFrameFromUI(
base::Passed(std::move(routing_ids))));
}
+void LookupRenderFrameHostOrProxy(int process_id,
+ int routing_id,
+ RenderFrameHostImpl** rfh,
+ RenderFrameProxyHost** rfph) {
+ *rfh = RenderFrameHostImpl::FromID(process_id, routing_id);
+ if (*rfh == nullptr)
+ *rfph = RenderFrameProxyHost::FromID(process_id, routing_id);
+}
+
} // namespace
// static
@@ -3632,32 +3641,39 @@ bool RenderFrameHostImpl::CanExecuteJavaScript() {
(delegate_->GetAsWebContents() == nullptr);
}
+// static
+int RenderFrameHost::GetFrameTreeNodeIdForRoutingId(int process_id,
+ int routing_id) {
+ RenderFrameHostImpl* rfh = nullptr;
+ RenderFrameProxyHost* rfph = nullptr;
+ LookupRenderFrameHostOrProxy(process_id, routing_id, &rfh, &rfph);
+ if (rfh) {
+ return rfh->GetFrameTreeNodeId();
+ } else if (rfph) {
+ return rfph->frame_tree_node()->frame_tree_node_id();
+ }
+ return kNoFrameTreeNodeId;
+}
+
ui::AXTreeIDRegistry::AXTreeID RenderFrameHostImpl::RoutingIDToAXTreeID(
int routing_id) {
RenderFrameHostImpl* rfh = nullptr;
- RenderFrameProxyHost* rfph = RenderFrameProxyHost::FromID(
- GetProcess()->GetID(), routing_id);
+ RenderFrameProxyHost* rfph = nullptr;
+ LookupRenderFrameHostOrProxy(GetProcess()->GetID(), routing_id, &rfh, &rfph);
if (rfph) {
- FrameTree* frame_tree = rfph->frame_tree_node()->frame_tree();
- FrameTreeNode* frame_tree_node = frame_tree->FindByRoutingID(
- GetProcess()->GetID(), routing_id);
- rfh = frame_tree_node->render_manager()->current_frame_host();
- } else {
- rfh = RenderFrameHostImpl::FromID(GetProcess()->GetID(), routing_id);
-
- // As a sanity check, make sure we're within the same frame tree and
- // crash the renderer if not.
- if (rfh &&
- rfh->frame_tree_node()->frame_tree() !=
- frame_tree_node()->frame_tree()) {
- AccessibilityFatalError();
- return ui::AXTreeIDRegistry::kNoAXTreeID;
- }
+ rfh = rfph->frame_tree_node()->current_frame_host();
}
if (!rfh)
return ui::AXTreeIDRegistry::kNoAXTreeID;
+ // As a sanity check, make sure we're within the same frame tree and
+ // crash the renderer if not.
+ if (rfh->frame_tree_node()->frame_tree() != frame_tree_node()->frame_tree()) {
+ AccessibilityFatalError();
+ return ui::AXTreeIDRegistry::kNoAXTreeID;
+ }
+
return rfh->GetAXTreeID();
}
« 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