summaryrefslogtreecommitdiffstats
path: root/src/webenginequick
Commit message (Collapse)AuthorAgeFilesLines
...
* Add setting to enable back/forward cacheSzabolcs David2025-02-102-0/+26
| | | | | | | | | | Implement an option to speed up back/forward navigation with bfcache feature. (Disabled by default.) Fixes: QTBUG-131324 Change-Id: I5ddb45b6a23ef587e868162b26368f5bc4933742 Reviewed-by: Moss Heim <moss.heim@qt.io> Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
* Doc: Various punctuation fixesKaloyan Chehlarski2025-02-103-13/+12
| | | | | Change-Id: I65b22658eb46e2460e0bd8d82f528671b33fad66 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Doc: Various typo fixesKaloyan Chehlarski2025-02-101-1/+1
| | | | | | Pick-to: 6.9 Change-Id: I3255a89539d23393ca1d0d7ebc440fe7e088d859 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* QuickWebenginView: Fix crash when assessing m_profileCarl Schwan2025-01-311-0/+1
| | | | | | | | | | | | | | | | | | | | | Ensure the profile is initialized before calling m_profile, otherwise this will crash. This happens with the following code: WebEngineView { userScripts { collection: [ { injectionPoint: WebEngineScript.DocumentReady, sourceCode: scriptContent, worldId: WebEngineScript.UserWorld } ] } } Pick-to: 6.9 Change-Id: I9d2d626ea51fb619b32147d8883701b40eab6c6e Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* QQuickWebEngineProfilePrototype: Post API reviewAnu Aliyas2025-01-161-1/+1
| | | | | | | | | | The following changes are made based on the review comments: - Renamed the function argument of setStorageName(). The corresponding change in the source file is not needed, as it is using the current argument name. Change-Id: Id5a3bd5f1fe2b60ad522a76700edb9789e8546c8 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Rename JSTouchEventsEnabled to TouchEventsApiEnabledAllan Sandfeld Jensen2025-01-152-11/+11
| | | | | | | | | Api-review Pick-to: 6.9 Change-Id: I06c5400c50f30c7473bee8e82f9f63fad2875930 Reviewed-by: Michal Klocek <michal.klocek@qt.io> Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
* Fix scaling and positioning of popup windows in WebEngineQuickMichael Brüning2025-01-112-9/+37
| | | | | | | | | | | | | | | | | When using QQuickItem::scale to scale up the UI, popups were misplaced when a WebEngineView was a child of this scaled item. After trying different approaches similar to other popups in Qt Quick, it turned out that the approach that we use to handle rotation can also be applied to handle scaled items. This also adds the handling of rotation and scale of items higher up the item tree. Pick-to: 6.8 6.9 Fixes: QTBUG-130608 Change-Id: If6b6c39113d0f07146d633e9d11d0745f6b0ff15 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Ensure unique data path for the profileAnu Aliyas2024-12-061-0/+30
| | | | | | | | | | | Added data path verification to restrict profile creation. This change ensures that no two profiles can use the same data path. Any request to create a profile with the duplicate data path will now return nullptr. Change-Id: Ifb25861756775fb484b02a23c802bffb791c88bb Reviewed-by: Michael Brüning <michael.bruning@qt.io> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Add WebEngineProfilePrototype for profile creation from qmlAnu Aliyas2024-12-066-0/+417
| | | | | | | This is a wrapper designed to handle profile construction from qml. Change-Id: I6f3c9e06052c08e81422e148c75c599cc361be95 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Lazy initialization for offTheRecord settingAnu Aliyas2024-11-201-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | As per the current design when switching from profile from OTR to non-OTR requires valid storage name. If it is not there, then QtWebEngine display a warning message and and don't switch to disk based behavior for qml. This impose the restriction on qml initialization order, for non-OTR profile, the initialization should be of the order given below WebEngineProfile { offTheRecord: false storgaeName: 'Test' } Otherwise it won't switch to non-OTR profile. For example a setting like WebEngineProfile { StorageName: 'Test' offTheRecord: false } won’t create a non-OTR profile. Though from an end user perspective these two initialization are identical, the order of initialization is different and due to which these two settings yield different profiles. Added a single shot signal handler on the offTheRecord setter to handle such cases, and it will switch the profile to non-OTR mode only when the storage name is set. Amends 5f42c1b7877b0c74d939af0f04d09a23482bc74a Fixes: QTBUG-131397 Pick-to: 6.8 Change-Id: I1c1c21808cb49dfa3ba4340b000242a0f54e59e5 Reviewed-by: Michael Brüning <michael.bruning@qt.io> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit 3477d952575a8ad8a8ca70c04a7cd3aa5d7d5f81) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: Fix QWebEngineDesktopMediaRequest documentationTopi Reinio2024-11-072-0/+78
| | | | | | | | | | | | | | - Add missing documentation for the QML type WebEngineDesktopMediaRequest. - Add missing documentation for the signals QWebEnginePage::desktopMediaRequested and WebEngineView::desktopMediaRequested. - Make some minor fixes to existing docs related to the type Pick-to: 6.8 Change-Id: I6fa824a9ac3c05a4e5aec259206bd00f64522e10 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Safiyyah Moosa <safiyyah.moosa@qt.io>
* Correct behavior of JavscriptCanAccessClipboardMoss Heim2024-11-041-6/+14
| | | | | | | | | | | | | | | | Previously, sanitized clipboard writes were only enabled with JavascriptCanPaste AND JavascriptCanAccessClipboard enabled. This broke backward compatibility with code that expected it to only be enabled by JavascriptCanAccessClipboard. This compatibility is now restored. In the permission manager, all writes and reads are still controlled by ClipboardReadWrite. Pick-to: 6.8 Fixes: QTBUG-130599 Change-Id: I03dc2ea739782e475faacc0900804708c37763cc Reviewed-by: Michal Klocek <michal.klocek@qt.io> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Do not override signals in qml delegatesMichal Klocek2024-10-316-91/+19
| | | | | | | | | | | | | | Since 36478e25 in qtdeclarative overriding signals is reported as warning and will be dropped in the future as it is not supported. Drop 'accepted' and 'rejected' signals and use signals from base component, which is the "correct" way of handling it. Remove some logic coming from qqc1. Pick-to: 6.8 Change-Id: I3eeeca4b25fb866d0c6e3da01c1513afd85904f0 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* Add setting for JS touch events APIMartin Negyokru2024-10-292-0/+32
| | | | | | | | | | | | | | | | | | Currently we enable the touch events API by default if a touch screen is detected by the system. Some websites use this api to decide if they are on a mobile device or desktop and base their design on it. This can cause unwanted results on touch screen laptops or other setups that emulate a fake touch device. Add option to explicitly set the touch events API. Keep old behavior if the option is not used. [ChangeLog][Settings] Added JSTouchEventsEnabled setting Task-number: QTBUG-115764 Change-Id: Ica860f54557ee21f00c63a3d30f9074a0278bc8c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Make download API asynchronousSzabolcs David2024-10-241-11/+10
| | | | | | | | | | | | | | | | | | | | | | | | 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>
* Add PreferCSSMarginsForPrinting to QWebEngineSettingsSzabolcs David2024-10-212-0/+26
| | | | | | | | | | | | Add an option to choose between margins of the specified QPageLayout and the margins of the @media rules of CSS. [ChangeLog] New API added to QWebEngineSettings to optionally prefer CSS margin rules over QPageLayout for printing results. Task-number: QTBUG-58669 Change-Id: Idfec2deca0d326ea9339f67bce937e24ae5128f2 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* Add PrintHeaderAndFooter to WebEngineSettingsSzabolcs David2024-10-172-0/+28
| | | | | | | | | | Allow users to generate basic header and footer when printing. Pages will contain the URL, title, date and the page number. Add corresponding WebEngineSettings flags to the Core and Quick APIs. Task-number: QTBUG-70125 Change-Id: Icadd15c16267a204c900aa6895db73b2172e47bc Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
* QQuickWebEngineView: silence deprecation warningVladimir Belyavsky2024-09-171-1/+1
| | | | | | | | Silence deprecation warning "'QJSValue::QJSValue': Use fromUtf8, QStringLiteral, or QLatin1StringView" when build with -DFEATURE_webengine_printing_and_pdf=OFF Change-Id: I2f165329caf6fc8bab4ec78c828c5d4a3cb923e7 Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
* Fix not working popup with qquick on eglfsMichal Klocek2024-08-281-2/+3
| | | | | | | | | | | After refactoring in 5d1ef38 we lost popups with qquick. Unfortunately we do not have tests for it as we do not run eglfs on ci. Pick-to: 6.8 6.7 Fixes: QTBUG-119908 Change-Id: Iea6cadf96dcac488898bb31132938fe8020d4d79 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Permission manager: separate tracking of transient permissionsKaloyan Chehlarski2024-08-241-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Make QQuickWebEngineDownloadRequest publicAllan Sandfeld Jensen2024-08-234-21/+11
| | | | | | | | | | We only really need the QWebEngineDownloadRequest, but the fact it was just that was in the private header. Pick-to: 6.8 Fixes: QTBUG-120370 Change-Id: I9bcd79e068e67ec0ed07ae31cfb2a0d4e011e22b Reviewed-by: Anu Aliyas <anu.aliyas@qt.io>
* Doc: Replace \instantiates with \nativetypePaul Wicking2024-08-2019-27/+27
| | | | | | | | | | | Since the implementation of the `\nativetype`-command in QDoc, the `\instantiates`-command is deprecated. Replace the use of the deprecated command in favor of its replacement. Pick-to: 6.8 Task-number: QTBUG-128216 Change-Id: I10cad9942e34301ded99c7014c1c70375e0698e1 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* fix: Avoid empty engineTian Shilin2024-08-201-2/+4
| | | | | | | | | | | | | | | | | | The engine variable is obtained by calling qmlEngine(m_view). If m_view is not associated with a valid QML engine, then the engine may be null,so advancing the null check on the engine to immediately after the engine is fetched ensures that an invalid engine is not accidentally used in subsequent code, especially if(m_importDirs.isEmpty() && !initializeImportDirs(m_importDirs, engine)),which I verified with a static scan tool to verify the above statement,and found that it does indeed result in a nullpointer error of type Pick-to: 6.8 6.7 Change-Id: I8cc427d2b94f93e8c9fc24a202d41abd8e00143d Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* QQuickWebEngineProfile: Add missing REVISION to new propertyKaloyan Chehlarski2024-08-191-1/+1
| | | | | | | | Found during API review. Pick-to: 6.8 Change-Id: I2e84f4d9fd5f95f8f4726ed130d67fc715d57d18 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* Prevent OTR to non-OTR profile switching when the storage name is emptyAnu Aliyas2024-08-131-0/+7
| | | | | | | | | | | When switching from profile from OTR to non-OTR requires valid storage name. If it not there, then display a warning message and and don't switch to disk based behavior. Fixes: QTBUG-126312 Pick-to: 6.7 6.8 6.2 Change-Id: Id689c8b280b4070b9ecbf11c6001685ac4ffd2f3 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Doc: Document value types with \qmlvaluetypeTopi Reinio2024-08-083-3/+11
| | | | | | | | | | | As these types are value types, document them as such. Separate object and value types on the QML module page, and fix the incorrect \instantiates argument for webEngineFrame. Pick-to: 6.8 Change-Id: Ieb654efef0ede0eea7c10537d51cc040dc4e9935 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Moss Heim <moss.heim@qt.io>
* Printing: Unify PDF generation among print() and printToPdf()Szabolcs David2024-08-081-1/+1
| | | | | | | | | | | | | | | | For the rasterized print() job, we have been generating the PDF data without margins and then QPrinter applied its margins when drawing to the device. Margins were the only differences between PDF generations for print() and printToPdf(). By taking the margins into account at generation time, and setting QPrinter margins to null and then restoring it after the job, we can get rid of this terrible design choice and having a unified PDF generator backend. This results a much more simpler code and opens the way for other developments. Change-Id: If2dd8932073f5112e2e29d52db624db496f59684 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* Update WebEngineWebAuthPinRequest documentationAnu Aliyas2024-08-051-1/+1
| | | | | | | | | | WebEngineWebAuthPinRequest is a QML value type and it's name should begin with lowercase letter. Modified documentation and type name accordingly. Pick-to: 6.8 Change-Id: Id238479799cb3538f2ea329cfa18d2d2f4c44c8f Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Doc: Fix linking warnings for Qt WebEngineTopi Reinio2024-07-314-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes the following warnings: src/core/doc/src/qwebenginepage_lgpl.qdoc:464: (qdoc) warning: Can't link to 'QWebEnginePage::action(WebAction action)' src/core/api/qwebenginewebauthuxrequest.cpp:109: (qdoc) warning: Can't link to 'WebEngineWebAuthUxRequest.PinEntryReason.Challenge' src/core/api/qwebenginewebauthuxrequest.cpp:113: (qdoc) warning: Can't link to 'WebEngineWebAuthUxRequest.WebAuthUxState.CollectPin' src/core/api/qwebenginewebauthuxrequest.cpp:141: (qdoc) warning: Can't link to 'WebEngineWebAuthUxRequest.PinEntryReason.Challenge' src/webenginequick/api/qquickwebengineprofile.cpp:498: (qdoc) warning: Can't link to 'storageName()' src/webenginequick/api/qquickwebenginescriptcollection.cpp:119: (qdoc) warning: Undocumented return value src/webenginequick/doc/src/webengineview_lgpl.qdoc:879: (qdoc) warning: Can't link to 'WebEngineSettings::JavascriptCanPaste' src/webenginequick/doc/src/webengineview_lgpl.qdoc:880: (qdoc) warning: Can't link to 'WebEngineSettings::JavascriptCanAccessClipboard' In addition, drop remaining references to 'Pepper Plugin API' as that documentation was removed in 9d5f94b7f4b954bbe7e261d184420e237c704557. Pick-to: 6.8 Change-Id: I41fcddcc909b703705f2c32c2c3860872da60a72 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Add line breaks to public header filesKaloyan Chehlarski2024-07-171-2/+4
| | | | | | | | | Adding deprecation warnings resulted in lines deemed too long. This change wraps those lines. Found in API review. Pick-to: 6.8 Change-Id: I3e1f8647c046e2a6042cc8201424b803d4f95d23 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Fix deprecations in QQuickWebEngineViewKaloyan Chehlarski2024-07-151-8/+1
| | | | | | | | | | Add a missing QT_MOC_COMPAT macro in grantFeaturePermission, and remove the leftover moc workaround macro magic in featurePermissionRequested. Found in API review. Pick-to: 6.8 Change-Id: I480b22accd076abc7e30f12f9d65ee323c08839c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* QWebEngineFrame: hold weak ref to adapterMoss Heim2024-07-151-3/+3
| | | | | | | | | | | This is a bit safer as it prevents crashes when the adapter/page is no longer around. This also adds a getter for the adapterClient on WebContentsAdapter. Pick-to: 6.8 Change-Id: I50690fd7bf3e5fe60568c565ce0fff20a832351f Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Add a new constructor to QQuickWebEngineProfileSzabolcs David2024-07-082-0/+19
| | | | | | | | | Providing a storageName at construction time allows users to create profiles in C++ which are not off-the-record by default. Task-number: QTBUG-126085 Change-Id: I9986a1242309e45fcf13d1b8362508238ca00350 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* Fix typos in comments & docsMoss Heim2024-07-042-5/+5
| | | | | | | | | | | | | | | POINTER instead of ACTION in enum value names Correct type and name for WebEngineScript::runsOnSubFrames Correct return type for WebEngineScriptCollection::contains \sa notes in docs: insert and remove should point to each other, as should find and contains. This is closer to documentation for QList, QMap, etc. Change-Id: I1ac31fb53bd3fa53463f37e1bb4b6ef3b8fba65b Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* QWebEnginePermission: Post-API reviewKaloyan Chehlarski2024-07-038-172/+165
| | | | | | | | | | | | | | | 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>
* Additions to QWebEngineClientHints (post API review)Szabolcs David2024-06-271-0/+1
| | | | | | | | | | | | - Make this class accessible from QML - Mark properties as FINAL - Change fullVersionList to QVariantMap to support it in QML - Access ProfileAdapter through QPointer instead of raw pointer to make it safer Pick-to: 6.8 Change-Id: Ib242059378aaf6fd2c5f176ba26ed6f94e2afd76 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Make ImageAnimationPolicy a scoped enumAllan Sandfeld Jensen2024-06-202-13/+14
| | | | | | Pick-to: 6.8 Change-Id: I2c03c6d56d18f37e60b287c337c67718178fbb2b Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
* Clarify the OTR nature of default QQuickWebEngineProfilesSzabolcs David2024-06-181-2/+17
| | | | | | | | | | Since the default profile is OTR now, this behavior needs more mention in the documentation. Pick-to: 6.8 Task-number: QTBUG-126085 Change-Id: I26b5f05cc8c76982bc97deaecd0df835c8ad82fb Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
* Add QWebEngineFrame::isMainFrame()Moss Heim2024-06-031-0/+6
| | | | | | Pick-to: 6.8 Change-Id: I5360ebc88aeff2189071c971e4f24a69e765686d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Implement API for listing existing permissions in a profileKaloyan Chehlarski2024-06-032-0/+148
| | | | | | | | | | | 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>
* Add QWebEnginePermission and rewrite permissions APIKaloyan Chehlarski2024-06-037-58/+322
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the addition of permission persistence, it's now important for us to have an API for querying previously granted/denied permissions, so that they can be revoked at a later point. This change does the bulk of the work to get us there, by introducing a new type representing a single permission for a given URL/Feature pair. This type holds no information about the permission's state; it is simply an accessor object which allows its user to query the current status of the permission, grant/deny it, or reset it back to its initial state (so, delete it from storage). This provides application developers an easy way to store/modify lists of permissions without having to define their own custom types. A subsequent change will expand the API to provide a list of all permissions for a given profile. The current API (in QWebEnginePage and QQuickWebEngineView) has been marked as deprecated, but has not been disabled to ensure a smooth transition for developers. [ChangeLog][QtWebEngineCore][QWebEnginePage] Deprecated old permissions API [ChangeLog][QtWebEngineQuick][WebEngineView] Deprecated old permissions API [ChangeLog][QtWebEngineCore] Added new API for querying and modifying website permissions. [ChangeLog][QtWebEngineQuick] Added new API for querying and modifying website permissions. Pick-to: 6.8 Change-Id: I8661cdc26bbd6dcde6403d29cc083bcea1a49ccc Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add QWebEngineFrame::printToPdfMoss Heim2024-06-033-9/+35
| | | | | | | | | Provide API calls to (1) save to file (QString) and (2) get the bytes in a callback. Pick-to: 6.8 Change-Id: I0ff44a25328b99080491b8c3b36a7b632c065131 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Docs: Fix typo in webEngineFrame::runJavaScriptMoss Heim2024-06-021-2/+2
| | | | | Change-Id: I0672706a7794bef592f746c3090ddae9f92b4705 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Implement optional website permission persistenceKaloyan Chehlarski2024-06-012-5/+90
| | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Merge printToPdf callback systemsMoss Heim2024-05-312-10/+21
| | | | | | | | Provide a common API in WebContentsAdapterClient so it can be used easily by QWebEngineFrame. Change-Id: I9abc1214cf535c3110d54d9ecb3257000c6db5fb Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add QWebEnginePage::printRequestedByFrame signalMoss Heim2024-05-314-2/+25
| | | | | | | | | Emitted whenever a frame excluding the main frame calls JS print() function. `printRequested` is now only emitted when the main frame requests printing, instead of any frame. Change-Id: I4b65e5a164b513cc9a9692c1285470847b7a26e3 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add documentation for WebEngineWebAuthPinRequest qmltypeAnu Aliyas2024-05-311-0/+9
| | | | | | | | Added missing documentation for WebEngineWebAuthPinRequest Fixes: QTBUG-123008 Change-Id: Iecf58499b1698688d5e8b8d64c8cb83f21cf0598 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add QWebEngineFrame::runJavaScriptMoss Heim2024-05-223-4/+38
| | | | | | | | | | | | | Run JavaScript code on a specific frame, optionally executing a callback when done. Uses the enclosing page's callback system. There are two sets of overloads, matching the API of QQuickWebEngineView and QWebEnginePage. Also adds QQuickWebEngineFrame::runJavaScript() Change-Id: I48746bd83d0f19644157548483a94637fc70c20f Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add zoomFactorChanged signal to QWebEnginePage and QQuickWebEngineViewKaloyan Chehlarski2024-05-173-1/+16
| | | | | | | | | | | | | | Added a signal that fires whenever the zoom factor for a given page changes, including both via key combinations, and when using the existing zoom API. This already existed in Quick, but was both undocumented and only half-implemented (zooming via keyboard/mouse wouldn't trigger it). Thus, the Quick documentation was changed to list it as a 6.8 addition. Fixes: QTBUG-111041 Change-Id: I91eb7c9bf0d17d99956784841c5c86640554ad1c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Merge runJavaScript functions in QWEPage, QQWEViewMoss Heim2024-05-152-19/+18
| | | | | | | | | | | These two are identical except for the use of QJSValue to wrap a JS callback. And we would like to have a function on WebContentsAdapterClient for QWEFrame to call. So we wrap the JS callback in a std::function<> callback and merge the APIs. Change-Id: Ifc55d3748b1b3764e802e4908c474b40cc92f9cc Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>