summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
m---------src/3rdparty0
-rw-r--r--src/core/CMakeLists.txt7
-rw-r--r--src/core/api/qwebengineprofile.cpp35
-rw-r--r--src/core/api/qwebengineprofile.h3
-rw-r--r--src/core/browser_main_parts_qt.cpp15
-rw-r--r--src/core/configure/BUILD.root.gn.in38
-rw-r--r--src/core/net/system_network_context_manager.cpp10
-rw-r--r--src/core/pref_service_adapter.cpp23
-rw-r--r--src/core/profile_adapter.cpp12
-rw-r--r--src/core/profile_adapter.h4
-rw-r--r--src/core/profile_qt.cpp33
-rw-r--r--src/core/profile_qt.h3
-rw-r--r--src/webenginequick/api/qquickwebengineprofile.cpp43
-rw-r--r--src/webenginequick/api/qquickwebengineprofile.h5
-rw-r--r--tests/auto/quick/publicapi/tst_publicapi.cpp2
15 files changed, 229 insertions, 4 deletions
diff --git a/src/3rdparty b/src/3rdparty
-Subproject 82da2de9a7b0261bc5c765219147cd20621fccb
+Subproject 43b92e07d21bbd0f2fb4414b6ada9b98c5de549
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index c89662ab3..c0a2441d3 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -289,10 +289,15 @@ foreach(arch ${archs})
list(APPEND gnArgArg
qtwebengine_target="${buildDir}/${config}/${arch}:QtWebEngineCore"
+ enable_background_contents=false
+ enable_background_mode=false
enable_ipc_fuzzer=false
+ enable_js_type_check=false
enable_media_remoting=false
enable_message_center=false
enable_nacl=false
+ enable_one_click_signin=false
+ enable_oop_printing=false
enable_remoting=false
enable_reporting=false
enable_resource_allowlist_generation=false
@@ -309,10 +314,8 @@ foreach(arch ${archs})
toolkit_views=false
chrome_pgo_phase=0
optimize_webui=false
- enable_js_type_check=false
v8_use_external_startup_data=false
strip_absolute_paths_from_debug_symbols=false
- enable_oop_printing=false
devtools_fast_bundle=false
devtools_skip_typecheck=false
)
diff --git a/src/core/api/qwebengineprofile.cpp b/src/core/api/qwebengineprofile.cpp
index 4eacc8dc7..8c3dc8f3d 100644
--- a/src/core/api/qwebengineprofile.cpp
+++ b/src/core/api/qwebengineprofile.cpp
@@ -390,6 +390,41 @@ void QWebEngineProfile::setDownloadPath(const QString &path)
}
/*!
+ \since 6.5
+
+ The address used to create subscriptions for a push messaging service.
+
+ \note By default, the endpoint is an empty URL and push messaging is disabled.
+
+ \sa setPushServiceEndpoint()
+*/
+QUrl QWebEngineProfile::pushServiceEndpoint() const
+{
+ const Q_D(QWebEngineProfile);
+ return d->profileAdapter()->pushServiceEndpoint();
+}
+
+/*!
+ \since 6.5
+
+ Enables push messaging feature by setting \a endpoint to a valid address used as a
+ push messaging service endpoint. Subscription requests for the push service will be
+ sent to the concatenation of \a endpoint and a subscription ID (which is provided
+ by the browser engine).
+
+ \note Default endpoint used by Google Chrome browser is \c {https://fcm.googleapis.com/fcm/send/}
+
+ If set back to the default empty URL, push messaging is disabled.
+
+ \sa pushServiceEndpoint()
+*/
+void QWebEngineProfile::setPushServiceEndpoint(const QUrl &endpoint)
+{
+ Q_D(QWebEngineProfile);
+ d->profileAdapter()->setPushServiceEndpoint(endpoint);
+}
+
+/*!
Returns the path used for caches.
By default, this is below StandardPaths::CacheLocation in a QtWebengine/StorageName specific
diff --git a/src/core/api/qwebengineprofile.h b/src/core/api/qwebengineprofile.h
index c29202973..cd711727b 100644
--- a/src/core/api/qwebengineprofile.h
+++ b/src/core/api/qwebengineprofile.h
@@ -98,6 +98,9 @@ public:
QString downloadPath() const;
void setDownloadPath(const QString &path);
+ QUrl pushServiceEndpoint() const;
+ void setPushServiceEndpoint(const QUrl &endpoint);
+
void setNotificationPresenter(std::function<void(std::unique_ptr<QWebEngineNotification>)> notificationPresenter);
QWebEngineClientCertificateStore *clientCertificateStore();
diff --git a/src/core/browser_main_parts_qt.cpp b/src/core/browser_main_parts_qt.cpp
index 10fc29ebf..a39a1ee3b 100644
--- a/src/core/browser_main_parts_qt.cpp
+++ b/src/core/browser_main_parts_qt.cpp
@@ -31,6 +31,7 @@
#include "select_file_dialog_factory_qt.h"
#include "services/service_manager/public/cpp/connector.h"
#include "services/service_manager/public/cpp/service.h"
+#include "type_conversion.h"
#include "ui/display/screen.h"
#if BUILDFLAG(ENABLE_EXTENSIONS)
@@ -50,6 +51,7 @@
#include "web_usb_detector_qt.h"
#include <QtGui/qtgui-config.h>
+#include <QStandardPaths>
#if QT_CONFIG(opengl)
#include "ui/gl/gl_context.h"
@@ -68,6 +70,10 @@
#include "desktop_screen_qt.h"
#endif
+#if defined(Q_OS_LINUX)
+#include "components/os_crypt/key_storage_config_linux.h"
+#include "components/os_crypt/os_crypt.h"
+#endif
namespace QtWebEngineCore {
@@ -252,6 +258,15 @@ void BrowserMainPartsQt::PostCreateMainMessageLoop()
{
if (!device_event_log::IsInitialized())
device_event_log::Initialize(0 /* default max entries */);
+
+#if defined(Q_OS_LINUX)
+ std::unique_ptr<os_crypt::Config> config = std::make_unique<os_crypt::Config>();
+ config->product_name = "Qt WebEngine";
+ config->main_thread_runner = content::GetUIThreadTaskRunner({});
+ config->should_use_preference = false;
+ config->user_data_path = toFilePath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation));
+ OSCrypt::SetConfig(std::move(config));
+#endif
}
int BrowserMainPartsQt::PreMainMessageLoopRun()
diff --git a/src/core/configure/BUILD.root.gn.in b/src/core/configure/BUILD.root.gn.in
index 08faf24d5..550bd17e0 100644
--- a/src/core/configure/BUILD.root.gn.in
+++ b/src/core/configure/BUILD.root.gn.in
@@ -118,12 +118,14 @@ shared_library("QtWebEngineCore") {
"//components/cdm/renderer",
"//components/error_page/common",
"//components/favicon/content",
+ "//components/gcm_driver",
"//components/history/content/browser",
"//components/keyed_service/content",
"//components/navigation_interception",
"//components/network_hints/browser",
"//components/network_hints/common:mojo_bindings",
"//components/network_hints/renderer",
+ "//components/signin/public/base",
"//components/visitedlink/browser",
"//components/visitedlink/renderer",
"//components/web_cache/browser",
@@ -222,7 +224,9 @@ source_set("qtwebengine_sources") {
"//build:branding_buildflags",
"//chrome/browser:dev_ui_browser_resources_grit",
"//chrome/browser/resources/net_internals:resources",
+ "//chrome/browser/signin:identity_manager_provider",
"//chrome/common:buildflags",
+ "//chrome/common:version_header",
"//chromeos/components/chromebox_for_meetings/buildflags",
"//components/custom_handlers",
"//components/nacl/common:buildflags",
@@ -241,13 +245,47 @@ source_set("qtwebengine_sources") {
"//chrome/browser/accessibility/accessibility_ui.h",
"//chrome/browser/devtools/devtools_eye_dropper.cc",
"//chrome/browser/devtools/devtools_eye_dropper.h",
+ "//chrome/browser/gcm/gcm_product_util.cc",
+ "//chrome/browser/gcm/gcm_product_util.h",
+ "//chrome/browser/gcm/gcm_profile_service_factory.cc",
+ "//chrome/browser/gcm/gcm_profile_service_factory.h",
+ "//chrome/browser/gcm/instance_id/instance_id_profile_service_factory.cc",
+ "//chrome/browser/gcm/instance_id/instance_id_profile_service_factory.h",
"//chrome/browser/media/webrtc/desktop_media_list.h",
"//chrome/browser/net/chrome_mojo_proxy_resolver_factory.cc",
"//chrome/browser/net/chrome_mojo_proxy_resolver_factory.h",
"//chrome/browser/prefs/chrome_command_line_pref_store.cc",
"//chrome/browser/prefs/chrome_command_line_pref_store.h",
+ "//chrome/browser/profiles/incognito_helpers.cc",
+ "//chrome/browser/profiles/incognito_helpers.h",
"//chrome/browser/profiles/profile.cc",
"//chrome/browser/profiles/profile.h",
+ "//chrome/browser/push_messaging/push_messaging_app_identifier.cc",
+ "//chrome/browser/push_messaging/push_messaging_app_identifier.h",
+ "//chrome/browser/push_messaging/push_messaging_constants.cc",
+ "//chrome/browser/push_messaging/push_messaging_constants.h",
+ "//chrome/browser/push_messaging/push_messaging_features.cc",
+ "//chrome/browser/push_messaging/push_messaging_features.h",
+ "//chrome/browser/push_messaging/push_messaging_notification_manager.cc",
+ "//chrome/browser/push_messaging/push_messaging_notification_manager.h",
+ "//chrome/browser/push_messaging/push_messaging_refresher.cc",
+ "//chrome/browser/push_messaging/push_messaging_refresher.h",
+ "//chrome/browser/push_messaging/push_messaging_service_factory.cc",
+ "//chrome/browser/push_messaging/push_messaging_service_factory.h",
+ "//chrome/browser/push_messaging/push_messaging_service_impl.cc",
+ "//chrome/browser/push_messaging/push_messaging_service_impl.h",
+ "//chrome/browser/push_messaging/push_messaging_utils.cc",
+ "//chrome/browser/push_messaging/push_messaging_utils.h",
+ "//chrome/browser/signin/chrome_signin_client.cc",
+ "//chrome/browser/signin/chrome_signin_client.h",
+ "//chrome/browser/signin/chrome_signin_client_factory.cc",
+ "//chrome/browser/signin/chrome_signin_client_factory.h",
+ "//chrome/browser/signin/force_signin_verifier.cc",
+ "//chrome/browser/signin/force_signin_verifier.h",
+ "//chrome/browser/signin/identity_manager_factory.cc",
+ "//chrome/browser/signin/identity_manager_factory.h",
+ "//chrome/browser/signin/signin_util.cc",
+ "//chrome/browser/signin/signin_util.h",
"//chrome/browser/tab_contents/form_interaction_tab_helper.cc",
"//chrome/browser/tab_contents/form_interaction_tab_helper.h",
"//chrome/browser/tab_contents/web_contents_collection.cc",
diff --git a/src/core/net/system_network_context_manager.cpp b/src/core/net/system_network_context_manager.cpp
index 3ee06b7c9..79c4e92b3 100644
--- a/src/core/net/system_network_context_manager.cpp
+++ b/src/core/net/system_network_context_manager.cpp
@@ -30,6 +30,11 @@
#include "services/network/public/mojom/network_context.mojom.h"
#include "services/proxy_resolver/public/mojom/proxy_resolver.mojom.h"
+#if defined(Q_OS_WIN)
+#include "components/os_crypt/os_crypt.h"
+#include "content/public/common/network_service_util.h"
+#endif
+
namespace {
// The global instance of the SystemNetworkContextmanager.
@@ -186,6 +191,11 @@ void SystemNetworkContextManager::OnNetworkServiceCreated(network::mojom::Networ
network_service->SetUpHttpAuth(CreateHttpAuthStaticParams());
network_service->ConfigureHttpAuthPrefs(CreateHttpAuthDynamicParams());
+#if defined(Q_OS_WIN)
+ if (content::IsOutOfProcessNetworkService())
+ network_service->SetEncryptionKey(OSCrypt::GetRawEncryptionKey());
+#endif
+
// Configure the Certificate Transparency logs.
std::vector<std::pair<std::string, base::Time>> disqualified_logs =
certificate_transparency::GetDisqualifiedLogs();
diff --git a/src/core/pref_service_adapter.cpp b/src/core/pref_service_adapter.cpp
index 48deb5ced..6c3a1918c 100644
--- a/src/core/pref_service_adapter.cpp
+++ b/src/core/pref_service_adapter.cpp
@@ -18,6 +18,8 @@
#include "components/prefs/pref_service.h"
#include "components/prefs/pref_service_factory.h"
#include "components/prefs/pref_registry_simple.h"
+#include "components/signin/internal/identity_manager/account_tracker_service.h"
+#include "components/signin/public/base/signin_pref_names.h"
#include "components/user_prefs/user_prefs.h"
#include "components/proxy_config/pref_proxy_config_tracker_impl.h"
#include "chrome/common/pref_names.h"
@@ -37,6 +39,10 @@
#include "extensions/common/constants.h"
#endif
+#if defined(Q_OS_WIN)
+#include "components/os_crypt/os_crypt.h"
+#endif
+
namespace {
static const char kPrefMediaDeviceIDSalt[] = "qtwebengine.media_device_salt_id";
}
@@ -76,6 +82,23 @@ void PrefServiceAdapter::setup(const ProfileAdapter &profileAdapter)
registry->RegisterBooleanPref(prefs::kShowInternalAccessibilityTree, false);
registry->RegisterBooleanPref(prefs::kAccessibilityImageLabelsEnabled, false);
registry->RegisterIntegerPref(prefs::kNotificationNextPersistentId, 10000);
+ registry->RegisterDictionaryPref(prefs::kPushMessagingAppIdentifierMap);
+ registry->RegisterListPref(prefs::kAccountInfo);
+ registry->RegisterIntegerPref(prefs::kAccountIdMigrationState,
+ AccountTrackerService::MIGRATION_NOT_STARTED);
+ registry->RegisterStringPref(prefs::kGoogleServicesLastAccountId,
+ std::string());
+ registry->RegisterStringPref(prefs::kGoogleServicesLastUsername,
+ std::string());
+ registry->RegisterStringPref(prefs::kGoogleServicesAccountId, std::string());
+ registry->RegisterBooleanPref(prefs::kGoogleServicesConsentedToSync, false);
+ registry->RegisterBooleanPref(prefs::kAutologinEnabled, true);
+ registry->RegisterListPref(prefs::kReverseAutologinRejectedEmailList);
+ registry->RegisterBooleanPref(prefs::kSigninAllowed, true);
+ registry->RegisterBooleanPref(prefs::kSignedInWithCredentialProvider, false);
+#if defined(Q_OS_WIN)
+ OSCrypt::RegisterLocalPrefs(registry.get());
+#endif
#if BUILDFLAG(ENABLE_EXTENSIONS)
registry->RegisterDictionaryPref(extensions::pref_names::kExtensions);
diff --git a/src/core/profile_adapter.cpp b/src/core/profile_adapter.cpp
index e557e69a7..36c756a7e 100644
--- a/src/core/profile_adapter.cpp
+++ b/src/core/profile_adapter.cpp
@@ -76,6 +76,8 @@ ProfileAdapter::ProfileAdapter(const QString &storageName):
extensions::ExtensionSystem::Get(m_profile.data())->InitForRegularProfile(true);
#endif
m_cancelableTaskTracker.reset(new base::CancelableTaskTracker());
+
+ m_profile->DoFinalInit();
}
ProfileAdapter::~ProfileAdapter()
@@ -626,6 +628,16 @@ bool ProfileAdapter::isSpellCheckEnabled() const
#endif
}
+QUrl ProfileAdapter::pushServiceEndpoint() const
+{
+ return m_pushServiceEndpoint;
+}
+
+void ProfileAdapter::setPushServiceEndpoint(const QUrl &endpoint)
+{
+ m_pushServiceEndpoint = endpoint;
+}
+
void ProfileAdapter::addWebContentsAdapterClient(WebContentsAdapterClient *client)
{
m_webContentsAdapterClients.append(client);
diff --git a/src/core/profile_adapter.h b/src/core/profile_adapter.h
index 46993f5bd..90c5238b2 100644
--- a/src/core/profile_adapter.h
+++ b/src/core/profile_adapter.h
@@ -101,6 +101,9 @@ public:
void setSpellCheckEnabled(bool enabled);
bool isSpellCheckEnabled() const;
+ QUrl pushServiceEndpoint() const;
+ void setPushServiceEndpoint(const QUrl &endpoint);
+
void addWebContentsAdapterClient(WebContentsAdapterClient *client);
void removeWebContentsAdapterClient(WebContentsAdapterClient *client);
void releaseAllWebContentsAdapterClients();
@@ -213,6 +216,7 @@ private:
QString m_httpUserAgent;
HttpCacheType m_httpCacheType;
QString m_httpAcceptLanguage;
+ QUrl m_pushServiceEndpoint;
PersistentCookiesPolicy m_persistentCookiesPolicy;
VisitedLinksPolicy m_visitedLinksPolicy;
QHash<QByteArray, QPointer<QWebEngineUrlSchemeHandler>> m_customUrlSchemeHandlers;
diff --git a/src/core/profile_qt.cpp b/src/core/profile_qt.cpp
index 9820ca787..1355140e3 100644
--- a/src/core/profile_qt.cpp
+++ b/src/core/profile_qt.cpp
@@ -35,6 +35,9 @@
#include "components/user_prefs/user_prefs.h"
#include "components/profile_metrics/browser_profile_type.h"
#include "components/proxy_config/pref_proxy_config_tracker_impl.h"
+#include "chrome/browser/push_messaging/push_messaging_app_identifier.h"
+#include "chrome/browser/push_messaging/push_messaging_service_factory.h"
+#include "chrome/browser/push_messaging/push_messaging_service_impl.h"
#include "chrome/common/pref_names.h"
#if QT_CONFIG(webengine_spellchecker)
#include "chrome/browser/spellchecker/spellcheck_service.h"
@@ -50,6 +53,10 @@
#include "extensions/extension_system_qt.h"
#endif
+#if defined(Q_OS_WIN)
+#include "components/os_crypt/os_crypt.h"
+#endif
+
namespace QtWebEngineCore {
ProfileQt::ProfileQt(ProfileAdapter *profileAdapter)
@@ -59,8 +66,16 @@ ProfileQt::ProfileQt(ProfileAdapter *profileAdapter)
, m_extensionSystem(nullptr)
#endif // BUILDFLAG(ENABLE_EXTENSIONS)
{
+ profile_metrics::SetBrowserProfileType(this, IsOffTheRecord()
+ ? profile_metrics::BrowserProfileType::kIncognito
+ : profile_metrics::BrowserProfileType::kRegular);
+
setupPrefService();
+#if defined(Q_OS_WIN)
+ OSCrypt::Init(m_prefServiceAdapter.prefService());
+#endif
+
// Mark the context as live. This prevents the use-after-free DCHECK in
// AssertBrowserContextWasntDestroyed from being triggered when a new
// ProfileQt object is allocated at the same address as a previously
@@ -78,12 +93,20 @@ ProfileQt::~ProfileQt()
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
m_prefServiceAdapter.commit();
BrowserContextDependencyManager::GetInstance()->DestroyBrowserContextServices(this);
+ // Remembering push subscriptions and not persisting notification permissions would
+ // confuse most of web applications.
+ PushMessagingAppIdentifier::DeleteAllFromPrefs(this);
ShutdownStoragePartitions();
m_profileIOData->shutdownOnUIThread();
//Should be deleted by IO Thread
m_profileIOData.release();
}
+void ProfileQt::DoFinalInit()
+{
+ PushMessagingServiceImpl::InitializeForProfile(this);
+}
+
PrefService* ProfileQt::GetPrefs()
{
return m_prefServiceAdapter.prefService();
@@ -139,9 +162,17 @@ storage::SpecialStoragePolicy *ProfileQt::GetSpecialStoragePolicy()
return nullptr;
}
+std::string ProfileQt::GetPushMessagingEndpoint() const
+{
+ return m_profileAdapter->pushServiceEndpoint().toString().toStdString();
+}
+
content::PushMessagingService *ProfileQt::GetPushMessagingService()
{
- return nullptr;
+ if (!m_profileAdapter->pushServiceEndpoint().isEmpty())
+ return PushMessagingServiceFactory::GetForProfile(this);
+ else
+ return nullptr;
}
content::SSLHostStateDelegate* ProfileQt::GetSSLHostStateDelegate()
diff --git a/src/core/profile_qt.h b/src/core/profile_qt.h
index 2f8ff3255..d05998ea2 100644
--- a/src/core/profile_qt.h
+++ b/src/core/profile_qt.h
@@ -56,13 +56,14 @@ public:
content::PlatformNotificationService *GetPlatformNotificationService() override;
std::string GetMediaDeviceIDSalt() override;
content::FileSystemAccessPermissionContext *GetFileSystemAccessPermissionContext() override;
+ std::string GetPushMessagingEndpoint() const override;
// Profile implementation:
PrefService *GetPrefs() override;
const PrefService *GetPrefs() const override;
bool IsNewProfile() const override;
- void Initialize();
+ void DoFinalInit();
ProfileAdapter *profileAdapter() { return m_profileAdapter; }
#if QT_CONFIG(webengine_spellchecker)
diff --git a/src/webenginequick/api/qquickwebengineprofile.cpp b/src/webenginequick/api/qquickwebengineprofile.cpp
index 1cfaab3f5..131e59ad0 100644
--- a/src/webenginequick/api/qquickwebengineprofile.cpp
+++ b/src/webenginequick/api/qquickwebengineprofile.cpp
@@ -821,6 +821,49 @@ QString QQuickWebEngineProfile::downloadPath() const
}
/*!
+ \qmlproperty string WebEngineProfile::pushServiceEndpoint
+ \since QtWebEngine 6.5
+
+ The address used to create subscriptions for a push messaging service.
+
+ Subscription requests for the push service will be sent to the concatenation
+ of \a endpoint and a subscription ID (which is provided by the browser engine).
+
+ \note Default endpoint used by Google Chrome browser is \c {https://fcm.googleapis.com/fcm/send/}
+
+ \note By default, the endpoint is an empty URL and push messaging is disabled.
+*/
+
+/*!
+ \property QQuickWebEngineProfile::pushServiceEndpoint
+ \since QtWebEngine 6.5
+
+ The address used to create subscriptions for a push messaging service.
+
+ Subscription requests for the push service will be sent to the concatenation
+ of \a endpoint and a subscription ID (which is provided by the browser engine).
+
+ \note Default endpoint used by Google Chrome browser is \c {https://fcm.googleapis.com/fcm/send/}
+
+ \note By default, the endpoint is an empty URL and push messaging is disabled.
+*/
+
+QUrl QQuickWebEngineProfile::pushServiceEndpoint() const
+{
+ const Q_D(QQuickWebEngineProfile);
+ return d->profileAdapter()->pushServiceEndpoint();
+}
+
+void QQuickWebEngineProfile::setPushServiceEndpoint(const QUrl &endpoint)
+{
+ Q_D(QQuickWebEngineProfile);
+ if (pushServiceEndpoint() == endpoint)
+ return;
+ d->profileAdapter()->setPushServiceEndpoint(endpoint);
+ emit pushServiceEndpointChanged();
+}
+
+/*!
Returns the cookie store for this profile.
*/
diff --git a/src/webenginequick/api/qquickwebengineprofile.h b/src/webenginequick/api/qquickwebengineprofile.h
index 77e367d02..36789acf0 100644
--- a/src/webenginequick/api/qquickwebengineprofile.h
+++ b/src/webenginequick/api/qquickwebengineprofile.h
@@ -37,6 +37,7 @@ class Q_WEBENGINEQUICK_EXPORT QQuickWebEngineProfile : public QObject {
Q_PROPERTY(bool spellCheckEnabled READ isSpellCheckEnabled WRITE setSpellCheckEnabled NOTIFY spellCheckEnabledChanged FINAL REVISION(1,3))
Q_PROPERTY(QQuickWebEngineScriptCollection *userScripts READ userScripts)
Q_PROPERTY(QString downloadPath READ downloadPath WRITE setDownloadPath NOTIFY downloadPathChanged FINAL REVISION(1,5))
+ Q_PROPERTY(QUrl pushServiceEndpoint READ pushServiceEndpoint WRITE setPushServiceEndpoint NOTIFY pushServiceEndpointChanged FINAL REVISION(6,5))
QML_NAMED_ELEMENT(WebEngineProfile)
QML_ADDED_IN_VERSION(1, 1)
QML_EXTRA_VERSION(2, 0)
@@ -108,6 +109,9 @@ public:
QString downloadPath() const;
void setDownloadPath(const QString &path);
+ QUrl pushServiceEndpoint() const;
+ void setPushServiceEndpoint(const QUrl &endpoint);
+
QWebEngineClientCertificateStore *clientCertificateStore();
static QQuickWebEngineProfile *defaultProfile();
@@ -125,6 +129,7 @@ Q_SIGNALS:
Q_REVISION(1,3) void spellCheckLanguagesChanged();
Q_REVISION(1,3) void spellCheckEnabledChanged();
Q_REVISION(1,5) void downloadPathChanged();
+ Q_REVISION(6,5) void pushServiceEndpointChanged();
void downloadRequested(QQuickWebEngineDownloadRequest *download);
void downloadFinished(QQuickWebEngineDownloadRequest *download);
diff --git a/tests/auto/quick/publicapi/tst_publicapi.cpp b/tests/auto/quick/publicapi/tst_publicapi.cpp
index 75c7cd4f7..bd8c331ac 100644
--- a/tests/auto/quick/publicapi/tst_publicapi.cpp
+++ b/tests/auto/quick/publicapi/tst_publicapi.cpp
@@ -363,6 +363,8 @@ static const QStringList expectedAPI = QStringList()
<< "QQuickWebEngineProfile.persistentCookiesPolicyChanged() --> void"
<< "QQuickWebEngineProfile.persistentStoragePath --> QString"
<< "QQuickWebEngineProfile.persistentStoragePathChanged() --> void"
+ << "QQuickWebEngineProfile.pushServiceEndpoint --> QUrl"
+ << "QQuickWebEngineProfile.pushServiceEndpointChanged() --> void"
<< "QQuickWebEngineProfile.spellCheckEnabled --> bool"
<< "QQuickWebEngineProfile.spellCheckEnabledChanged() --> void"
<< "QQuickWebEngineProfile.spellCheckLanguages --> QStringList"