Pass frame token to content.mojom.CreateFrameParams
... to replace |opener_routing_id|.
This CL switches content.mojom.CreateFrameParams::opener_routing_id
to use mojo_base.mojom.UnguessableToken.
Note that it is a step forward toward stopping representing |opener
frames| through its routing ID when doing mojo communications between
browser -> renderer.
The next CL will move callers of CreateViewParams::opener_frame_route_id
to also use mojo_base.mojom.UnguessableToken (ie base::UnguessableToken).
That will allow the removal of RenderFrameHostManager::GetOpenerRoutingID()
altogether.
BUG=1051144
[email protected], [email protected], [email protected], [email protected]
Change-Id: Ib0789617cb35234c28cd59584064b4ac84c76bef
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2210635
Commit-Queue: Antonio Gomes <[email protected]>
Reviewed-by: Avi Drissman <[email protected]>
Reviewed-by: Kentaro Hara <[email protected]>
Reviewed-by: Dominick Ng <[email protected]>
Reviewed-by: Dave Tapuska <[email protected]>
Cr-Commit-Position: refs/heads/master@{#771607}
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index e2ea71ed..fd47808a 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -2008,10 +2008,11 @@
return frame_input_handler_.get();
}
-bool RenderFrameHostImpl::CreateRenderFrame(int previous_routing_id,
- int opener_routing_id,
- int parent_routing_id,
- int previous_sibling_routing_id) {
+bool RenderFrameHostImpl::CreateRenderFrame(
+ int previous_routing_id,
+ const base::Optional<base::UnguessableToken>& opener_frame_token,
+ int parent_routing_id,
+ int previous_sibling_routing_id) {
TRACE_EVENT0("navigation", "RenderFrameHostImpl::CreateRenderFrame");
DCHECK(!IsRenderFrameLive()) << "Creating frame twice";
@@ -2040,7 +2041,7 @@
params->routing_id = routing_id_;
params->previous_routing_id = previous_routing_id;
- params->opener_routing_id = opener_routing_id;
+ params->opener_frame_token = opener_frame_token;
params->parent_routing_id = parent_routing_id;
params->previous_sibling_routing_id = previous_sibling_routing_id;
params->replication_state = frame_tree_node()->current_replication_state();
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h
index a748eb33..fde7c64 100644
--- a/content/browser/frame_host/render_frame_host_impl.h
+++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -447,10 +447,11 @@
}
// Creates a RenderFrame in the renderer process.
- bool CreateRenderFrame(int previous_routing_id,
- int opener_routing_id,
- int parent_routing_id,
- int previous_sibling_routing_id);
+ bool CreateRenderFrame(
+ int previous_routing_id,
+ const base::Optional<base::UnguessableToken>& opener_frame_token,
+ int parent_routing_id,
+ int previous_sibling_routing_id);
// Deletes the RenderFrame in the renderer process.
// Postcondition: |is_active()| will return false.
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
index 7bb200e5..98475dc 100644
--- a/content/browser/frame_host/render_frame_host_manager.cc
+++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -2503,9 +2503,9 @@
SiteInstance* site_instance = render_frame_host->GetSiteInstance();
- int opener_routing_id = MSG_ROUTING_NONE;
+ base::Optional<base::UnguessableToken> opener_frame_token;
if (frame_tree_node_->opener())
- opener_routing_id = GetOpenerRoutingID(site_instance);
+ opener_frame_token = GetOpenerFrameToken(site_instance);
int parent_routing_id = MSG_ROUTING_NONE;
if (frame_tree_node_->parent()) {
@@ -2552,7 +2552,7 @@
}
return delegate_->CreateRenderFrameForRenderManager(
- render_frame_host, previous_routing_id, opener_routing_id,
+ render_frame_host, previous_routing_id, opener_frame_token,
parent_routing_id, previous_sibling_routing_id);
}
diff --git a/content/browser/frame_host/render_frame_host_manager.h b/content/browser/frame_host/render_frame_host_manager.h
index 2f699112c..21d6ea3 100644
--- a/content/browser/frame_host/render_frame_host_manager.h
+++ b/content/browser/frame_host/render_frame_host_manager.h
@@ -126,7 +126,7 @@
virtual bool CreateRenderFrameForRenderManager(
RenderFrameHost* render_frame_host,
int proxy_routing_id,
- int opener_routing_id,
+ const base::Optional<base::UnguessableToken>& opener_frame_token,
int parent_routing_id,
int previous_sibling_routing_id) = 0;
virtual void BeforeUnloadFiredFromRenderManager(
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc
index 389c111a..d2968dd 100644
--- a/content/browser/site_per_process_browsertest.cc
+++ b/content/browser/site_per_process_browsertest.cc
@@ -6198,7 +6198,7 @@
ignore_result(params->interface_bundle->browser_interface_broker
.InitWithNewPipeAndPassReceiver());
params->previous_routing_id = previous_routing_id;
- params->opener_routing_id = IPC::mojom::kRoutingIdNone;
+ params->opener_frame_token = base::nullopt;
params->parent_routing_id =
shell()->web_contents()->GetMainFrame()->GetRoutingID();
params->previous_sibling_routing_id = IPC::mojom::kRoutingIdNone;
@@ -6270,7 +6270,7 @@
ignore_result(params->interface_bundle->browser_interface_broker
.InitWithNewPipeAndPassReceiver());
params->previous_routing_id = IPC::mojom::kRoutingIdNone;
- params->opener_routing_id = IPC::mojom::kRoutingIdNone;
+ params->opener_frame_token = base::nullopt;
params->parent_routing_id = parent_routing_id;
params->previous_sibling_routing_id = IPC::mojom::kRoutingIdNone;
params->frame_owner_properties = blink::mojom::FrameOwnerProperties::New();
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index b7493e2..a9c62d7 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -6570,7 +6570,7 @@
bool WebContentsImpl::CreateRenderFrameForRenderManager(
RenderFrameHost* render_frame_host,
int previous_routing_id,
- int opener_routing_id,
+ const base::Optional<base::UnguessableToken>& opener_frame_token,
int parent_routing_id,
int previous_sibling_routing_id) {
TRACE_EVENT0("browser,navigation",
@@ -6578,9 +6578,10 @@
RenderFrameHostImpl* rfh =
static_cast<RenderFrameHostImpl*>(render_frame_host);
- if (!rfh->CreateRenderFrame(previous_routing_id, opener_routing_id,
- parent_routing_id, previous_sibling_routing_id))
+ if (!rfh->CreateRenderFrame(previous_routing_id, opener_frame_token,
+ parent_routing_id, previous_sibling_routing_id)) {
return false;
+ }
// TODO(nasko): When RenderWidgetHost is owned by RenderFrameHost, the passed
// RenderFrameHost will have to be associated with the appropriate
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index 9053e8be..71ddac82 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -931,7 +931,7 @@
bool CreateRenderFrameForRenderManager(
RenderFrameHost* render_frame_host,
int previous_routing_id,
- int opener_routing_id,
+ const base::Optional<base::UnguessableToken>& opener_frame_token,
int parent_routing_id,
int previous_sibling_routing_id) override;
void BeforeUnloadFiredFromRenderManager(