diff options
m--------- | src/3rdparty | 0 | ||||
-rw-r--r-- | src/core/CMakeLists.txt | 7 | ||||
-rw-r--r-- | src/core/api/qwebengineprofile.cpp | 35 | ||||
-rw-r--r-- | src/core/api/qwebengineprofile.h | 3 | ||||
-rw-r--r-- | src/core/browser_main_parts_qt.cpp | 15 | ||||
-rw-r--r-- | src/core/configure/BUILD.root.gn.in | 38 | ||||
-rw-r--r-- | src/core/net/system_network_context_manager.cpp | 10 | ||||
-rw-r--r-- | src/core/pref_service_adapter.cpp | 23 | ||||
-rw-r--r-- | src/core/profile_adapter.cpp | 12 | ||||
-rw-r--r-- | src/core/profile_adapter.h | 4 | ||||
-rw-r--r-- | src/core/profile_qt.cpp | 33 | ||||
-rw-r--r-- | src/core/profile_qt.h | 3 | ||||
-rw-r--r-- | src/webenginequick/api/qquickwebengineprofile.cpp | 43 | ||||
-rw-r--r-- | src/webenginequick/api/qquickwebengineprofile.h | 5 | ||||
-rw-r--r-- | tests/auto/quick/publicapi/tst_publicapi.cpp | 2 |
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" |