Bug 1602832 - P1: Run xpcshell tests without e10s with socket process r=dragana

Differential Revision: https://phabricator.services.mozilla.com/D58110
This commit is contained in:
Kershaw Chang 2020-05-19 12:56:47 +00:00
parent 489d2dd3de
commit e5f3047c48
5 changed files with 22 additions and 31 deletions

View File

@ -7705,7 +7705,7 @@
# ("network.http.network_access_on_socket_process.enabled").
# Changing these prefs requires a restart.
- name: network.process.enabled
type: bool
type: RelaxedAtomicBool
mirror: always
#ifdef ANDROID
value: false
@ -7723,6 +7723,14 @@
value: true
mirror: always
# Perform all network access on the socket process.
# The pref requires "network.process.enabled" to be true.
# Changing these prefs requires a restart.
- name: network.http.network_access_on_socket_process.enabled
type: RelaxedAtomicBool
mirror: always
value: false
# Telemetry of traffic categories. Whether or not to enable HttpTrafficAnalyzer.
- name: network.traffic_analyzer.enabled
type: RelaxedAtomicBool

View File

@ -1584,11 +1584,6 @@ pref("network.sts.max_time_for_pr_close_during_shutdown", 5000);
// The value is expected in seconds.
pref("network.sts.pollable_event_timeout", 6);
// Perform all network access on the socket process.
// The pref requires "network.sts.socket_process.enable" to be true.
// Changing these prefs requires a restart.
pref("network.http.network_access_on_socket_process.enabled", false);
// Enable/disable sni encryption.
pref("network.security.esni.enabled", false);

View File

@ -283,7 +283,6 @@ nsresult nsIOService::Init() {
observerService->AddObserver(this, NS_NETWORK_LINK_TOPIC, true);
observerService->AddObserver(this, NS_NETWORK_ID_CHANGED_TOPIC, true);
observerService->AddObserver(this, NS_WIDGET_WAKE_OBSERVER_TOPIC, true);
observerService->AddObserver(this, NS_PREFSERVICE_READ_TOPIC_ID, true);
} else
NS_WARNING("failed to get observer service");
@ -457,11 +456,6 @@ nsresult nsIOService::LaunchSocketProcess() {
return NS_OK;
}
if (!XRE_IsE10sParentProcess()) {
LOG(("nsIOService skipping LaunchSocketProcess because e10s is disabled"));
return NS_OK;
}
if (!Preferences::GetBool("network.process.enabled", true)) {
LOG(("nsIOService skipping LaunchSocketProcess because of the pref"));
return NS_OK;
@ -507,15 +501,16 @@ static bool sUseSocketProcess = false;
static bool sUseSocketProcessChecked = false;
// static
bool nsIOService::UseSocketProcess() {
if (sUseSocketProcessChecked) {
bool nsIOService::UseSocketProcess(bool aCheckAgain) {
if (sUseSocketProcessChecked && !aCheckAgain) {
return sUseSocketProcess;
}
sUseSocketProcessChecked = true;
if (Preferences::GetBool("network.process.enabled")) {
sUseSocketProcess = Preferences::GetBool(
"network.http.network_access_on_socket_process.enabled", true);
sUseSocketProcess = false;
if (StaticPrefs::network_process_enabled()) {
sUseSocketProcess =
StaticPrefs::network_http_network_access_on_socket_process_enabled();
}
return sUseSocketProcess;
}
@ -1524,10 +1519,7 @@ nsIOService::Observe(nsISupports* subject, const char* topic,
SetOffline(false);
}
} else if (!strcmp(topic, kProfileDoChange)) {
if (!data) {
return NS_OK;
}
if (NS_LITERAL_STRING("startup").Equals(data)) {
if (data && NS_LITERAL_STRING("startup").Equals(data)) {
// Lazy initialization of network link service (see bug 620472)
InitializeNetworkLinkService();
// Set up the initilization flag regardless the actuall result.
@ -1542,9 +1534,6 @@ nsIOService::Observe(nsISupports* subject, const char* topic,
// before something calls into the cookie service.
nsCOMPtr<nsISupports> cookieServ =
do_GetService(NS_COOKIESERVICE_CONTRACTID);
} else if (NS_LITERAL_STRING("xpcshell-do-get-profile").Equals(data)) {
// xpcshell doesn't read user profile.
LaunchSocketProcess();
}
} else if (!strcmp(topic, NS_XPCOM_SHUTDOWN_OBSERVER_ID)) {
// Remember we passed XPCOM shutdown notification to prevent any
@ -1583,10 +1572,6 @@ nsIOService::Observe(nsISupports* subject, const char* topic,
// https://bugzilla.mozilla.org/show_bug.cgi?id=1152048#c19
nsCOMPtr<nsIRunnable> wakeupNotifier = new nsWakeupNotifier(this);
NS_DispatchToMainThread(wakeupNotifier);
} else if (!strcmp(topic, NS_PREFSERVICE_READ_TOPIC_ID)) {
// Launch socket process after we load user's pref. This is to make sure
// that socket process can get the latest prefs.
LaunchSocketProcess();
}
return NS_OK;

View File

@ -124,7 +124,7 @@ class nsIOService final : public nsIIOService,
bool SocketProcessReady();
static void NotifySocketProcessPrefsChanged(const char* aName, void* aSelf);
void NotifySocketProcessPrefsChanged(const char* aName);
static bool UseSocketProcess();
static bool UseSocketProcess(bool aCheckAgain = false);
bool IsSocketProcessLaunchComplete();
@ -141,6 +141,8 @@ class nsIOService final : public nsIIOService,
static void OnTLSPrefChange(const char* aPref, void* aSelf);
nsresult LaunchSocketProcess();
private:
// These shouldn't be called directly:
// - construct using GetInstance
@ -191,7 +193,6 @@ class nsIOService final : public nsIIOService,
nsIInterfaceRequestor* aCallbacks,
bool aAnonymous);
nsresult LaunchSocketProcess();
void DestroySocketProcess();
private:

View File

@ -445,6 +445,8 @@ nsresult nsHttpHandler::Init() {
mIOService = new nsMainThreadPtrHolder<nsIIOService>(
"nsHttpHandler::mIOService", service);
gIOService->LaunchSocketProcess();
if (IsNeckoChild()) NeckoChild::InitNeckoChild();
InitUserAgentComponents();
@ -594,7 +596,7 @@ nsresult nsHttpHandler::InitConnectionMgr() {
return NS_OK;
}
if (nsIOService::UseSocketProcess() && XRE_IsParentProcess()) {
if (nsIOService::UseSocketProcess(true) && XRE_IsParentProcess()) {
mConnMgr = new HttpConnectionMgrParent();
RefPtr<nsHttpHandler> self = this;
auto task = [self]() {