Commit a439bb43 authored by Hajime Hoshi's avatar Hajime Hoshi Committed by Commit Bot

Make sure WebLocalFrameImpl::frame_ exists when creating its binding

This CL makes binding initialization a little delayed so that |frame_|
always exists when the local frame's binding is created.

After this CL, more tasks via WebLocalFrameImpl are executed on a per-
frame task runner.

Bug: 786332
Change-Id: I2f632814acefa7cf1bb2411563405306c469b6fc
Reviewed-on: https://chromium-review.googlesource.com/c/1298532Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Hajime Hoshi <hajimehoshi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#604188}
parent 37ede0d0
...@@ -1298,6 +1298,8 @@ RenderFrameImpl* RenderFrameImpl::CreateMainFrame( ...@@ -1298,6 +1298,8 @@ RenderFrameImpl* RenderFrameImpl::CreateMainFrame(
render_frame->render_widget_ = render_widget; render_frame->render_widget_ = render_widget;
render_frame->in_frame_tree_ = true; render_frame->in_frame_tree_ = true;
render_frame->Initialize();
return render_frame; return render_frame;
} }
...@@ -1659,8 +1661,6 @@ RenderFrameImpl::RenderFrameImpl(CreateParams params) ...@@ -1659,8 +1661,6 @@ RenderFrameImpl::RenderFrameImpl(CreateParams params)
g_routing_id_frame_map.Get().insert(std::make_pair(routing_id_, this)); g_routing_id_frame_map.Get().insert(std::make_pair(routing_id_, this));
CHECK(result.second) << "Inserting a duplicate item."; CHECK(result.second) << "Inserting a duplicate item.";
RenderThread::Get()->AddRoute(routing_id_, this);
// Everything below subclasses RenderFrameObserver and is automatically // Everything below subclasses RenderFrameObserver and is automatically
// deleted when the RenderFrame gets deleted. // deleted when the RenderFrame gets deleted.
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
...@@ -1780,6 +1780,10 @@ void RenderFrameImpl::Initialize() { ...@@ -1780,6 +1780,10 @@ void RenderFrameImpl::Initialize() {
enabled_bindings_ |= BINDINGS_POLICY_STATS_COLLECTION; enabled_bindings_ |= BINDINGS_POLICY_STATS_COLLECTION;
if (base::FeatureList::IsEnabled(network::features::kNetworkService)) if (base::FeatureList::IsEnabled(network::features::kNetworkService))
frame_request_blocker_ = base::MakeRefCounted<FrameRequestBlocker>(); frame_request_blocker_ = base::MakeRefCounted<FrameRequestBlocker>();
// Bind this frame and the message router. This must be called after |frame_|
// is set since binding requires a per-frame task runner.
RenderThread::Get()->AddRoute(routing_id_, this);
} }
void RenderFrameImpl::InitializeBlameContext(RenderFrameImpl* parent_frame) { void RenderFrameImpl::InitializeBlameContext(RenderFrameImpl* parent_frame) {
...@@ -2141,9 +2145,8 @@ void RenderFrameImpl::BindFrame( ...@@ -2141,9 +2145,8 @@ void RenderFrameImpl::BindFrame(
const service_manager::BindSourceInfo& browser_info, const service_manager::BindSourceInfo& browser_info,
mojom::FrameRequest request) { mojom::FrameRequest request) {
browser_info_ = browser_info; browser_info_ = browser_info;
frame_binding_.Bind( frame_binding_.Bind(std::move(request),
std::move(request), GetTaskRunner(blink::TaskType::kInternalIPC));
frame_ ? GetTaskRunner(blink::TaskType::kInternalIPC) : nullptr);
} }
void RenderFrameImpl::BindFrameBindingsControl( void RenderFrameImpl::BindFrameBindingsControl(
......
...@@ -541,8 +541,6 @@ void RenderViewImpl::Initialize( ...@@ -541,8 +541,6 @@ void RenderViewImpl::Initialize(
GetWidget()->GetWebScreenInfo(), GetWidget()->compositor_deps(), GetWidget()->GetWebScreenInfo(), GetWidget()->compositor_deps(),
opener_frame, params->devtools_main_frame_token, opener_frame, params->devtools_main_frame_token,
params->replicated_frame_state, params->has_committed_real_load); params->replicated_frame_state, params->has_committed_real_load);
main_render_frame_->Initialize();
} else { } else {
CHECK(params->swapped_out); CHECK(params->swapped_out);
RenderFrameProxy::CreateFrameProxy(params->proxy_routing_id, GetRoutingID(), RenderFrameProxy::CreateFrameProxy(params->proxy_routing_id, GetRoutingID(),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment