summaryrefslogtreecommitdiffstats
path: root/src/plugins/windows/qwebview2webview.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Add runJavascript() to C++ APIKaloyan Chehlarski2025-12-011-10/+12
| | | | | | | | | | | | | | | | | 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>
* Windows: Make updateWindowGeometry() call in initialize() syncKaloyan Chehlarski2025-12-011-3/+1
| | | | | | | | | This avoids a race condition in at least one test, where quickly creating and destroying WebView instances would trigger an ERROR_INVALID_STATE for the controller object. Change-Id: I10ca9a9fcee6e523b6c42dea1e184d976214ba85 Reviewed-by: Moss Heim <moss.heim@qt.io>
* Clean up and rename QAbstractWebView and QAbstractWebViewSettingsMichal Klocek2025-12-011-3/+3
| | | | | | | | These are really just private implementations. Task-number: QTBUG-131837 Change-Id: I0f70456ff78aa85a519e41d5b0e31b7086e8fc93 Reviewed-by: Moss Heim <moss.heim@qt.io>
* Make QWebViewLoadRequest a public classKaloyan Chehlarski2025-12-011-10/+10
| | | | | | | | | | | 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-011-1/+1
| | | | | | | This class just removes _p suffix and fixes include headers. Change-Id: I4cc819631f9f8f969264da99f0e32b8b56735704 Reviewed-by: Moss Heim <moss.heim@qt.io>
* Emit signals only on public class (pimpl wise)Michal Klocek2025-11-281-26/+27
| | | | | | | | | | | | | | | | | | | | | | 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>
* Use QWebView as parent window in backendsMichal Klocek2025-11-271-2/+1
| | | | | | | | | | | | | | | | | | | | | Each backend besides QtWebEngine, provides native window to be set by setContainedWindow in QQuickWebView. The android backend will have QWebView as parent window, the same as darwin plugin. Wasm and Webview2 do not create native child window. Note the wasm in handled in follow up commit. Note we do note make use of qquickwindow for webengine in this commit, we barely just store the pointer, or create the window if plugin was created without the qquickwindow. Change-Id: Ie98dc0103e353c280ebcb7add3c66f43d3618314 Reviewed-by: Moss Heim <moss.heim@qt.io>
* Pass the pointer to QWebView for private counterpartMichal Klocek2025-11-271-2/+2
| | | | | | | | | 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>
* Windows: Do not set native window as visible by defaultKaloyan Chehlarski2025-11-071-1/+0
| | | | | | | | | | In cases where a WebView is created, but its window is not embedded anywhere, having setVisible(true) would cause the window to get shown in the center of the screen with way to close or hide it. Pick-to: 6.10 Change-Id: If82ee8bef07d0204e700d2a2e790625e57bfadde Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Cleanup. Rename getSettings() to settings() in private classesKaloyan Chehlarski2025-10-281-1/+1
| | | | | | Task-number: QTBUG-131837 Change-Id: If86e9f707abcc0ef5916ea4c938fe59f6f270a7c Reviewed-by: Moss Heim <moss.heim@qt.io>
* Add url() virtual method to private classesKaloyan Chehlarski2025-10-271-0/+5
| | | | | | Task-number: QTBUG-131837 Change-Id: I28c33c9c688c4218a350524b254ca893a6dfd950 Reviewed-by: Moss Heim <moss.heim@qt.io>
* CRA mark src/Moss Heim2025-10-091-0/+1
| | | | | | | | | 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>
* WebView2: Block creation of new windows not controlled by QtKaloyan Chehlarski2025-09-031-0/+19
| | | | | | | | | | | | | By default, an unhandled NewWindowRequested event will trigger the creation of a window not controlled by us, and which can outive the spawning process. This is inconsistent with other backends, so handle the event and don't pass a window handle so the new window is never created in the first place. Fixes: QTBUG-139641 Pick-to: 6.10 Change-Id: I75ed8ae376be1695f0f75c7286fed7dd3c7b3670 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Minor. Run clang-format on qwebview2webviewMichal Klocek2025-07-241-101/+116
| | | | | | | | | | | File is badly formated, and clang-format sanity complains a lot on commits. Fix it. Make callbacks in separate lines so after formatting it looks better. Pick-to: 6.10 Change-Id: If884af0fbdf4e60155862a6ea00091d5fa63ccec Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add default user data folder for initializationMichal Klocek2025-07-211-1/+2
| | | | | | | | | Set the location which should be writable as user data folder. Fixes: QTBUG-138555 Pick-to: 6.10 Change-Id: Icaef9f732cd2d7c0d5b917dfefdf78347198d65c Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* Clean up window initialization for webview2Michal Klocek2025-06-261-30/+21
| | | | | | | | | | | | Avoid creating extra window when initializing webview2. Simplify initialization logic and postpone initialization to take place after construction of plugin instance. Pick-to: 6.10 Change-Id: Ia908e4f31ce27392d4b256ceb1191f9e7f01e5bd Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Morteza Jamshidi <morteza.jamshidi@qt.io> Reviewed-by: Kaloyan Chehlarski <kaloyan.chehlarski@qt.io>
* Do not use assert within business logic for webview2 pluginMichal Klocek2025-06-261-42/+59
| | | | | | | | | | | Calling function inside assert statements means those function calls are going away (optimized out) when compiled in release mode, making some functionality broken. Pick-to: 6.10 Change-Id: If2d97c36a771bc89a0dcbbef9755122972a96871 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Morteza Jamshidi <morteza.jamshidi@qt.io>
* Fix webview2 async api call issuesMorteza Jamshidi2025-06-261-72/+77
| | | | | | | | | | | | | | | | | Qt webview tests expect the api calls to be synchronous, but some of webview2 api calls are async. This changes their behavior to be synchronous. other fixes: fixed stopEnabledAfterLoadStarted test to rely on webview being async. fixed some null pointer issues changed m_initData to class member Pick-to: 6.10 Task-number: QTBUG-75747 Change-Id: I979f1635cf049a90be3c8b134f61f5d6f594d971 Reviewed-by: Christian Strømme <christian.stromme@qt.io> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Implement WebView2 windows plugin for qt webviewMorteza Jamshidi2025-05-301-0/+631
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>