chrome: Set prefs for accept_language_list on Profile init (fixes #3579)

This commit is contained in:
Marshall Greenblatt
2023-10-05 16:35:02 -04:00
parent 29938f9cb0
commit a8a96235a8
5 changed files with 29 additions and 17 deletions

View File

@@ -366,8 +366,7 @@ std::unique_ptr<PrefService> CreatePrefService(Profile* profile,
}
std::string GetAcceptLanguageList(CefBrowserContext* browser_context,
CefBrowserHostBase* browser,
bool expand) {
CefBrowserHostBase* browser) {
// Always prefer to the CEF settings configuration, if specified.
std::string accept_language_list =
GetAcceptLanguageListSetting(browser_context, browser);
@@ -381,10 +380,29 @@ std::string GetAcceptLanguageList(CefBrowserContext* browser_context,
accept_language_list = prefs->GetString(language::prefs::kAcceptLanguages);
}
if (!accept_language_list.empty() && expand) {
if (!accept_language_list.empty()) {
return ComputeAcceptLanguageFromPref(accept_language_list);
}
return std::string();
}
void SetInitialProfilePrefs(Profile* profile) {
auto* prefs = profile->GetPrefs();
// Language preferences.
const std::string& accept_language_list = GetAcceptLanguageListSetting(
CefBrowserContext::FromProfile(profile), /*browser=*/nullptr);
if (!accept_language_list.empty()) {
// Used by ProfileNetworkContextService and InterceptedRequestHandlerWrapper
// (via GetAcceptLanguageList) for request headers, and
// renderer_preferences_util::UpdateFromSystemSettings() for
// `navigator.language`.
prefs->SetString(language::prefs::kAcceptLanguages, accept_language_list);
// Necessary to avoid a reset of the kAcceptLanguages value in
// LanguagePrefs::UpdateAcceptLanguagesPref().
prefs->SetString(language::prefs::kSelectedLanguages, accept_language_list);
}
}
} // namespace browser_prefs