summaryrefslogtreecommitdiffstats
path: root/src/webview
Commit message (Collapse)AuthorAgeFilesLines
* Add runJavascript() to C++ APIKaloyan Chehlarski2025-12-013-9/+7
| | | | | | | | | | | | | | | | | The API follows what we have in WebEngine, with an optional std::function callback. No world ID argument is provided, however; most of the backends don't support the concept. The new function is not exposed to QML, since we cannot expose std::function arguments. Instead, the existing QML API is kept, and calls to it simply redirect to the C++ implementation. Also removes runJavaScriptPrivate() from QWebView, and its related implementation details in the plugins. Task-number: QTBUG-131837 Change-Id: Idc1e492916e17caa3f061c0b2738b3c735837cf8 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Clean up and rename QAbstractWebView and QAbstractWebViewSettingsMichal Klocek2025-12-017-15/+15
| | | | | | | | These are really just private implementations. Task-number: QTBUG-131837 Change-Id: I0f70456ff78aa85a519e41d5b0e31b7086e8fc93 Reviewed-by: Moss Heim <moss.heim@qt.io>
* Clean up and rename qabstractwebview_p.h to qwebview_p.hMichal Klocek2025-12-015-6/+5
| | | | | | | | Prepare for proper private class for QWebView. Task-number: QTBUG-131837 Change-Id: I7303055370ff946cbc7be94ea54a4c57a57021ca Reviewed-by: Moss Heim <moss.heim@qt.io>
* Make QWebView a public classKaloyan Chehlarski2025-12-013-51/+54
| | | | | | Task-number: QTBUG-131837 Change-Id: I7d22b93e4011c7a5706e62864cbdf37068bafb64 Reviewed-by: Moss Heim <moss.heim@qt.io>
* Make QWebViewLoadRequest a public classKaloyan Chehlarski2025-12-015-44/+51
| | | | | | | | | | | Move LoadStatus enum from QWebView class to QWebLoadRequest class. Small adjustments to fix compile issues. Task-number: QTBUG-131837 Change-Id: I79b6a48b0426b177133502f75fb34af9d2120e46 Reviewed-by: Moss Heim <moss.heim@qt.io>
* Rename qwebview_p.h qwebviewloadrequest_p.hMichal Klocek2025-12-015-8/+10
| | | | | | | This class just removes _p suffix and fixes include headers. Change-Id: I4cc819631f9f8f969264da99f0e32b8b56735704 Reviewed-by: Moss Heim <moss.heim@qt.io>
* Make QWebViewSettings a public classKaloyan Chehlarski2025-12-015-101/+135
| | | | | | | | | Move QWebViewSettings out of qwebview_p.h and make it public. Task-number: QTBUG-131837 Change-Id: I233ec3a5a3a2cb2441f05292a4d8c246d26f9eed Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Cleanup QQuickWebView initializationMichal Klocek2025-11-281-0/+1
| | | | | | | | | | | | | | In case of QQuickWebview with web engine backend, we need to pass qt quick parent item. So far it was was done by setting parent for QWebView and then extracting it on web engine plugin backend's initialization. Add initialize() call instead. For time being use just QObject as parameter as it is only used by webengine to pass parent QQuickItem. Change-Id: I8d84313e93e2ad67ec1f008bee532f20b0d0a68e Reviewed-by: Moss Heim <moss.heim@qt.io> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Emit signals only on public class (pimpl wise)Michal Klocek2025-11-283-91/+12
| | | | | | | | | | | | | | | | | | | | | | So far we emitted signals on qabstractwebview and then reemited it later from qwebview to quickwebview. Make emit directly from qwebview. Note this patch changes the expected progress to 100 for failed load. As this code was removed from QWebView::onLoadingChanged. if (loadRequest.m_status == QWebView::LoadFailedStatus) m_progress = 0; Note on windows plugin the loading progress is just boolean, moreover if it 'not loading' the load progress is 100, which would now give wrong value on first initialization (100), therefore add m_progress as workaround. Task-number: QTBUG-131837 Change-Id: I9cd003be3185ad956d35bbdbcf01a0349421a1d4 Reviewed-by: Moss Heim <moss.heim@qt.io>
* WASM: Replace Quick-exclusive geometry hooksKaloyan Chehlarski2025-11-282-11/+0
| | | | | | | | | | | | | | | | | | | | The WASM backend relies on injecting an iframe into the generated webpage, and then using Qt Quick ItemChange events to pass down the correct geometry to the iframe's size. This meant that several non-plugin classes would have ugly Q_OS_WASM ifdefs, and that the WASM backend didn't work properly with C++. This change removes all of the existing geometry change code, and replaces it with a single JavaScript function that gets run when the iframe is created. The JavaScript code installs a ResizeObserver on the clientArea object (which represents the QWebView), and changes the iframe's dimensions as needed. Remove also obsolete now nativeWindowChanged(). Task-number: QTBUG-131837 Change-Id: I484a4b65406fa6b22ce969393d06e3c7b4dc3663 Reviewed-by: Moss Heim <moss.heim@qt.io>
* Pass the pointer to QWebView for private counterpartMichal Klocek2025-11-275-6/+7
| | | | | | | | | QAbstarctWebView is going to be base class of pimpl for QWebView. Change-Id: I58636bc5017092e1b9360d05109a305d49899043 Reviewed-by: Kaloyan Chehlarski <kaloyan.chehlarski@qt.io> Reviewed-by: Moss Heim <moss.heim@qt.io>
* Make QWebView a QWindowMichal Klocek2025-11-272-37/+28
| | | | | | | | | | | | | We plan QWebView to become public c++ api, make it a QWindow not QAbstractWebView, which is going to base class of private implmentation. The fact that is now QWindow is used in follow up patches. Task-number: QTBUG-131837 Change-Id: I449f4b47462e09d31c716bbbc198a446f0f3b064 Reviewed-by: Moss Heim <moss.heim@qt.io> Reviewed-by: Kaloyan Chehlarski <kaloyan.chehlarski@qt.io>
* Cleanup. Remove null intefaceMichal Klocek2025-11-271-58/+1
| | | | | | | | | Running webview wihout plugin should be simply fatal. Task-number: QTBUG-131837 Change-Id: I223a64e7aad98d8bf1f81a3b71af2effcce454f6 Reviewed-by: Moss Heim <moss.heim@qt.io> Reviewed-by: Kaloyan Chehlarski <kaloyan.chehlarski@qt.io>
* Fix documentation details for Qt Webview on WindowsMorteza Jamshidi2025-10-311-1/+5
| | | | | | | | Added details about backends supports for Qt Webview on Windows Task-number: QTBUG-75747 Change-Id: I8b8bcbed150eb68afb61859f5e87e01b14631199 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Cleanup. Rename getSettings() to settings() in private classesKaloyan Chehlarski2025-10-284-6/+5
| | | | | | Task-number: QTBUG-131837 Change-Id: If86e9f707abcc0ef5916ea4c938fe59f6f270a7c Reviewed-by: Moss Heim <moss.heim@qt.io>
* Add url() virtual method to private classesKaloyan Chehlarski2025-10-273-1/+3
| | | | | | Task-number: QTBUG-131837 Change-Id: I28c33c9c688c4218a350524b254ca893a6dfd950 Reviewed-by: Moss Heim <moss.heim@qt.io>
* Cleanup. Remove QWebViewInterface classMichal Klocek2025-10-234-65/+3
| | | | | | | | It is not used anywhere. Task-number: QTBUG-131837 Change-Id: Ic8993e608fc555f69fc8c05a8e9243ea33fa5ce6 Reviewed-by: Moss Heim <moss.heim@qt.io>
* Remove WinRT plugin sourcesKaloyan Chehlarski2025-10-171-6/+0
| | | | | | | | The plugin has not been maintained or tested in years, and has now been replaced by the WebView2 plugin. Change-Id: I96147164ba99364d679ba3b64bfc51853c1972a6 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* CRA mark src/Moss Heim2025-10-0913-1/+13
| | | | | | | | | Some winrt plugin functions do data parsing but since this plugin is defunct, it is still marked with default security level. Fixes: QTBUG-135784 Change-Id: I99739cc762b1801fee65df7e08be17443cad157d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Do not initialize webenginequickMichal Klocek2025-09-052-13/+0
| | | | | | | | | | | | | The WGL backend is gone, we use DX11, so no more opengl texture sharing setup. This is band-aid patch, docs will be updated later. (if other webview backends do not need initialize) Fixes: QTBUG-139717 Pick-to: 6.10 Change-Id: Id37bdc1e70c8b793959589bfced42096dbe4c939 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Replace manual setting of the Android permissionsAlexey Edelev2025-07-291-2/+2
| | | | | | | Use qt_internal_add_android_permission instead. Change-Id: I24de3dfb6545f841bf3b2acb3c53a3cc87b21e01 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Handle non data base urls schemes in loadHtmlMichal Klocek2025-07-161-0/+3
| | | | | | | | | | | | | | | | | | | | | Skip percent encodig in case of setHtml call with baseUrl with non data scheme. See for reference: https://developer.android.com/reference/android/webkit/WebView# loadDataWithBaseURL(java.lang.String,%20java.lang.String, %20java.lang.String,%20java.lang.String,%20java.lang.String) Add test case to cover the issue, note this skips the webenigne backend as it requires qmlengine to function. This will be cleaned up in follow up patches. Note the base url setting is not supported on "webview2". Fixes: QTBUG-136082 Fixes: QTBUG-134723 Pick-to: 6.10 6.9 6.8 Change-Id: I6891ec9271fcf3ee78048a6b040d39b818087fa4 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Make tests based on runtime plugin settingMichal Klocek2025-06-262-0/+13
| | | | | | | | | | | | | Do not rely on compile time flags, as we can run the test with backend selected during runtime. Introduce WebViewFactory to hide the fact that webview tests uses quick apis. This should be all clean up when c++ api are introduced. Pick-to: 6.10 Change-Id: Ib630e828e6277061b84c1fe528c2d497ba4d0b4e Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Make search for WebView2 sdk more robustMichal Klocek2025-06-261-1/+2
| | | | | | | Add some file path escaping, and enhance the log. Change-Id: I337306d7daf4989b93df01391372f9a3a0a9ce7a Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add configure summaryMichal Klocek2025-06-262-6/+36
| | | | | | | | | Make configuration more verbose. Advertise also other backends. Pick-to: 6.10 Change-Id: I6bfac38d1e1f88c7850ced9410477ad0de071055 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Implement WebView2 windows plugin for qt webviewMorteza Jamshidi2025-05-301-0/+29
| | | | | | | | with this plugin qt webview uses webview2 in the backend for windows Task-number: QTBUG-75747 Change-Id: Iab91b95386be6b32c7acfb97f029ed49a6560745 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Doc: Enable automatic linking to sources on code.qt.ioTopi Reinio2025-05-271-0/+4
| | | | | | | | | | | Since 6.10, QDoc is capable of generating links to the declaration in the source code for each documented C++ API entity in their `Detailed description`. Add the required configuration to enable this feature in Qt WebView. Change-Id: I9e5e3f2b44a2573011bc34026c430da5485f76e1 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Make use of the new Window container classesChristian Strømme2025-03-187-128/+62
| | | | | | | | | | | | | | | | | With the new window container classes we no longer need our own implementation here in QtWebView, the new one is also much more powerful with better integration into the Qt scene(s). Also took the opportunity to get rid of the over complicated interfaces. Note: While wasm isn't officially supported, some support code was left to make sure it functions to a similar degree as before. Once wasm has better support for using the Window container the remaining code can be removed. Change-Id: If4af9a546bc230aa9fa69ba3fb6dfb8fcf1f0be6 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* macOS: Flip the switch and make the native back-end the defaultChristian Strømme2024-12-051-4/+0
| | | | | | | | | | | | | | | In practice this have been the case for anyone not installing QtWebEngine and the platform issue that we had, and that required special initialization set-up, hasn't been an issue and that code has been removed from 6.5 and newer (see: 5f15afaaf07586006b1731cadcb061fa23c71aef). With this change we'll use the native back-end by default on macOS. [ChangeLog][macOS] macOS will now use the native WebView backend by default, meaning QtWebEngine is no longer required on macOS. Change-Id: Iebcefddf93432c5184d495d286bdead679e423de Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Clean up unused url() web interfaceMichal Klocek2024-11-073-3/+1
| | | | | | | | | | | | | All the backends implement url(), however it is never used. The loadingChanged signal delivers url which is used later by qquickwebview. Make it less confusing and remove unused code paths. Note actually loadingChanged should be required interface. Change-Id: If410845a39b09c2ec4e8ffb177d334d807561860 Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* Doc: Enable documentation testing in the CITopi Reinio2024-11-041-0/+3
| | | | | | | | | Include documentation testing steps in coin/module_config.yaml and set the warning limit to zero. Task-number: QTBUG-130559 Change-Id: Iebaa7419d0c3d5ae591ed81d6624fdd0ba870dd9 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Use NO_GENERATE_CPP_EXPORTS explicitlyAlexey Edelev2024-03-251-0/+1
| | | | | | | | | | Use NO_GENERATE_CPP_EXPORTS explicitly for modules that don't need the autogenerated exports header file. Task-number: QTBUG-90492 Change-Id: I1edc1c8bd4fa70dd95058fdbde06ee69c71a3a16 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* windows: Fix freeze when loading Qt Web Engine pluginEskil Abrahamsen Blomfeldt2024-03-042-0/+13
| | | | | | | | | | | | | | | | | | The mechanism which initializes Qt Web Engine via the plugin loader does not work on some graphics drivers on Windows, which do not support initializing graphics in DllMain(). Since Qt Web Engine is always the backend on Windows, this patch makes Qt Web View depend on it directly and calls initialize from QtWebView::initialize() instead on that platform. [ChangeLog][Windows] Fixed a freeze on startup on Windows. As part of the solution for this, the Qt Web View library now depends directly on Qt Web Engine on Windows, instead of indirectly via the plugin library. Fixes: QTBUG-117882 Change-Id: Ia1b3e54145477f645bbb97856bdbbb68b58d2785 Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* Document event related limitations of WebViewVolker Hilsheimer2023-11-131-1/+4
| | | | | | | | | We cannot handle events on behalf the native web view. Pick-to: 6.6 6.5 Fixes: QTBUG-69801 Change-Id: I919ae0fcbf0d11ebb1580ee6108fa71abd8c1747 Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* Include what you need: <QPointer>Marc Mutz2023-10-131-0/+2
| | | | | | | | | | | | | | | | | | | | | | | All these TUs relied on transitive includes of qpointer.h, maybe to a large extent via qevent.h, though, given that qevent.h is more or less the only public QtBase header that includes qpointer.h, something else seems to be at play here. Said qevent.h actually needs QPointer in-name-only, so a forward declaration would suffice. Prepare for qevent.h dropping the include. The algorithm I used was: If the TU mentions 'passiveGrabbers', the name of the QEvent function that returns QPointers, and the TU doesn't have qpointer.h included explicitly, include it. That may produce False Positives, but better safe than sorry. Otherwise, in src/, add an include to all source and header files which mention QPointer. Exception: if foo.h of a foo.cpp already includes it, don't include again. Task-number: QTBUG-117670 Change-Id: I4f4f738e6dc46aec3e5772036cf2c94e6141c535 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Highlight Minibrowser exampleKai Köhne2023-10-101-0/+2
| | | | | | | Task-number: QTBUG-117224 Pick-to: 6.5 6.6 Change-Id: I0b5542005e58eb8b7956b33eedf169284208eb07 Reviewed-by: Andreas Eliasson <andreas.eliasson@qt.io>
* Adjust Android-related installation directoriesFab Stz2023-01-161-1/+1
| | | | | | | | | | Use the correct plugins directory when generating dependenciencies. Install android jars to INSTALL_DATADIR. Pick-to: 6.5 Task-number: QTBUG-106533 Change-Id: Ifc74a554236d798945dfb21ea65a775e9d752015 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Add settings API for QtWebViewChristian Strømme2022-10-274-0/+157
| | | | | | | | | | | | | Adds API and implementation for changing the settings of the WebView. [ChangeLog][General] Added settings API to make it possible to modify some of the WebView's built-in functionality. Task-number: QTBUG-97487 Task-number: QTBUG-98549 Change-Id: Ia121175ec08c96f56fd2148b02dccbc963fff244 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Fix assert when WebView is used in combination with QQuickWidgetChristian Strømme2022-10-273-0/+7
| | | | | | | | | | | | | | | Using the WebView with QQuickWidget is not really a use-case the WebView is well suited for, due to the native WebView being an overlay, however it should not crash or trigger an assert, so this change tries to avoid some of the caveats when mixing with QQuickWidget. For example, we cannot under any circumstances call winId() before the window the QQuickWidget lives under, is backed by a platform window. The native WebView is therefore not added before the platform window is created. Pick-to: 6.4 6.2 5.15 Fixes: QTBUG-46084 Change-Id: I815d37cdd0328b3a258ef60294b5ea282f41cfc6 Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* Change the license of all CMakeLists.txt and *.cmake files to BSDLucie Gérard2022-08-231-1/+1
| | | | | | | Task-number: QTBUG-105718 Change-Id: I824b873d98c922af8a4a290dcd797a2135d1147f Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Remove Cpp.ignoretokens from .qdocconfKai Köhne2022-08-221-2/+0
| | | | | | | | qdoc's new clang backend does not use them anymore. Task-number: QTBUG-104903 Change-Id: I7f3624122a7c4b5e07fadfdc507267cd02fca68f Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Add license headers to cmake filesLucie Gérard2022-07-071-0/+3
| | | | | | | | | | | | | CMakeLists.txt and .cmake files of significant size (more than 2 lines according to our check in tst_license.pl) now have the copyright and license header. Existing copyright statements remain intact Task-number: QTBUG-88621 Change-Id: Iff8b50e402d070ba5fa2562fef50b7d7d3743cb4 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Use SPDX license identifiersLucie Gérard2022-06-1019-662/+38
| | | | | | | | | | | 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: I0f719de9e6e1fd4a7c50a247831e5a768e08df14 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Add QtQuick dependency to QtWebViewMarco Bubke2022-06-071-0/+2
| | | | | | | | | | QQuickItem is referenced as prototype but there is no dependency declared to QtQuick where it is defined. Pick-to: 6.3 6.2 Change-Id: I5cbf13290d6a1a026c0fe3bb085d39474964d700 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
* Doc: Revise Qt WebView module landing pageAndreas Eliasson2022-04-061-40/+25
| | | | | | | | | | Use global CMake and qmake snippets and reorganize some of the sections structure. Also, make minor grammar and syntax changes. Task-number: QTBUG-100369 Pick-to: 6.3 6.3.0 Change-Id: Icd8b9555aac957ec60c475fe46f5aebbfe513004 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Make sure all private headers include at least one otherThiago Macieira2022-03-092-0/+2
| | | | | | | | | | See script in qtbase/util/includeprivate for the rules. Since these files are being touched anyway, I also ran the updatecopyright.pl script too. Change-Id: Ib056b47dde3341ef9a52ffff13ef677e471674b6 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Use up-to date LGPL license headerKai Köhne2022-02-1414-154/+196
| | | | | | | | | | | | | Remove usages of outdated LGPL3 header that references LICENSES.LGPLv3 instead of LICENSES.LGPL3. Use BSD instead in the examples, updated LGPL otherwise. Also remove the now unreferenced LICENSE.LGPLv3, LICENSE.GPLv2 files, and instead the newly referenced files instead. Pick-to: 6.2 6.3 Change-Id: I01e1325ee2c7a147e095c08b370b88ded9a8daff Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* Don't include a qml header in library with no qml usageAlexandru Croitor2022-02-011-1/+0
| | | | | | | | | | | Including the header causes issues when building Qt with Conan which installs each repo into its own install directory. The issue likely doesn't surface with a regular all-in-one install, because the header is found via some indirect means. Pick-to: 6.2 6.3 Change-Id: I5640c1cb9aa34207d619362000c135d8e4e5d1ac Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* Add support functions to manage cookiesAgnieszka Jaworska2021-12-145-0/+33
| | | | | | | | | Setting and deleting cookies, changes for android, darwin and webengine plugins Pick-to: 6.3 Task-number: QTBUG-96204 Change-Id: I4f79d34384e490b70a1e9f89196dd113733d5fe1 Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* QWebViewFactory: second step in porting to QFactoryLoader's CBOR supportThiago Macieira2021-11-041-9/+4
| | | | | | | | | | | This removes the string values for the common keys, in favor of QtPluginMetaDataKeys. It also fixes a bug in comparing an iterator from metaDataObject to pluginMetaData's end. Change-Id: I3eb1bd30e0124f89a052fffd16a6f2d82ad568af Reviewed-by: Lars Knoll <lars.knoll@qt.io>