mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
chrome: Set prefs for accept_language_list on Profile init (fixes #3579)
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include "libcef/browser/chrome/chrome_browser_context.h"
|
#include "libcef/browser/chrome/chrome_browser_context.h"
|
||||||
|
|
||||||
|
#include "libcef/browser/prefs/browser_prefs.h"
|
||||||
#include "libcef/browser/thread_util.h"
|
#include "libcef/browser/thread_util.h"
|
||||||
|
|
||||||
#include "base/threading/thread_restrictions.h"
|
#include "base/threading/thread_restrictions.h"
|
||||||
@@ -167,6 +168,8 @@ void ChromeBrowserContext::ProfileCreated(Profile::CreateStatus status,
|
|||||||
: SessionStartupPref::kPrefValueNewTab);
|
: SessionStartupPref::kPrefValueNewTab);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
browser_prefs::SetInitialProfilePrefs(profile_);
|
||||||
|
|
||||||
if (!init_callbacks_.empty()) {
|
if (!init_callbacks_.empty()) {
|
||||||
for (auto& callback : init_callbacks_) {
|
for (auto& callback : init_callbacks_) {
|
||||||
std::move(callback).Run();
|
std::move(callback).Run();
|
||||||
|
@@ -411,17 +411,6 @@ bool ChromeContentBrowserClientCef::ConfigureNetworkContextParams(
|
|||||||
cef_context ? cef_context->GetCookieableSchemes()
|
cef_context ? cef_context->GetCookieableSchemes()
|
||||||
: CefBrowserContext::GetGlobalCookieableSchemes();
|
: CefBrowserContext::GetGlobalCookieableSchemes();
|
||||||
|
|
||||||
// Prefer the CEF settings configuration, if specified, instead of the
|
|
||||||
// kAcceptLanguages preference which is controlled by the
|
|
||||||
// chrome://settings/languages configuration.
|
|
||||||
const std::string& accept_language_list =
|
|
||||||
browser_prefs::GetAcceptLanguageList(cef_context, /*browser=*/nullptr,
|
|
||||||
/*expand=*/true);
|
|
||||||
if (!accept_language_list.empty() &&
|
|
||||||
accept_language_list != network_context_params->accept_language) {
|
|
||||||
network_context_params->accept_language = accept_language_list;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -275,7 +275,7 @@ class InterceptedRequestHandlerWrapper : public InterceptedRequestHandler {
|
|||||||
|
|
||||||
// Default values for standard headers.
|
// Default values for standard headers.
|
||||||
accept_language_ = browser_prefs::GetAcceptLanguageList(
|
accept_language_ = browser_prefs::GetAcceptLanguageList(
|
||||||
cef_browser_context, browser.get(), /*expand=*/true);
|
cef_browser_context, browser.get());
|
||||||
DCHECK(!accept_language_.empty());
|
DCHECK(!accept_language_.empty());
|
||||||
user_agent_ =
|
user_agent_ =
|
||||||
CefAppManager::Get()->GetContentClient()->browser()->GetUserAgent();
|
CefAppManager::Get()->GetContentClient()->browser()->GetUserAgent();
|
||||||
|
@@ -366,8 +366,7 @@ std::unique_ptr<PrefService> CreatePrefService(Profile* profile,
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string GetAcceptLanguageList(CefBrowserContext* browser_context,
|
std::string GetAcceptLanguageList(CefBrowserContext* browser_context,
|
||||||
CefBrowserHostBase* browser,
|
CefBrowserHostBase* browser) {
|
||||||
bool expand) {
|
|
||||||
// Always prefer to the CEF settings configuration, if specified.
|
// Always prefer to the CEF settings configuration, if specified.
|
||||||
std::string accept_language_list =
|
std::string accept_language_list =
|
||||||
GetAcceptLanguageListSetting(browser_context, browser);
|
GetAcceptLanguageListSetting(browser_context, browser);
|
||||||
@@ -381,10 +380,29 @@ std::string GetAcceptLanguageList(CefBrowserContext* browser_context,
|
|||||||
accept_language_list = prefs->GetString(language::prefs::kAcceptLanguages);
|
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 ComputeAcceptLanguageFromPref(accept_language_list);
|
||||||
}
|
}
|
||||||
return std::string();
|
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
|
} // namespace browser_prefs
|
||||||
|
@@ -37,8 +37,10 @@ std::unique_ptr<PrefService> CreatePrefService(Profile* profile,
|
|||||||
// |browser_context| and/or |browser| may be nullptr. If |expand| is true then
|
// |browser_context| and/or |browser| may be nullptr. If |expand| is true then
|
||||||
// base languages and Q values may be added.
|
// base languages and Q values may be added.
|
||||||
std::string GetAcceptLanguageList(CefBrowserContext* browser_context,
|
std::string GetAcceptLanguageList(CefBrowserContext* browser_context,
|
||||||
CefBrowserHostBase* browser,
|
CefBrowserHostBase* browser);
|
||||||
bool expand);
|
|
||||||
|
// Set preferences for a newly initialized Profile.
|
||||||
|
void SetInitialProfilePrefs(Profile* profile);
|
||||||
|
|
||||||
} // namespace browser_prefs
|
} // namespace browser_prefs
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user