Bug 1379872 - early initialize ProtocolProxyService; r?bagder
MozReview-Commit-ID: Kv7cVYhmLJn
--- a/netwerk/base/nsIOService.cpp
+++ b/netwerk/base/nsIOService.cpp
@@ -49,16 +49,17 @@
#include "mozilla/net/NeckoCommon.h"
#include "mozilla/Services.h"
#include "mozilla/Telemetry.h"
#include "mozilla/net/DNS.h"
#include "mozilla/ipc/URIUtils.h"
#include "mozilla/net/NeckoChild.h"
#include "mozilla/dom/ContentParent.h"
#include "mozilla/net/CaptivePortalService.h"
+#include "mozilla/Unused.h"
#include "ReferrerPolicy.h"
#include "nsContentSecurityManager.h"
#include "nsContentUtils.h"
#include "xpcpublic.h"
namespace mozilla {
namespace net {
@@ -253,16 +254,17 @@ nsIOService::Init()
"security.data_uri.unique_opaque_origin", false);
Preferences::AddBoolVarCache(&sBlockToplevelDataUriNavigations,
"security.data_uri.block_toplevel_data_uri_navigations", false);
Preferences::AddBoolVarCache(&mOfflineMirrorsConnectivity, OFFLINE_MIRRORS_CONNECTIVITY, true);
gIOService = this;
InitializeNetworkLinkService();
+ InitializeProtocolProxyService();
SetOffline(false);
return NS_OK;
}
nsIOService::~nsIOService()
@@ -331,16 +333,29 @@ nsIOService::InitializeNetworkLinkServic
}
// After initializing the networkLinkService, query the connectivity state
OnNetworkLinkEvent(NS_NETWORK_LINK_DATA_UNKNOWN);
return rv;
}
+nsresult
+nsIOService::InitializeProtocolProxyService()
+{
+ nsresult rv = NS_OK;
+
+ if (XRE_IsParentProcess()) {
+ // for early-initialization
+ Unused << do_GetService(NS_PROTOCOLPROXYSERVICE_CONTRACTID, &rv);
+ }
+
+ return rv;
+}
+
nsIOService*
nsIOService::GetInstance() {
if (!gIOService) {
gIOService = new nsIOService();
if (!gIOService)
return nullptr;
NS_ADDREF(gIOService);
--- a/netwerk/base/nsIOService.h
+++ b/netwerk/base/nsIOService.h
@@ -131,16 +131,17 @@ private:
// Prefs wrangling
void PrefsChanged(nsIPrefBranch *prefs, const char *pref = nullptr);
void GetPrefBranch(nsIPrefBranch **);
void ParsePortList(nsIPrefBranch *prefBranch, const char *pref, bool remove);
nsresult InitializeSocketTransportService();
nsresult InitializeNetworkLinkService();
+ nsresult InitializeProtocolProxyService();
// consolidated helper function
void LookupProxyInfo(nsIURI *aURI, nsIURI *aProxyURI, uint32_t aProxyFlags,
nsCString *aScheme, nsIProxyInfo **outPI);
nsresult NewChannelFromURIWithProxyFlagsInternal(nsIURI* aURI,
nsIURI* aProxyURI,
uint32_t aProxyFlags,