mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-06 07:48:38 +09:00
Refresh nsStringBundleService and nsHttpHandler when the browser locale is changed
This commit is contained in:
parent
a7ef78cf06
commit
16820f40ac
4 changed files with 54 additions and 15 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue