Commit 28e27c12 authored by Colin Blundell's avatar Colin Blundell Committed by Commit Bot

[WebLayer] Add initial infrastructure to support translate

This CL adds the first pieces of infrastructure that will be necessary
to integrate //components/translate in WebLayer:
- Registration of the relevant prefs
- A KeyedServiceFactory for the first of several services that will be
  needed to glue the component to //weblayer

The factory is adapted in a straightforward way from the corresponding
one in //chrome.

Bug: 1025620
Change-Id: I4832388b45cfcf6b70ea06245a82aee1c4bb3326
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2152815
Commit-Queue: Colin Blundell <blundell@chromium.org>
Reviewed-by: default avatarClark DuVall <cduvall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#760429}
parent c25cc082
......@@ -181,6 +181,8 @@ source_set("weblayer_lib_base") {
"browser/tab_impl.h",
"browser/tab_specific_content_settings_delegate.cc",
"browser/tab_specific_content_settings_delegate.h",
"browser/translate_accept_languages_factory.cc",
"browser/translate_accept_languages_factory.h",
"browser/url_bar/autocomplete_scheme_classifier_impl.cc",
"browser/url_bar/autocomplete_scheme_classifier_impl.h",
"browser/url_bar/url_bar_controller_impl.cc",
......@@ -271,6 +273,7 @@ source_set("weblayer_lib_base") {
"//components/embedder_support/origin_trials",
"//components/find_in_page",
"//components/keyed_service/content",
"//components/language/core/browser",
"//components/metrics",
"//components/network_time",
"//components/omnibox/browser",
......@@ -289,6 +292,7 @@ source_set("weblayer_lib_base") {
"//components/ssl_errors",
"//components/startup_metric_utils/browser",
"//components/strings",
"//components/translate/core/browser",
"//components/user_prefs",
"//components/variations",
"//components/variations/net",
......
......@@ -19,6 +19,8 @@ include_rules = [
"+components/find_in_page",
"+components/javascript_dialogs",
"+components/keyed_service/content",
"+components/language/core/browser",
"+components/translate/core/browser",
"+components/metrics",
"+components/navigation_interception",
"+components/network_time",
......
......@@ -10,6 +10,7 @@
#include "components/download/public/common/in_progress_download_manager.h"
#include "components/embedder_support/pref_names.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
#include "components/language/core/browser/language_prefs.h"
#include "components/permissions/permission_manager.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/prefs/in_memory_pref_store.h"
......@@ -19,6 +20,8 @@
#include "components/safe_browsing/core/common/safe_browsing_prefs.h"
#include "components/security_interstitials/content/stateful_ssl_host_state_delegate.h"
#include "components/security_state/core/security_state.h"
#include "components/translate/core/browser/translate_pref_names.h"
#include "components/translate/core/browser/translate_prefs.h"
#include "components/user_prefs/user_prefs.h"
#include "components/variations/variations_client.h"
#include "components/variations/variations_http_header_provider.h"
......@@ -235,6 +238,11 @@ void BrowserContextImpl::RegisterPrefs(
HostContentSettingsMap::RegisterProfilePrefs(pref_registry);
safe_browsing::RegisterProfilePrefs(pref_registry);
security_state::RegisterProfilePrefs(pref_registry);
language::LanguagePrefs::RegisterProfilePrefs(pref_registry);
translate::TranslatePrefs::RegisterProfilePrefs(pref_registry);
pref_registry->RegisterBooleanPref(
prefs::kOfferTranslateEnabled, true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
#if defined(OS_ANDROID)
cdm::MediaDrmStorageImpl::RegisterProfilePrefs(pref_registry);
permissions::GeolocationPermissionContextAndroid::RegisterProfilePrefs(
......
......@@ -27,6 +27,7 @@
#include "weblayer/browser/host_content_settings_map_factory.h"
#include "weblayer/browser/permissions/weblayer_permissions_client.h"
#include "weblayer/browser/stateful_ssl_host_state_delegate_factory.h"
#include "weblayer/browser/translate_accept_languages_factory.h"
#include "weblayer/browser/webui/web_ui_controller_factory.h"
#include "weblayer/public/main.h"
......@@ -70,6 +71,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt() {
HostContentSettingsMapFactory::GetInstance();
StatefulSSLHostStateDelegateFactory::GetInstance();
CookieSettingsFactory::GetInstance();
TranslateAcceptLanguagesFactory::GetInstance();
}
void StopMessageLoop(base::OnceClosure quit_closure) {
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "weblayer/browser/translate_accept_languages_factory.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
#include "components/language/core/browser/pref_names.h"
#include "components/prefs/pref_service.h"
#include "components/translate/core/browser/translate_accept_languages.h"
#include "components/user_prefs/user_prefs.h"
#include "content/public/browser/browser_context.h"
namespace weblayer {
// static
translate::TranslateAcceptLanguages*
TranslateAcceptLanguagesFactory::GetForBrowserContext(
content::BrowserContext* context) {
return static_cast<translate::TranslateAcceptLanguages*>(
GetInstance()->GetServiceForBrowserContext(context, true));
}
// static
TranslateAcceptLanguagesFactory*
TranslateAcceptLanguagesFactory::GetInstance() {
static base::NoDestructor<TranslateAcceptLanguagesFactory> factory;
return factory.get();
}
TranslateAcceptLanguagesFactory::TranslateAcceptLanguagesFactory()
: BrowserContextKeyedServiceFactory(
"TranslateAcceptLanguages",
BrowserContextDependencyManager::GetInstance()) {}
TranslateAcceptLanguagesFactory::~TranslateAcceptLanguagesFactory() = default;
KeyedService* TranslateAcceptLanguagesFactory::BuildServiceInstanceFor(
content::BrowserContext* browser_context) const {
return new translate::TranslateAcceptLanguages(
user_prefs::UserPrefs::Get(browser_context),
language::prefs::kAcceptLanguages);
}
content::BrowserContext*
TranslateAcceptLanguagesFactory::GetBrowserContextToUse(
content::BrowserContext* context) const {
return context;
}
} // namespace weblayer
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef WEBLAYER_BROWSER_TRANSLATE_ACCEPT_LANGUAGES_FACTORY_H_
#define WEBLAYER_BROWSER_TRANSLATE_ACCEPT_LANGUAGES_FACTORY_H_
#include "base/no_destructor.h"
#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
namespace translate {
class TranslateAcceptLanguages;
}
namespace weblayer {
// TranslateAcceptLanguagesFactory is a way to associate a
// TranslateAcceptLanguages instance to a BrowserContext.
class TranslateAcceptLanguagesFactory
: public BrowserContextKeyedServiceFactory {
public:
TranslateAcceptLanguagesFactory(const TranslateAcceptLanguagesFactory&) =
delete;
TranslateAcceptLanguagesFactory& operator=(
const TranslateAcceptLanguagesFactory&) = delete;
static translate::TranslateAcceptLanguages* GetForBrowserContext(
content::BrowserContext* browser_context);
static TranslateAcceptLanguagesFactory* GetInstance();
private:
friend class base::NoDestructor<TranslateAcceptLanguagesFactory>;
TranslateAcceptLanguagesFactory();
~TranslateAcceptLanguagesFactory() override;
// BrowserContextKeyedServiceFactory:
KeyedService* BuildServiceInstanceFor(
content::BrowserContext* profile) const override;
content::BrowserContext* GetBrowserContextToUse(
content::BrowserContext* context) const override;
};
} // namespace weblayer
#endif // WEBLAYER_BROWSER_TRANSLATE_ACCEPT_LANGUAGES_FACTORY_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment