summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/core_chromium.pri3
-rw-r--r--src/core/pref_service_adapter.cpp198
-rw-r--r--src/core/pref_service_adapter.h85
-rw-r--r--src/core/profile_adapter.cpp11
-rw-r--r--src/core/profile_qt.cpp89
-rw-r--r--src/core/profile_qt.h17
6 files changed, 330 insertions, 73 deletions
diff --git a/src/core/core_chromium.pri b/src/core/core_chromium.pri
index d8ef25d8c..69a7f48d8 100644
--- a/src/core/core_chromium.pri
+++ b/src/core/core_chromium.pri
@@ -109,6 +109,7 @@ SOURCES = \
profile_io_data_qt.cpp \
quota_permission_context_qt.cpp \
quota_request_controller_impl.cpp \
+ pref_service_adapter.cpp \
register_protocol_handler_request_controller_impl.cpp \
render_view_context_menu_qt.cpp \
render_widget_host_view_qt.cpp \
@@ -205,6 +206,7 @@ HEADERS = \
ozone/surface_factory_qt.h \
permission_manager_qt.h \
platform_notification_service_qt.h \
+ pref_service_adapter.h \
process_main.h \
profile_adapter.h \
profile_adapter_client.h \
@@ -247,7 +249,6 @@ HEADERS = \
web_engine_settings.h \
web_event_factory.h
-
qtConfig(webengine-system-x11): hasX11Dependencies() {
HEADERS += ozone/gl_ozone_glx_qt.h \
ozone/gl_surface_glx_qt.h
diff --git a/src/core/pref_service_adapter.cpp b/src/core/pref_service_adapter.cpp
new file mode 100644
index 000000000..40062cce5
--- /dev/null
+++ b/src/core/pref_service_adapter.cpp
@@ -0,0 +1,198 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtWebEngine module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "pref_service_adapter.h"
+
+#include "command_line_pref_store_qt.h"
+#include "profile_adapter.h"
+#include "type_conversion.h"
+#include "web_engine_context.h"
+
+#include "content/public/browser/browser_thread.h"
+#include "components/prefs/pref_member.h"
+#include "components/prefs/in_memory_pref_store.h"
+#include "components/prefs/json_pref_store.h"
+#include "components/prefs/pref_service.h"
+#include "components/prefs/pref_service_factory.h"
+#include "components/prefs/pref_registry_simple.h"
+#include "components/user_prefs/user_prefs.h"
+#include "components/proxy_config/pref_proxy_config_tracker_impl.h"
+#include "chrome/common/pref_names.h"
+#include "extensions/buildflags/buildflags.h"
+#include "content/public/browser/browser_context.h"
+
+#if QT_CONFIG(webengine_spellchecker)
+#include "chrome/browser/spellchecker/spellcheck_service.h"
+#include "components/spellcheck/browser/pref_names.h"
+#endif
+
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+#include "components/guest_view/browser/guest_view_manager.h"
+#include "extensions/browser/extension_protocols.h"
+#include "extensions/browser/pref_names.h"
+#include "extensions/browser/process_manager.h"
+#include "extensions/common/constants.h"
+#endif
+
+namespace {
+static const char kPrefMediaDeviceIDSalt[] = "qtwebengine.media_device_salt_id";
+}
+
+namespace QtWebEngineCore {
+
+void PrefServiceAdapter::setup(const ProfileAdapter &profileAdapter)
+{
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ PrefServiceFactory factory;
+ factory.set_command_line_prefs(base::MakeRefCounted<CommandLinePrefStoreQt>(
+ WebEngineContext::commandLine()));
+
+ QString userPrefStorePath = profileAdapter.dataPath();
+ if (userPrefStorePath.isEmpty() || profileAdapter.isOffTheRecord()) {
+ factory.set_user_prefs(new InMemoryPrefStore);
+ } else {
+ userPrefStorePath += QDir::separator();
+ userPrefStorePath += QStringLiteral("user_prefs.json");
+ factory.set_user_prefs(base::MakeRefCounted<JsonPrefStore>(toFilePath(userPrefStorePath)));
+ }
+
+ PrefRegistrySimple *registry = new PrefRegistrySimple();
+ PrefProxyConfigTrackerImpl::RegisterPrefs(registry);
+
+#if QT_CONFIG(webengine_spellchecker)
+ // Initial spellcheck settings
+ registry->RegisterStringPref(prefs::kAcceptLanguages, std::string());
+ registry->RegisterListPref(spellcheck::prefs::kSpellCheckDictionaries, std::make_unique<base::ListValue>());
+ registry->RegisterListPref(spellcheck::prefs::kSpellCheckForcedDictionaries, std::make_unique<base::ListValue>());
+ registry->RegisterStringPref(spellcheck::prefs::kSpellCheckDictionary, std::string());
+ registry->RegisterBooleanPref(spellcheck::prefs::kSpellCheckEnable, false);
+ registry->RegisterBooleanPref(spellcheck::prefs::kSpellCheckUseSpellingService, false);
+#endif // QT_CONFIG(webengine_spellchecker)
+ registry->RegisterBooleanPref(prefs::kShowInternalAccessibilityTree, false);
+ registry->RegisterIntegerPref(prefs::kNotificationNextPersistentId, 10000);
+
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+ registry->RegisterDictionaryPref(extensions::pref_names::kExtensions);
+ registry->RegisterListPref(extensions::pref_names::kInstallAllowList);
+ registry->RegisterListPref(extensions::pref_names::kInstallDenyList);
+ registry->RegisterDictionaryPref(extensions::pref_names::kInstallForceList);
+ registry->RegisterDictionaryPref(extensions::pref_names::kInstallLoginScreenAppList);
+ registry->RegisterListPref(extensions::pref_names::kAllowedTypes);
+ registry->RegisterBooleanPref(extensions::pref_names::kStorageGarbageCollect, false);
+ registry->RegisterListPref(extensions::pref_names::kAllowedInstallSites);
+ registry->RegisterStringPref(extensions::pref_names::kLastChromeVersion, std::string());
+ registry->RegisterListPref(extensions::pref_names::kNativeMessagingBlacklist);
+ registry->RegisterListPref(extensions::pref_names::kNativeMessagingWhitelist);
+ registry->RegisterBooleanPref(extensions::pref_names::kNativeMessagingUserLevelHosts, true);
+#endif // BUILDFLAG(ENABLE_EXTENSIONS)
+
+ // Media device salt id key
+ // Can't be a random value since every time we run the setup code the
+ // default value will be different. We'll need to initialize it later.
+ registry->RegisterStringPref(kPrefMediaDeviceIDSalt, std::string());
+
+ m_prefService = factory.Create(registry);
+
+ // Initialize salt value if none was stored before
+ if (m_prefService->GetString(kPrefMediaDeviceIDSalt).empty()) {
+ m_prefService->SetString(kPrefMediaDeviceIDSalt,
+ content::BrowserContext::CreateRandomMediaDeviceIDSalt());
+ }
+
+}
+
+void PrefServiceAdapter::commit()
+{
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ // Make sure modified preferences are written to disk
+ m_prefService->CommitPendingWrite();
+}
+
+PrefService* PrefServiceAdapter::prefService()
+{
+ return m_prefService.get();
+}
+
+const PrefService* PrefServiceAdapter::prefService() const
+{
+ return m_prefService.get();
+}
+
+std::string PrefServiceAdapter::mediaDeviceIdSalt() const
+{
+ return m_prefService->GetString(kPrefMediaDeviceIDSalt);
+}
+
+#if QT_CONFIG(webengine_spellchecker)
+
+void PrefServiceAdapter::setSpellCheckLanguages(const QStringList &languages)
+{
+ StringListPrefMember dictionaries_pref;
+ dictionaries_pref.Init(spellcheck::prefs::kSpellCheckDictionaries, m_prefService.get());
+ std::vector<std::string> dictionaries;
+ dictionaries.reserve(languages.size());
+ for (const auto &language : languages)
+ dictionaries.push_back(language.toStdString());
+ dictionaries_pref.SetValue(dictionaries);
+}
+
+QStringList PrefServiceAdapter::spellCheckLanguages() const
+{
+ QStringList spellcheck_dictionaries;
+ for (const auto &value : *m_prefService->GetList(spellcheck::prefs::kSpellCheckDictionaries)) {
+ std::string dictionary;
+ if (value.GetAsString(&dictionary))
+ spellcheck_dictionaries.append(QString::fromStdString(dictionary));
+ }
+
+ return spellcheck_dictionaries;
+}
+
+void PrefServiceAdapter::setSpellCheckEnabled(bool enabled)
+{
+ m_prefService->SetBoolean(spellcheck::prefs::kSpellCheckEnable, enabled);
+}
+
+bool PrefServiceAdapter::isSpellCheckEnabled() const
+{
+ return m_prefService->GetBoolean(spellcheck::prefs::kSpellCheckEnable);
+}
+
+#endif // QT_CONFIG(webengine_spellchecker)
+}
diff --git a/src/core/pref_service_adapter.h b/src/core/pref_service_adapter.h
new file mode 100644
index 000000000..83f6a322e
--- /dev/null
+++ b/src/core/pref_service_adapter.h
@@ -0,0 +1,85 @@
+
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtWebEngine module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef PREF_SRVICE_ADAPTER_H
+#define PREF_SERIVE_ADAPTER_H
+
+#include "components/prefs/pref_service.h"
+#include "qtwebenginecoreglobal_p.h"
+
+QT_BEGIN_NAMESPACE
+class QStringList;
+QT_END_NAMESPACE
+
+class ProfileAdapter;
+
+namespace QtWebEngineCore {
+
+class ProfileAdapter;
+
+// PrefServiceAdapter manages the collection of tunable preferences.
+// Any new preference should be defined and register in the registry
+// before it can be used
+class PrefServiceAdapter
+{
+public:
+
+ PrefServiceAdapter() = default;
+
+ void setup(const ProfileAdapter &adapter);
+ void commit();
+ PrefService *prefService();
+ const PrefService *prefService() const;
+ std::string mediaDeviceIdSalt() const;
+
+#if QT_CONFIG(webengine_spellchecker)
+ void setSpellCheckLanguages(const QStringList &languages);
+ QStringList spellCheckLanguages() const;
+ void setSpellCheckEnabled(bool enabled);
+ bool isSpellCheckEnabled() const;
+#endif // QT_CONFIG(webengine_spellchecker)
+
+private:
+ std::unique_ptr<PrefService> m_prefService;
+};
+
+}
+
+#endif // PREF_SERIVE_ADAPTER_H
diff --git a/src/core/profile_adapter.cpp b/src/core/profile_adapter.cpp
index ff0199833..8d32aad84 100644
--- a/src/core/profile_adapter.cpp
+++ b/src/core/profile_adapter.cpp
@@ -126,6 +126,7 @@ void ProfileAdapter::setStorageName(const QString &storageName)
return;
m_name = storageName;
if (!m_offTheRecord) {
+ m_profile->setupPrefService();
if (m_profile->m_urlRequestContextGetter.get())
m_profile->m_profileIOData->updateStorageSettings();
if (m_visitedLinksManager)
@@ -138,6 +139,7 @@ void ProfileAdapter::setOffTheRecord(bool offTheRecord)
if (offTheRecord == m_offTheRecord)
return;
m_offTheRecord = offTheRecord;
+ m_profile->setupPrefService();
if (m_profile->m_urlRequestContextGetter.get())
m_profile->m_profileIOData->updateStorageSettings();
if (m_visitedLinksManager)
@@ -263,6 +265,7 @@ void ProfileAdapter::setDataPath(const QString &path)
return;
m_dataPath = path;
if (!m_offTheRecord) {
+ m_profile->setupPrefService();
if (m_profile->m_urlRequestContextGetter.get())
m_profile->m_profileIOData->updateStorageSettings();
if (m_visitedLinksManager)
@@ -614,14 +617,14 @@ void ProfileAdapter::clearHttpCache()
void ProfileAdapter::setSpellCheckLanguages(const QStringList &languages)
{
#if QT_CONFIG(webengine_spellchecker)
- m_profile->setSpellCheckLanguages(languages);
+ m_profile->prefServiceAdapter().setSpellCheckLanguages(languages);
#endif
}
QStringList ProfileAdapter::spellCheckLanguages() const
{
#if QT_CONFIG(webengine_spellchecker)
- return m_profile->spellCheckLanguages();
+ return m_profile->prefServiceAdapter().spellCheckLanguages();
#else
return QStringList();
#endif
@@ -630,14 +633,14 @@ QStringList ProfileAdapter::spellCheckLanguages() const
void ProfileAdapter::setSpellCheckEnabled(bool enabled)
{
#if QT_CONFIG(webengine_spellchecker)
- m_profile->setSpellCheckEnabled(enabled);
+ m_profile->prefServiceAdapter().setSpellCheckEnabled(enabled);
#endif
}
bool ProfileAdapter::isSpellCheckEnabled() const
{
#if QT_CONFIG(webengine_spellchecker)
- return m_profile->isSpellCheckEnabled();
+ return m_profile->prefServiceAdapter().isSpellCheckEnabled();
#else
return false;
#endif
diff --git a/src/core/profile_qt.cpp b/src/core/profile_qt.cpp
index 5977a28a8..25b2169dd 100644
--- a/src/core/profile_qt.cpp
+++ b/src/core/profile_qt.cpp
@@ -61,6 +61,7 @@
#include "components/prefs/pref_member.h"
#include "components/prefs/pref_service.h"
#include "components/prefs/in_memory_pref_store.h"
+#include "components/prefs/json_pref_store.h"
#include "components/prefs/pref_service.h"
#include "components/prefs/pref_service_factory.h"
#include "components/prefs/pref_registry_simple.h"
@@ -92,41 +93,7 @@ ProfileQt::ProfileQt(ProfileAdapter *profileAdapter)
, m_extensionSystem(nullptr)
#endif // BUILDFLAG(ENABLE_EXTENSIONS)
{
- PrefServiceFactory factory;
- factory.set_user_prefs(new InMemoryPrefStore);
- factory.set_command_line_prefs(base::MakeRefCounted<CommandLinePrefStoreQt>(
- WebEngineContext::commandLine()));
- PrefRegistrySimple *registry = new PrefRegistrySimple();
- PrefProxyConfigTrackerImpl::RegisterPrefs(registry);
-#if QT_CONFIG(webengine_spellchecker)
- // Initial spellcheck settings
- registry->RegisterStringPref(prefs::kAcceptLanguages, std::string());
- registry->RegisterListPref(spellcheck::prefs::kSpellCheckDictionaries, std::make_unique<base::ListValue>());
- registry->RegisterListPref(spellcheck::prefs::kSpellCheckForcedDictionaries, std::make_unique<base::ListValue>());
- registry->RegisterStringPref(spellcheck::prefs::kSpellCheckDictionary, std::string());
- registry->RegisterBooleanPref(spellcheck::prefs::kSpellCheckEnable, false);
- registry->RegisterBooleanPref(spellcheck::prefs::kSpellCheckUseSpellingService, false);
-#endif // QT_CONFIG(webengine_spellchecker)
- registry->RegisterBooleanPref(prefs::kShowInternalAccessibilityTree, false);
- registry->RegisterIntegerPref(prefs::kNotificationNextPersistentId, 10000);
-
-#if BUILDFLAG(ENABLE_EXTENSIONS)
- registry->RegisterDictionaryPref(extensions::pref_names::kExtensions);
- registry->RegisterListPref(extensions::pref_names::kInstallAllowList);
- registry->RegisterListPref(extensions::pref_names::kInstallDenyList);
- registry->RegisterDictionaryPref(extensions::pref_names::kInstallForceList);
- registry->RegisterDictionaryPref(extensions::pref_names::kInstallLoginScreenAppList);
- registry->RegisterListPref(extensions::pref_names::kAllowedTypes);
- registry->RegisterBooleanPref(extensions::pref_names::kStorageGarbageCollect, false);
- registry->RegisterListPref(extensions::pref_names::kAllowedInstallSites);
- registry->RegisterStringPref(extensions::pref_names::kLastChromeVersion, std::string());
- registry->RegisterListPref(extensions::pref_names::kNativeMessagingBlacklist);
- registry->RegisterListPref(extensions::pref_names::kNativeMessagingWhitelist);
- registry->RegisterBooleanPref(extensions::pref_names::kNativeMessagingUserLevelHosts, true);
-#endif // BUILDFLAG(ENABLE_EXTENSIONS)
-
- m_prefService = factory.Create(registry);
- user_prefs::UserPrefs::Set(this, m_prefService.get());
+ setupPrefService();
// Mark the context as live. This prevents the use-after-free DCHECK in
// AssertBrowserContextWasntDestroyed from being triggered when a new
@@ -143,6 +110,7 @@ ProfileQt::ProfileQt(ProfileAdapter *profileAdapter)
ProfileQt::~ProfileQt()
{
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ m_prefServiceAdapter.commit();
content::BrowserContext::NotifyWillBeDestroyed(this);
BrowserContextDependencyManager::GetInstance()->DestroyBrowserContextServices(this);
ShutdownStoragePartitions();
@@ -153,12 +121,12 @@ ProfileQt::~ProfileQt()
PrefService* ProfileQt::GetPrefs()
{
- return m_prefService.get();
+ return m_prefServiceAdapter.prefService();
}
const PrefService* ProfileQt::GetPrefs() const
{
- return m_prefService.get();
+ return m_prefServiceAdapter.prefService();
}
base::FilePath ProfileQt::GetPath() const
@@ -313,46 +281,41 @@ void ProfileQt::FailedToLoadDictionary(const std::string &language)
LOG(WARNING) << "Could not load dictionary for:" << language;
LOG(INFO) << "Make sure that correct bdic file is in:" << WebEngineLibraryInfo::getPath(base::DIR_APP_DICTIONARIES);
}
+#endif // QT_CONFIG(webengine_spellchecker)
-void ProfileQt::setSpellCheckLanguages(const QStringList &languages)
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+extensions::ExtensionSystemQt* ProfileQt::GetExtensionSystem()
{
- StringListPrefMember dictionaries_pref;
- dictionaries_pref.Init(spellcheck::prefs::kSpellCheckDictionaries, m_prefService.get());
- std::vector<std::string> dictionaries;
- dictionaries.reserve(languages.size());
- for (const auto &language : languages)
- dictionaries.push_back(language.toStdString());
- dictionaries_pref.SetValue(dictionaries);
+ return m_extensionSystem;
}
+#endif // BUILDFLAG(ENABLE_EXTENSIONS)
-QStringList ProfileQt::spellCheckLanguages() const
+std::string ProfileQt::GetMediaDeviceIDSalt()
{
- QStringList spellcheck_dictionaries;
- for (const auto &value : *m_prefService->GetList(spellcheck::prefs::kSpellCheckDictionaries)) {
- std::string dictionary;
- if (value.GetAsString(&dictionary))
- spellcheck_dictionaries.append(QString::fromStdString(dictionary));
- }
-
- return spellcheck_dictionaries;
+ return m_prefServiceAdapter.mediaDeviceIdSalt();
}
-void ProfileQt::setSpellCheckEnabled(bool enabled)
+void ProfileQt::setupPrefService()
{
- m_prefService->SetBoolean(spellcheck::prefs::kSpellCheckEnable, enabled);
+ // Remove previous handler before we set a new one or we will assert
+ // TODO: Remove in Qt6
+ if (m_prefServiceAdapter.prefService() != nullptr) {
+ user_prefs::UserPrefs::Remove(this);
+ m_prefServiceAdapter.commit();
+ }
+ m_prefServiceAdapter.setup(*m_profileAdapter);
+ user_prefs::UserPrefs::Set(this, m_prefServiceAdapter.prefService());
}
-bool ProfileQt::isSpellCheckEnabled() const
+PrefServiceAdapter &ProfileQt::prefServiceAdapter()
{
- return m_prefService->GetBoolean(spellcheck::prefs::kSpellCheckEnable);
+ return m_prefServiceAdapter;
}
-#endif // QT_CONFIG(webengine_spellchecker)
-#if BUILDFLAG(ENABLE_EXTENSIONS)
-extensions::ExtensionSystemQt* ProfileQt::GetExtensionSystem()
+const PrefServiceAdapter &ProfileQt::prefServiceAdapter() const
{
- return m_extensionSystem;
+ return m_prefServiceAdapter;
}
-#endif // BUILDFLAG(ENABLE_EXTENSIONS)
+
} // namespace QtWebEngineCore
diff --git a/src/core/profile_qt.h b/src/core/profile_qt.h
index 704c5a6e4..76749fdfe 100644
--- a/src/core/profile_qt.h
+++ b/src/core/profile_qt.h
@@ -45,6 +45,7 @@
#include "content/public/browser/resource_context.h"
#include "extensions/buildflags/buildflags.h"
#include "net/url_request/url_request_context.h"
+#include "pref_service_adapter.h"
#include "profile_io_data_qt.h"
#include <QtGlobal>
@@ -107,6 +108,7 @@ public:
std::vector<network::mojom::CorsOriginPatternPtr> block_patterns,
base::OnceClosure closure) override;
const content::SharedCorsOriginAccessList* GetSharedCorsOriginAccessList() const override;
+ std::string GetMediaDeviceIDSalt() override;
// Profile implementation:
PrefService *GetPrefs() override;
@@ -118,15 +120,19 @@ public:
#if QT_CONFIG(webengine_spellchecker)
void FailedToLoadDictionary(const std::string &language) override;
- void setSpellCheckLanguages(const QStringList &languages);
- QStringList spellCheckLanguages() const;
- void setSpellCheckEnabled(bool enabled);
- bool isSpellCheckEnabled() const;
#endif
#if BUILDFLAG(ENABLE_EXTENSIONS)
extensions::ExtensionSystemQt* GetExtensionSystem();
#endif // defined(ENABLE_EXTENSIONS)
+ // Build/Re-build the preference service. Call when updating the storage
+ // data path.
+ void setupPrefService();
+
+ PrefServiceAdapter &prefServiceAdapter();
+
+ const PrefServiceAdapter &prefServiceAdapter() const;
+
private:
friend class ContentBrowserClientQt;
friend class WebContentsAdapter;
@@ -134,10 +140,11 @@ private:
std::unique_ptr<BrowsingDataRemoverDelegateQt> m_removerDelegate;
std::unique_ptr<PermissionManagerQt> m_permissionManager;
std::unique_ptr<SSLHostStateDelegateQt> m_sslHostStateDelegate;
- std::unique_ptr<PrefService> m_prefService;
scoped_refptr<content::SharedCorsOriginAccessList> m_sharedCorsOriginAccessList;
std::unique_ptr<ProfileIODataQt> m_profileIOData;
ProfileAdapter *m_profileAdapter;
+ PrefServiceAdapter m_prefServiceAdapter;
+
friend class ProfileAdapter;
#if BUILDFLAG(ENABLE_EXTENSIONS)
extensions::ExtensionSystemQt *m_extensionSystem;