|
|
|
@ -203,6 +203,7 @@ nsHttpHandler::nsHttpHandler()
|
|
|
|
|
, mCompatFirefoxEnabled(false) |
|
|
|
|
, mCompatFirefoxVersion("52.9") |
|
|
|
|
, mUserAgentIsDirty(true) |
|
|
|
|
, mAcceptLanguagesIsDirty(true) |
|
|
|
|
, mPromptTempRedirect(true) |
|
|
|
|
, mEnablePersistentHttpsCaching(false) |
|
|
|
|
, mDoNotTrackEnabled(false) |
|
|
|
@ -419,6 +420,7 @@ nsHttpHandler::Init()
|
|
|
|
|
obsService->AddObserver(this, "browser:purge-session-history", true); |
|
|
|
|
obsService->AddObserver(this, NS_NETWORK_LINK_TOPIC, true); |
|
|
|
|
obsService->AddObserver(this, "application-background", true); |
|
|
|
|
obsService->AddObserver(this, "string-bundles-have-flushed", true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
MakeNewRequestTokenBucket(); |
|
|
|
@ -489,8 +491,13 @@ nsHttpHandler::AddStandardRequestHeaders(nsHttpRequestHead *request, bool isSecu
|
|
|
|
|
|
|
|
|
|
// Add the "Accept-Language" header. This header is also exposed to the
|
|
|
|
|
// service worker.
|
|
|
|
|
if (mAcceptLanguagesIsDirty) { |
|
|
|
|
rv = SetAcceptLanguages(); |
|
|
|
|
MOZ_ASSERT(NS_SUCCEEDED(rv)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Add the "Accept-Language" header
|
|
|
|
|
if (!mAcceptLanguages.IsEmpty()) { |
|
|
|
|
// Add the "Accept-Language" header
|
|
|
|
|
rv = request->SetHeader(nsHttp::Accept_Language, mAcceptLanguages, |
|
|
|
|
false, |
|
|
|
|
nsHttpHeaderArray::eVarietyRequestOverride); |
|
|
|
@ -1511,16 +1518,10 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
if (PREF_CHANGED(INTL_ACCEPT_LANGUAGES)) { |
|
|
|
|
nsCOMPtr<nsIPrefLocalizedString> pls; |
|
|
|
|
prefs->GetComplexValue(INTL_ACCEPT_LANGUAGES, |
|
|
|
|
NS_GET_IID(nsIPrefLocalizedString), |
|
|
|
|
getter_AddRefs(pls)); |
|
|
|
|
if (pls) { |
|
|
|
|
nsXPIDLString uval; |
|
|
|
|
pls->ToString(getter_Copies(uval)); |
|
|
|
|
if (uval) |
|
|
|
|
SetAcceptLanguages(NS_ConvertUTF16toUTF8(uval).get()); |
|
|
|
|
} |
|
|
|
|
// We don't want to set the new accept languages here since
|
|
|
|
|
// this pref is a complex type and it may be racy with flushing
|
|
|
|
|
// string resources.
|
|
|
|
|
mAcceptLanguagesIsDirty = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//
|
|
|
|
@ -1897,12 +1898,18 @@ PrepareAcceptLanguages(const char *i_AcceptLanguages, nsACString &o_AcceptLangua
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
nsresult |
|
|
|
|
nsHttpHandler::SetAcceptLanguages(const char *aAcceptLanguages) |
|
|
|
|
nsHttpHandler::SetAcceptLanguages() |
|
|
|
|
{ |
|
|
|
|
mAcceptLanguagesIsDirty = false; |
|
|
|
|
|
|
|
|
|
const nsAdoptingCString& acceptLanguages = |
|
|
|
|
Preferences::GetLocalizedCString(INTL_ACCEPT_LANGUAGES); |
|
|
|
|
|
|
|
|
|
nsAutoCString buf; |
|
|
|
|
nsresult rv = PrepareAcceptLanguages(aAcceptLanguages, buf); |
|
|
|
|
if (NS_SUCCEEDED(rv)) |
|
|
|
|
nsresult rv = PrepareAcceptLanguages(acceptLanguages.get(), buf); |
|
|
|
|
if (NS_SUCCEEDED(rv)) { |
|
|
|
|
mAcceptLanguages.Assign(buf); |
|
|
|
|
} |
|
|
|
|
return rv; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2233,6 +2240,8 @@ nsHttpHandler::Observe(nsISupports *subject,
|
|
|
|
|
if (mConnMgr) { |
|
|
|
|
mConnMgr->DoShiftReloadConnectionCleanup(nullptr); |
|
|
|
|
} |
|
|
|
|
} else if (!strcmp(topic, "string-bundles-have-flushed")) { |
|
|
|
|
mAcceptLanguagesIsDirty = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return NS_OK; |
|
|
|
|