summaryrefslogtreecommitdiffstats
path: root/src/core/api/qwebengineprofile.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix -no-ssl buildPeter Varga2025-09-171-0/+4
| | | | | | | | Amends 671afae06 Add API for providing additional CA certificates Pick-to: 6.10 Change-Id: I7e40b9b24e319e89c94d13516ebbc896c8ba6f69 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Doc: Add [since X.X] tags to enums that are missing themKaloyan Chehlarski2025-09-081-1/+1
| | | | | | Pick-to: 6.10 Change-Id: Ie121e22e18ef61d4c9ecb6fa9085889e742fb7be Reviewed-by: Jaishree Vyas <jaishree.vyas@qt.io>
* Associate permissions with framesKaloyan Chehlarski2025-08-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Previously, permisions were associated with the originating WebContents, as the PermissionManager API uses those in its function calls. This is insufficient, however, as it results in iframes not receiving the correct permissions (because they were instead granted to the root frame instead. This change modifies the internals of PermissionManagerQt to use GlobalRenderFrameHostTokens, and modifies relevant functions across the codebase to pass those around instead of WebContents. Media and mouse lock permissions now also query the permission manager before issuing a request, which avoids some cases of the same request being sent multiple times in a row. As a side effect, the behavior of non-persistent permissions (as well as the behavior of ALL permissions when running in AskEveryTime mode) is standardized so that a permission is remembered as long as the associated frame is alive. Fixes: QTBUG-134637 Fixes: QTBUG-135787 Pick-to: 6.10 6.9 Change-Id: I650e3328ef3830d06206acafc3305566d3a10d86 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* CRA mark src/core/apiMoss Heim2025-08-121-0/+1
| | | | | | | | QUIP: 23 Fixes: QTBUG-138720 Pick-to: 6.10 6.9 6.8 Change-Id: I9c064bef911e36c12553fc6cebb7408fb02bcc0b Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add PersistentCookiesPolicy::OnlyPersistentCookiesMoss Heim2025-08-111-0/+3
| | | | | | | | | | | This new policy prevents session cookies from being saved to disk even for crash recovery purposes. Persistent cookies are still stored. As a drive-by add a missing data row in a QWebEngineProfileBuilder test Task-number: QTBUG-135799 Change-Id: I55364aa96c07ce83d3f30d812450421354310d72 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* API-review webenginecore fixesAllan Sandfeld Jensen2025-07-271-2/+2
| | | | | | | Pick-to: 6.10 Task-number: QTBUG-137478 Change-Id: I9c419f6e1349aef34237da0cf85cbd4a1968fbc2 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Normalize signal/slot signatures 2025Marc Mutz2025-06-041-1/+1
| | | | | | | | | | | This is the result of running util/normalize on the code base. The following manual edits were needed: (none) Pick-to: 6.10 6.9 6.8 6.5 Change-Id: Ia59174aaf154559f7445e13d059723a282f75aae Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add API for extension managementMartin Negyokru2025-05-291-0/+17
| | | | | | | | | | | | | | | Introduce QWebEngineExtensionManager and QWebEngineExtensionInfo. The manager has methods to load and install Chrome extensions from the filesystem. QWebEngineExtensionInfo provides information about a loaded extension. The current state of our js extension API support is very limited meaning most of the extensions downloaded from Chrome extension store won't work. Adding support for these APIs will be done in followup patches. Fixes: QTBUG-118452 Task-number: QTBUG-61676 Change-Id: I017ad5e8d2ba963afbd2f31ac36fee9451a951bd Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add API for providing additional CA certificatesKai Uwe Broulik2025-05-271-0/+13
| | | | | | | | | | This allows to provide additional certificates that are considered when verifying a certificate. This is done by the cert verifier downstream of the platform-specific cert store. Fixes: QTBUG-50586 Change-Id: Ie90547f1013f22f994aaff536fadf906a44a88ef Reviewed-by: Moss Heim <moss.heim@qt.io>
* Fix QWebEngineDownloadRequest::pause()Szabolcs David2025-02-241-1/+1
| | | | | | | | | | | | | | Calling pause() (or any method which causes state update) in a directly connected signal handler of a download request causes an assertion fail in DownloadItemImpl::UpdateObservers() because it is protected from nested updates. Use QTimer::singleShot() to detach download requests and updates from the direct code path. Add auto test to check if pausing and resuming a download work. Pick-to: 6.8 6.9 Change-Id: Ia8c977a626fd0d39ca51df42984381a75cca2101 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Doc: Various punctuation fixesKaloyan Chehlarski2025-02-101-1/+1
| | | | | Change-Id: I65b22658eb46e2460e0bd8d82f528671b33fad66 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Make download API asynchronousSzabolcs David2024-10-241-13/+11
| | | | | | | | | | | | | | | | | | | | | | | | Modify the already existing downloadRequest() API. Now the requests not necessarily have to be answered in a directly connected signal handler and the API users can postpone their user's decision. The only exceptions are automatically accepted save page requests. There is no better place to call their callback than directly after the signal emission. Adapt auto tests to the new lifecycle of download items. Modify the quicknanobrowser example to use a simple async method to wait for the user's decision. Keep simplebrowser to use its old synchronous method to illustrate that it's still possible. Correct documentation at some places. [ChangeLog] QWebEngineProfile::downloadRequested() is not limited to synchronous usage anymore. QWebEngineDownloadRequest can be accepted or rejected later without blocking the browsing session. Fixes: QTBUG-118584 Change-Id: Ic1be6508126574dc77aa686f85bf35feafdb080d Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
* Permission manager: separate tracking of transient permissionsKaloyan Chehlarski2024-08-241-6/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Following the rewrite of the permissions API, transient (a.k.a non-persistent) permissions still passed through the persistent store sometimes, but were filtered out when using user-facing APIs. Unfortunately, thisstill presented some edge cases in the AskEveryTime permission policy mode. This change modifies the PermissionManagerQt class to store a second set of permissions, and associate them with a RenderFrameHost the way the Chromium API is designed to do anyway. This way, a permission will be kept around for the lifetime of a web page, and calling JavaScript APIs that trigger checks for permission state will work properly (e.g. navigator.mediaDevices.enumerateDevices). The new store is regularly cleaned up to make sure expired permissions are purged before they impact performance. As a side effect, this change also introduces pre-granting of non-persistent permissions, which was the biggest omission in the permissions rewrite. In those cases, the permissions will be temporarily stored inside the persistent store, and moved to the transient one the next time they're queried (and can thus be associated with a RenderFrameHost). This also fixes some extremely broken test cases that relied on invalid web API. Fixes: QTBUG-127951 Pick-to: 6.8 Change-Id: Ic084af7673ea0b255d98d94382e77323bb5e7ab0 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Mark the persistentPermissionPolicy API as new in 6.8Allan Sandfeld Jensen2024-08-051-0/+2
| | | | | | | | | Was missing. Pick-to: 6.8 Change-Id: Ie6bd9659c60bab240431329f469f91dac6b3b176 Reviewed-by: Anu Aliyas <anu.aliyas@qt.io> Reviewed-by: Kaloyan Chehlarski <kaloyan.chehlarski@qt.io>
* QWebEnginePermission: Post-API reviewKaloyan Chehlarski2024-07-031-32/+36
| | | | | | | | | | | | | | | This commit contains fixes for the issues found during the API review of the new permissions API. In particular: - All new enums are now scoped - Replaced isTransient with its opposite, isPersistent - Renamed Feature to PermissionType - Made origin() return a non-const QUrl - Renamed PersistentPermissionsPolicy members to be more concise - Fixed a couple of bugs in the implementation - Updated documentation Change-Id: Idf84e1c9ba3ae803ef4686e1caa7f3e6c198c87d Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Implement API for listing existing permissions in a profileKaloyan Chehlarski2024-06-031-0/+90
| | | | | | | | | | | QWebEngineProfile and QQuickWebEngineProfile now have methods for either getting one specific permission object, or for getting a list of all the permissions currently stored. The methods for listing also have overloads for filtering based on origin or Feature type. Pick-to: 6.8 Change-Id: I07241bcb3ff171fa8b82547c2b5f094071bebe44 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Implement optional website permission persistenceKaloyan Chehlarski2024-06-011-1/+48
| | | | | | | | | | | | | | | | | | | | | | | | | This change introduces a new API allowing application developers to choose whether they want to retain the granted/denied status of permissions between different pages or browsing sessions. The previous behavior of asking for permission every time is still optionally available, but the default behavior is to persist permissions inbetween sessions (except for off-the-record profiles, where the permissions get destroyed alongside the profile). Storage is handled via a PrefService, which writes to a permissions.json file stored inside the profile folder. This is different to Chromium's implementation, which is massively overengineered and would require enabling a ton of code we will never need to use. [ChangeLog][QtWebEngineCore][QWebEngineProfile] Added new API to control permission persistence. [ChangeLog][QtWebEngineQuick] Added new API to control permission persistence. Fixes: QTBUG-55108 Change-Id: Ib3057feda3bfbbf2a17a86356feca35a67180806 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Document QWebEngineClientHintsSzabolcs David2024-01-111-0/+6
| | | | | Change-Id: If975c71e0738358a7fd18d0c34974e6463759421 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add API to override User Agent Client HintsSzabolcs David2023-12-141-0/+8
| | | | | | | | | | | Implement QWebEngineClientHints class to provide API for each user agent client hints. Task-number: QTBUG-112826 Task-number: QTBUG-112825 Change-Id: I3091d60fb363bbafc16c8e48195c1fd82e8a81bb Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Fix corrupted load/fetch state on start up in case of NoCacheMichal Klocek2023-10-121-1/+4
| | | | | | | | | | | | | | | | | | | | The NoCache option on profile schedules clearHttpCache task. However, this task will run later and BrowsingDataRemover will break current network context mojo pipes. Network context will be recreated eventually but all the load/request states are gone. Do not delete explicitly cache on NoCache setting, which was undocumented 'feature' anyway. Let the user take care of that. Note doing reset network context on startup is fine as it is not delayed. [ChangeLog][WebEngineCore][WebEngineProfile] Switching profile to NoCache do not longer implicitly removes cache from old data store. Pick-to: 6.6 6.5 Task-number: QTBUG-116478 Change-Id: Ibd108d4ce7392349304df9f606738dc14dba36a0 Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
* Remove QWebEngineUrlResponseInterceptor APIMichael Brüning2023-08-241-21/+3
| | | | | | | | | | | | | | | | | It has been found to not have any real effect, therefore, we remove it again to not release a non-functional API and create false expectations in users. This reverts commits 3f5de5fab74e6c152cdf5d04f3d893feaa31790b ab21f39c6a54be331dd8a155d3374bfe790e0274 (parts) 082eef1916a86d6d5e0c751d271c7c8a1a5e457d 5e257fb57a211f95556ec387fe6f262a60cbb6fe Pick-to: 6.6 Task-number: QTBUG-61071 Change-Id: Ifb33e32128e77dfffed863a1a7501ba21796692d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add clearHttpCacheCompleted signal to profilePeter Varga2023-08-171-0/+22
| | | | | | | | | | | | | [ChangeLog][QtWebEngineQuick][WebEngineProfile] Added clearHttpCacheCompleted signal. [ChangeLog][QtWebEngineCore][QWebEngineProfile] Added clearHttpCacheCompleted signal. Fixes: QTBUG-89670 Fixes: QTBUG-111541 Change-Id: If93a99f7171c516ef75a3c8004da9ae621705a1a Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Add Windows 10 compatible manifest to examplesMartin Negyokru2023-06-161-1/+1
| | | | | | | | | | | | This manifest is required for User-Agent to report the correct Windows versions. Document Windows App Manifest in platform-notes and mention it in the httpUserAgent documentation. Pick-to: 6.6 Fixes: QTBUG-63021 Change-Id: Ie3896c50a0a912742e8d1a0dc20f3305b343d3f4 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* QWebEngineUrlResponseInterceptor: Implement new URL response interceptorYigit Akcay2023-03-101-3/+21
| | | | | | | | | | | | | | | | | | | | | This patch adds the QWebEngineUrlResponseInterceptor abstract class, which, when implemented, allows a user to intercept response headers and modify them in any way they like. A response interceptor can be set via QWebEngineProfile::setUrlResponseInterceptor(), QQuickWebEngineProfile::setUrlResponseInterceptor() or QWebEnginePage::setUrlResponseInterceptor(). Also, the QWebEngineUrlResponseInfo class is implemented, which contains the request and response data to be used with the response interceptor. If a response interceptor is set in the profile and page, the one in the profile takes precedence. Fixes: QTBUG-61071 Change-Id: I484d14373ff597b1d531541c066f0102bae28c72 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* Fix initialization of QWebEngineDownloadRequest::totalBytes for WidgetsPeter Varga2023-03-011-1/+4
| | | | | | | | | | | | QQuickWebEngineProfile already initializes totalBytes. Also clean up QWebEngineDownloadRequestPrivate and fix typo in documentation. Pick-to: 5.15 6.4 6.5 Fixes: QTBUG-104869 Change-Id: I8c4b79c076ddc63180960e22a9488b45ff6c4402 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Remove setPushServiceEndpoint from APIMichal Klocek2022-12-221-16/+12
| | | | | | | | | | Use setPushServiceEnabled instead. Update also getter and documentation. Task-number: QTBUG-107442 Pick-to: 6.5 Change-Id: I299ce88b06edef0f1a0088fb10f4a142056039be Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* Enable Push MessagingSzabolcs David2022-09-121-0/+35
| | | | | | | | | | | | | | | | | | Use Chrome's implementation of PushMessagingService. This feature relies on notification permissions, so it is not different from Web Notification from end-users perspective. We don't persist push subscriptions, because it seems these have to be consistent with persisting notification permissions. Make address of push service configurable by a profile setting. It is empty by default - which means the feature is disabled until the user sets the address of a push service. Task-number: QTBUG-98904 Task-number: QTBUG-53457 Change-Id: If44f459fecf2da482c28fee5562f62fe40de103e Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Use SPDX license identifiersLucie Gérard2022-06-221-38/+2
| | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. License files are organized under LICENSES directory. Pick-to: 6.4 Task-number: QTBUG-67283 Change-Id: I869ffda1080e283f231eb0dc4477b260f2054d99 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Protect against default profile being deleted before its pagesAllan Sandfeld Jensen2022-06-131-0/+2
| | | | | | | | | Can really only happen in QML on exit. Pick-to: 6.3 6.4 Task-number: QTBUG-99445 Change-Id: I1a04d57b6c4c40ae264b5519d2e41c57bca79a61 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Include moc filesAllan Sandfeld Jensen2022-05-311-0/+3
| | | | | | | | Faster to build and gives smaller binaries Fixes: QTBUG-103291 Change-Id: Iab52995e03c13a4c5b185750028c449a19d98d93 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Adaptations for Chrome 98Allan Sandfeld Jensen2022-03-291-0/+6
| | | | | Change-Id: I607604f85a111a69da77ca949dddf3399b9721b3 Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
* Bump copyrightsAllan Sandfeld Jensen2021-07-141-1/+1
| | | | | | Pick-to: 6.2 Change-Id: I8eb8bfba45abb340816b8c2072cca4486c1f37ab Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
* Clean up includes, forward declarations and friends in core apiPeter Varga2021-07-081-2/+1
| | | | | | Pick-to: 6.2 Change-Id: I58e2dc2443bca75b0d315694c9f6503251a7be02 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Remove deprecated useforglobalcertificateverificationPeter Varga2021-07-061-43/+0
| | | | | | | | | | | | It enabled an unrecommended OCSP path on Linux [ChangeLog] (Q)WebEngineSettings::useForGlobalCertificateVerification has been removed. Pick-to: 6.2 Task-number: QTBUG-91467 Change-Id: I9f5d1ad5e4fcb59abd31e6a133ded7bf8319c811 Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
* Doc: Fix documentation issues for Qt WebEngineTopi Reinio2021-07-011-1/+2
| | | | | | | | | | API and documentation changes since 5.15 caused multiple warnings from QDoc; this change addresses most of them. Some warnings indicate missing documentation, those issues still remain. Pick-to: 6.2 Change-Id: I96be38b7daac37a7e35c149b4b3ec3f18c4415c9 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Fix docs since 6.0 references for new apisKirill Burtsev2021-07-011-1/+1
| | | | | | Pick-to: 6.2 Change-Id: I2d9cf4fffda1ad614388844781ac4fece15dde0d Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Make default profile off the recordMichal Klocek2021-06-251-1/+1
| | | | | | | | | | | | | | | Make default profile otr, this prevents accessing data cache which could be created by older other version of Chromium. Allow to register a protocol handler on ort profile. [ChangeLog][QtWebEngineCore] Default profile is off-the-record Off-the-record profile can have registered protocol handlers. Task-number: QTBUG-66068 Pick-to: 6.2 Change-Id: Ief202de5c6734d293cb64d83ad447b1eba19e9a4 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Fix module specified for moved classesAllan Sandfeld Jensen2021-06-231-1/+1
| | | | | | Pick-to: 6.2 Change-Id: Iad93680dd0811086c481d9bf8adb298f663bdfa4 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Add API for favicon databasePeter Varga2021-06-181-0/+66
| | | | | | | | | | | | [ChangeLog][QtWebEngineCore][QWebEngineProfile] Add new API to access icon database asynchronously. [ChangeLog][QtWebEngineQuick] image:/favicon/ URLs now can be used to access icon database. Pick-to: 6.2 Task-number: QTBUG-51184 Change-Id: I6096ad9a4210670ed59458c4fa099a02595e8a1e Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Fix some compiler warningsPeter Varga2021-06-101-2/+2
| | | | | | | | | | | | | - Remove deprecated Qt::AA_EnableHighDpiScaling and Qt::AA_UseHighDpiPixmaps from examples. High-DPI scaling is always enabled. - Reorder initialization of members of QWebEngineDownloadRequestPrivate. Also remove m_ prefix from public members' name. - Remove unused parameters from methods of DummyDelegate. - Add missing overrides in auto tests. Pick-to: 6.2 Change-Id: I18d6973b8bee574b37b73fbaaa8d57002ac8ba2d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Merge remote-tracking branch 'origin/5.15' into devAllan Sandfeld Jensen2021-01-251-2/+9
| | | | | | Including update to 87-based Change-Id: I36b6054e00de97ab055d0bc800cff08d0408fac6
* Remove deprecated url interoceptor setter from profileMichal Klocek2020-11-201-28/+0
| | | | | | Change-Id: I15c621da6da97b2ccdd57afdfad0d413302d3c24 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Move profile from widgets to coreMichal Klocek2020-11-201-0/+897
This just moves class to core. Task-nmuber: QTBUG-74585 Change-Id: Id046eee21043f086f5f45727bc3ce7c965695b7c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>