Fix shutdown crash in InitNetworkContext with multi-threaded message loop (fixes issue #2703)
This commit is contained in:
parent
49786ccc34
commit
dfcfb51bef
|
@ -1288,6 +1288,11 @@ CefContentBrowserClient::CreateNetworkContext(
|
||||||
content::BrowserContext* context,
|
content::BrowserContext* context,
|
||||||
bool in_memory,
|
bool in_memory,
|
||||||
const base::FilePath& relative_partition_path) {
|
const base::FilePath& relative_partition_path) {
|
||||||
|
// This method may be called during shutdown when using multi-threaded
|
||||||
|
// message loop mode. In that case exit early to avoid crashes.
|
||||||
|
if (!SystemNetworkContextManager::GetInstance())
|
||||||
|
return mojo::Remote<network::mojom::NetworkContext>();
|
||||||
|
|
||||||
Profile* profile = Profile::FromBrowserContext(context);
|
Profile* profile = Profile::FromBrowserContext(context);
|
||||||
return profile->CreateNetworkContext(in_memory, relative_partition_path);
|
return profile->CreateNetworkContext(in_memory, relative_partition_path);
|
||||||
}
|
}
|
||||||
|
|
|
@ -397,6 +397,9 @@ patches = [
|
||||||
# - Remove the non-nullptr WebContents requirement from
|
# - Remove the non-nullptr WebContents requirement from
|
||||||
# NetworkServiceClient::OnAuthRequired.
|
# NetworkServiceClient::OnAuthRequired.
|
||||||
# https://bitbucket.org/chromiumembedded/cef/issues/2718
|
# https://bitbucket.org/chromiumembedded/cef/issues/2718
|
||||||
|
#
|
||||||
|
# Fix shutdown crash in InitNetworkContext with multi-threaded message loop.
|
||||||
|
# https://bitbucket.org/chromiumembedded/cef/issues/2703
|
||||||
'name': 'services_network_request_id_2718',
|
'name': 'services_network_request_id_2718',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git content/browser/storage_partition_impl.cc content/browser/storage_partition_impl.cc
|
diff --git content/browser/storage_partition_impl.cc content/browser/storage_partition_impl.cc
|
||||||
index 818a6370957a..64ab8e2462b5 100644
|
index 818a6370957a..46282b320b0b 100644
|
||||||
--- content/browser/storage_partition_impl.cc
|
--- content/browser/storage_partition_impl.cc
|
||||||
+++ content/browser/storage_partition_impl.cc
|
+++ content/browser/storage_partition_impl.cc
|
||||||
@@ -577,10 +577,6 @@ class LoginHandlerDelegate {
|
@@ -577,10 +577,6 @@ class LoginHandlerDelegate {
|
||||||
|
@ -26,6 +26,18 @@ index 818a6370957a..64ab8e2462b5 100644
|
||||||
new LoginHandlerDelegate(std::move(auth_challenge_responder),
|
new LoginHandlerDelegate(std::move(auth_challenge_responder),
|
||||||
std::move(web_contents_getter), auth_info,
|
std::move(web_contents_getter), auth_info,
|
||||||
is_request_for_main_frame, process_id, routing_id,
|
is_request_for_main_frame, process_id, routing_id,
|
||||||
|
@@ -2277,7 +2267,10 @@ void StoragePartitionImpl::GetQuotaSettings(
|
||||||
|
void StoragePartitionImpl::InitNetworkContext() {
|
||||||
|
network_context_ = GetContentClient()->browser()->CreateNetworkContext(
|
||||||
|
browser_context_, is_in_memory_, relative_partition_path_);
|
||||||
|
- DCHECK(network_context_);
|
||||||
|
+ if (!network_context_) {
|
||||||
|
+ // May happen during shutdown.
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
network_context_client_receiver_.reset();
|
||||||
|
network_context_->SetClient(
|
||||||
diff --git services/network/public/cpp/simple_url_loader.cc services/network/public/cpp/simple_url_loader.cc
|
diff --git services/network/public/cpp/simple_url_loader.cc services/network/public/cpp/simple_url_loader.cc
|
||||||
index 1cc4198e6057..0fae6dbe25a2 100644
|
index 1cc4198e6057..0fae6dbe25a2 100644
|
||||||
--- services/network/public/cpp/simple_url_loader.cc
|
--- services/network/public/cpp/simple_url_loader.cc
|
||||||
|
|
Loading…
Reference in New Issue