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

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: 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 side-by-side diff with in-line comments
Download patch
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 42f550f05f2946011ab2808fbf867c8e7c306a08..53bfea10f41f594972d4d63c0f23c0d76cd2e79a 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -312,6 +312,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
@@ -3574,32 +3583,40 @@ bool RenderFrameHostImpl::CanExecuteJavaScript() {
(delegate_->GetAsWebContents() == nullptr);
}
+// static
+RenderFrameHost* RenderFrameHost::GetRenderFrameHostForRoutingId(
+ int process_id,
+ int routing_id) {
+ RenderFrameHostImpl* rfh = nullptr;
+ RenderFrameProxyHost* rfph = nullptr;
+ LookupRenderFrameHostOrProxy(process_id, routing_id, &rfh, &rfph);
+ if (rfh) {
+ return rfh;
+ } else if (rfph) {
+ return rfph->frame_tree_node()->current_frame_host();
+ }
+ return nullptr;
+}
+
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();
}

Powered by Google App Engine
This is Rietveld 408576698