Commit a1f0a5bb authored by Yuwei Huang's avatar Yuwei Huang Committed by Commit Bot

[Remoting Android] Create URLRequestContextGetter on UI thread

This CL fixes a bug that crashes the latest M70 Android client when it
lauches.

URLRequestContextGetter's constructor creates a ProxyChangeListener,
which requires an Android looper on the current thread. The C++ network
thread doesn't create any looper, so it must be created on the UI thread
which has alooper. Note that this class is used (and required to be used)
on the network thread afterwards.

Bug: 882072
Change-Id: I0cf610d3dccf087f040b49995d3022a1ba4de0e9
Reviewed-on: https://chromium-review.googlesource.com/1217363Reviewed-by: default avatarJoe Downing <joedow@chromium.org>
Commit-Queue: Yuwei Huang <yuweih@chromium.org>
Cr-Commit-Position: refs/heads/master@{#590057}
parent 763c6f6d
...@@ -83,9 +83,9 @@ void ChromotingClientRuntime::Init( ...@@ -83,9 +83,9 @@ void ChromotingClientRuntime::Init(
DCHECK(delegate); DCHECK(delegate);
DCHECK(!delegate_); DCHECK(!delegate_);
delegate_ = delegate; delegate_ = delegate;
log_writer_ = std::make_unique<TelemetryLogWriter>( url_requester_ = new URLRequestContextGetter(network_task_runner_);
kTelemetryBaseUrl, log_writer_ = std::make_unique<TelemetryLogWriter>(kTelemetryBaseUrl,
CreateOAuthTokenGetter()); CreateOAuthTokenGetter());
network_task_runner()->PostTask( network_task_runner()->PostTask(
FROM_HERE, FROM_HERE,
base::BindOnce(&ChromotingClientRuntime::InitializeOnNetworkThread, base::BindOnce(&ChromotingClientRuntime::InitializeOnNetworkThread,
...@@ -106,7 +106,6 @@ ChromotingClientRuntime::url_loader_factory() { ...@@ -106,7 +106,6 @@ ChromotingClientRuntime::url_loader_factory() {
void ChromotingClientRuntime::InitializeOnNetworkThread() { void ChromotingClientRuntime::InitializeOnNetworkThread() {
DCHECK(network_task_runner()->BelongsToCurrentThread()); DCHECK(network_task_runner()->BelongsToCurrentThread());
url_requester_ = new URLRequestContextGetter(network_task_runner_);
url_loader_factory_owner_ = url_loader_factory_owner_ =
std::make_unique<network::TransitionalURLLoaderFactoryOwner>( std::make_unique<network::TransitionalURLLoaderFactoryOwner>(
url_requester_); url_requester_);
......
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