Commit c1fd42e0 authored by John Abd-El-Malek's avatar John Abd-El-Malek Committed by Commit Bot

Port cast's URLRequestContextFactory::PopulateNetworkSessionParams to the network service.

Note nothing is done for kIgnoreCertificateErrors flag as that's already handled by NetworkContext's call to ParseCommandLineAndFieldTrials.

Bug: b/123321526
Change-Id: I336d68f262a4754d0396d85978de2608b2e3572e
Reviewed-on: https://chromium-review.googlesource.com/c/1448990
Auto-Submit: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: default avatarLuke Halliwell <halliwell@chromium.org>
Reviewed-by: default avatarNasko Oskov <nasko@chromium.org>
Commit-Queue: John Abd-El-Malek <jam@chromium.org>
Cr-Commit-Position: refs/heads/master@{#628221}
parent ee6fd5d8
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "base/bind.h" #include "base/bind.h"
#include "base/task/post_task.h" #include "base/task/post_task.h"
#include "chromecast/base/cast_features.h"
#include "chromecast/browser/cast_browser_context.h" #include "chromecast/browser/cast_browser_context.h"
#include "chromecast/browser/cast_browser_process.h" #include "chromecast/browser/cast_browser_process.h"
#include "chromecast/browser/cast_http_user_agent_settings.h" #include "chromecast/browser/cast_http_user_agent_settings.h"
...@@ -209,6 +210,11 @@ void CastNetworkContexts::OnNetworkServiceCreated( ...@@ -209,6 +210,11 @@ void CastNetworkContexts::OnNetworkServiceCreated(
if (!base::FeatureList::IsEnabled(network::features::kNetworkService)) if (!base::FeatureList::IsEnabled(network::features::kNetworkService))
return; return;
// Disable QUIC if instructed by DCS. This remains constant for the lifetime
// of the process.
if (!chromecast::IsFeatureEnabled(kEnableQuic))
network_service->DisableQuic();
// The system NetworkContext must be created first, since it sets // The system NetworkContext must be created first, since it sets
// |primary_network_context| to true. // |primary_network_context| to true.
network_service->CreateNetworkContext(MakeRequest(&system_network_context_), network_service->CreateNetworkContext(MakeRequest(&system_network_context_),
...@@ -239,6 +245,15 @@ CastNetworkContexts::CreateDefaultNetworkContextParams() { ...@@ -239,6 +245,15 @@ CastNetworkContexts::CreateDefaultNetworkContextParams() {
network_context_params->accept_language = network_context_params->accept_language =
CastHttpUserAgentSettings::AcceptLanguage(); CastHttpUserAgentSettings::AcceptLanguage();
// Disable idle sockets close on memory pressure, if instructed by DCS. On
// memory constrained devices:
// 1. if idle sockets are closed when memory pressure happens, cast_shell will
// close and re-open lots of connections to server.
// 2. if idle sockets are kept alive when memory pressure happens, this may
// cause JS engine gc frequently, leading to JS suspending.
network_context_params->disable_idle_sockets_close_on_memory_pressure =
IsFeatureEnabled(kDisableIdleSocketsCloseOnMemoryPressure);
return network_context_params; return network_context_params;
} }
......
...@@ -1865,6 +1865,8 @@ URLRequestContextOwner NetworkContext::ApplyContextParamsToBuilder( ...@@ -1865,6 +1865,8 @@ URLRequestContextOwner NetworkContext::ApplyContextParamsToBuilder(
session_params.http_09_on_non_default_ports_enabled = session_params.http_09_on_non_default_ports_enabled =
params_->http_09_on_non_default_ports_enabled; params_->http_09_on_non_default_ports_enabled;
session_params.disable_idle_sockets_close_on_memory_pressure =
params_->disable_idle_sockets_close_on_memory_pressure;
builder->set_http_network_session_params(session_params); builder->set_http_network_session_params(session_params);
......
...@@ -207,6 +207,9 @@ struct NetworkContextParams { ...@@ -207,6 +207,9 @@ struct NetworkContextParams {
// Enables HTTP/0.9 on ports other than 80 for HTTP and 443 for HTTPS. // Enables HTTP/0.9 on ports other than 80 for HTTP and 443 for HTTPS.
bool http_09_on_non_default_ports_enabled = false; bool http_09_on_non_default_ports_enabled = false;
// If true, idle sockets won't be closed when memory pressure happens.
bool disable_idle_sockets_close_on_memory_pressure = false;
// SSL configuration. |initial_proxy_config| is the initial SSL configuration // SSL configuration. |initial_proxy_config| is the initial SSL configuration
// to use. If nullptr, uses the default configuration. Updated SSL // to use. If nullptr, uses the default configuration. Updated SSL
// configurations can be passed in via |ssl_config_client_request|. // configurations can be passed in via |ssl_config_client_request|.
......
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