summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Create a RWHV delegate in coreAllan Sandfeld Jensen2022-06-091-542/+0
| | | | | | | | | | This is adapting the Quick code for shared use with widgets, and allows us to use it from QWebEnginePage. Pick-to: 6.4 Fixes: QTBUG-96377 Change-Id: I3f09c1a949eff86d80fbe6c513dc66e3f9f2f611 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Include moc filesAllan Sandfeld Jensen2022-05-311-0/+2
| | | | | | | | Faster to build and gives smaller binaries Fixes: QTBUG-103291 Change-Id: Iab52995e03c13a4c5b185750028c449a19d98d93 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Fix touch input for widget's delegate for html popupKirill Burtsev2022-05-121-0/+20
| | | | | | | | | | | | | | | | | | | | | Earlier fix cf8bc1899a introduced the logic, where all system synthesized mouse events are ignored. But after c56169f7a1 this is undesired since for widget with Qt::Popup flag touch input is ignored by QWidgetWindow, and input is expected to be delivered to popup as synthesized mouse event (either synthesized by Qt or for capabable devices by system). So allow system synthesized mouse events to let through for popup. Synthesis by Qt is suppress automatically for accepted touch event, it's only system event are still delivered unconditionally, so still ignore them for widgets impl. Global ignore in core is not needed, since QQuickWidget ignores system synthesized events unconditionally. Fixes: QTBUG-79254 Pick-to: 5.15 6.2 6.3 Change-Id: Ie8f55eb8b9c2677d8a98381effb3cb31d9388ac7 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Martin Negyokru <negyokru@inf.u-szeged.hu>
* Fix wrong assumption about focus in/out event deliveryMichal Klocek2022-03-181-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In 2947d79d assumption was made that we never get focus in event for popup reason. Unfortunately this is not true as simply creating window menu and switching between webengineview will trigger the issue. Moreover, focus in and out events with popup reason do not mean change of focus, as in qtbase: if (QWidget *fw = active_window->focusWidget()) { if (fw != QApplication::focusWidget()) { fw->setFocus(Qt::PopupFocusReason) } else { QFocusEvent e(QEvent::FocusIn, Qt::PopupFocusReason); QCoreApplication::sendEvent(fw, &e); } } Therefore it is safe to ignore focus in/out events with popup reason. Note that the fact that ASSERT got not triggered for context menu is due to another race condition issue in qquick event stack delivery. This commit amends 2947d79d8210a7ae4ce2bc02e058628e66011be3. Fixes: QTBUG-101706 Change-Id: I3e761fe5d8054aed72461eba7981c69755877d1b Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io> (cherry picked from commit 0625a1e16b8698d9c344548e4e929fb385b6a542) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix accumulation of compositor-observer bindings for skia-on-glKirill Burtsev2022-02-041-1/+0
| | | | | | | | | | | | | One of Compositor's derived classes, DisplaySkiaOutputDevice, was missing call to 'unbind' from its observer, leading to not releasing binding from global cache on destroy. Since unbind is done on destroy, remove all explicit calls to unbind from derived classes, and just do them in their base implementations. Ammends b117909825. Pick-to: 6.2 6.3 Change-Id: I75c909eaa22ca1946ad67aa5093a8ee268c3562b Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Fix not working web ui popup (html comboboxes) due to focus out eventsMichal Klocek2022-01-131-1/+6
| | | | | | | | | | | | | | | | | | | | | | Recent change in qtdeclarative 42d411e2e8 causes a focus out event being delivered in case of popups to "root" item of quickwidget. This is not expected as events are forwarded to parent "view" and loosing a focus will hint Blink to trigger a pop up close request. As a communication with a render process is asynchronous this creates several race conditions in our tests and the Blink's popup close request can close unexpectedly windows creating dangling pointers. Moreover, the focus in never gained back leaving the Blink's logic in a limbo state. Simply ignore a focus out event in case of popups. Fixes: QTBUG-99215 Pick-to: 6.3 6.2 6.2.3 Change-Id: I5ca6eda227101d4f19f15735e41f066cfd8ccea0 Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
* Disconnect safelyAllan Sandfeld Jensen2021-09-301-1/+3
| | | | | | Pick-to: 6.2 Change-Id: Ic1c25724ea2d6c2241ab2665703380002efae8c3 Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
* Enable no opengl buildsMichal Klocek2021-09-041-0/+5
| | | | | | | | | | | | | By mistake opengl was marked as required library, but should be just optional. Fix compilation issues. This should enable build on yet another coin node. Pick-to: 6.2 Change-Id: Id87404928e6b042d902fcfe0a7fed99a6806456f Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Various clean-ups around QWebEngineViewPeter Varga2021-07-131-2/+0
| | | | | | Pick-to: 6.2 Change-Id: I16f27054871f63526946101e07cb0dcf4aa3b390 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add WebEngineWidgets, WebEngineQuick modules cmake buildMichal Klocek2021-05-191-1/+1
| | | | | | | | | Fix some library dependencies and make proper header includes in core. Task-number: QTBUG-91760 Change-Id: I415361dd42ef2cc39716ce3f5f56e6e8556ac4c8 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Merge remote-tracking branch 'origin/5.15' into devAllan Sandfeld Jensen2021-02-171-3/+2
|\ | | | | | | Change-Id: Idee0142b0e33fdf8ca663f1ef1bcd8b932985043
| * Remove more leftovers of the old compositorAllan Sandfeld Jensen2021-02-081-12/+0
| | | | | | | | | | | | | | Also removes another private dependency Change-Id: Ie0a671c66f9aa49e7001c44e69bf94e11ab058a5 Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
* | Swap widgetCahgned with adapterClientChangedMichal Klocek2020-11-231-0/+8
| | | | | | | | | | | | | | | | This drops dependency on view delegate implementations in web contents adapter client. Change-Id: I73a0dda0a790b7afe3fa774b53db9aa263d48ef9 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Move page's view and widget bindings to viewMichal Klocek2020-11-201-1/+1
| | | | | | | | | | Change-Id: Ia60a1b864bb173bfd12a94ac4791477a88ea0842 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Update dependencies on 'dev' in qt/qtwebengineAllan Sandfeld Jensen2020-11-021-1/+1
| | | | | | | | | | Change-Id: I74c7293ebf5ace5bd07e3bf5455dd90bf4ed6380 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* | Fix compilation after fb96109b in declarativeMichal Klocek2020-09-161-2/+1
| | | | | | | | | | | | | | Use type safe native texture accessors. Change-Id: Ib362b975a51d8ba17231aed4e43ae23768511416 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Fix almost all deprecation warningsJüri Valdmann2020-08-131-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace QString::fromUtf16({const ushort * -> const char16_t}) QMap::{unite -> insert} Q{Hover,DragEnter,DragMove,Drop}Event::{posF() -> position()} Q{Hover,DragEnter,DragMove,Drop}Event::{pos() -> position().toPoint()} Q{DragEnter,Drop}Event::{mouseButtons -> buttons} Q{DragEnter,Drop}Event::{keyboardModifiers -> modifiers} QMouseEvent::{localPos -> position} QMouseEvent::{windowPos -> scenePosition} QMouseEvent::{screenPos -> globalPosition} These should all be just renames without any change in behavior (save for some floating point conversions). The one remaining issue concerns the deprecation of binary JSON in qtbase, which is recommended to be replaced with CBOR. Change-Id: I8f3b533242fe9a58c08c2b09ff5d0bdbbfa6dd17 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Remove setting surface format for qquickwidgetMichal Klocek2020-08-051-32/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | QQuickWidget uses QSGDefaultContext::defaultSurfaceFormat() in initialization, which is based on QSurfaceFormat::defaultFormat() Removed code was overriding format based on shared context format for some cases. However defaultFormat is always a requested format and not actual supported one by hardware. Since we always create share context simplify the logic and try to catch all the surface format related issues in QWebEngineCore::initialize() and abort. Change-Id: I940601b5cd873ab5273baa863aa4e7277be448a6 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Move macOS surface format check to initializeMichal Klocek2020-08-041-14/+0
| | | | | | | | | | | | Change-Id: I08171340c8b5de3b38f17c95a70e3a8931394057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* | Remove workaround for incorrect version of surface format macOSMichal Klocek2020-08-041-10/+0
| | | | | | | | | | | | | | | | This should be already fixed. Task-number: QTBUG-63180 Change-Id: I766cd67f83e3344c5072e0ed3bbf03be3ea35e22 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* | Delete copySurface method from RWHVQDelegateJüri Valdmann2020-07-151-9/+0
| | | | | | | | | | | | | | Not used anymore. Change-Id: I234012c9c611c0dce4d1d2f83e9222e60207f630 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Implement more Compositor methods for software modeJüri Valdmann2020-07-151-7/+4
| | | | | | | | | | | | | | | | Add implementations of devicePixelRatio, textureSize, hasAlphaChannel also for software mode. Rename textureSize to just size. Change-Id: I5c515e4fed3330e0ecbfc17e7ec092245a13e619 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* | Move scenegraph handling out of coreJüri Valdmann2020-07-061-29/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace Display{Producer,Consumer,FrameSink} with the new classes Compositor and Compositor::Observer. The Compositor subclasses are implemented by the OutputSurfaces, replacing DisplayProducer in this role. Unlike DisplayProducer, the new classes do not use QtQuick scenegraph types, but rather give access to the software QImage or OpenGL texture directly. The connection to the "other half" is simplified by replacing DisplayConsumer with Compositor::Observer, which is no longer implemented by RenderWidgetHostViewQt, but directly by its delegates in the quick and widgets libraries. RenderWidgetHostViewQt now only provides the delegate with a Compositor::Id which is used to connect the corresponding Compositor and Observer. The delegates are responsible for generating QtQuick scenegraph nodes from the information provided by the Compositor subclasses. Behavior with software and old OpenGL scenegraph backends is unchanged: both continue to work. As for the RHI scenegraph backend, the code here is correct but nonetheless not working: changes are needed in qtbase to make RHI use the global share context for its OpenGL context. Fixes: QTBUG-78682 Change-Id: I837da8860a18ec366ed33f6ecc44c147245e1101 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* | Adapt to newer dependenciesAllan Sandfeld Jensen2020-07-061-0/+1
| | | | | | | | | | | | Change-Id: I495880f56fbc10d8f332f26101f8a25c2a1c5631 Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* | Refactor RenderWidgetHostViewQtPeter Varga2020-06-171-0/+2
| | | | | | | | | | | | | | | | Make RenderWidgetHostViewQtDelegateClient class instantiable and remove its implementation from RenderWidgetHostViewQt. Change-Id: Idcad3a805defe8b910f418b91f14808b6dbf083b Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
* | Merge remote-tracking branch 'origin/5.15' into devAllan Sandfeld Jensen2020-05-151-2/+7
|\| | | | | | | | | | | | | Conflicts: src/pdf/quick/qquickpdfselection_p.h Change-Id: I6eec37a01347c2d47cbfc1114326dfc6b58719ff
| * Switch away from QT_NO_OPENGLAllan Sandfeld Jensen2020-05-111-1/+1
| | | | | | | | | | Change-Id: I310265dacc9b1c8d391e82b6adf52b70c037d9b9 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
| * Forward unhandled scroll eventsAllan Sandfeld Jensen2020-04-221-1/+6
| | | | | | | | | | | | | | | | Fixes a regression in webengine stealing all wheel events. Fixes: QTBUG-81322 Change-Id: I0176627f3e13d97f55162f70fc7a969f98f4f444 Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
* | Fix building dev with newer QtBaseAllan Sandfeld Jensen2020-04-241-1/+0
|/ | | | | Change-Id: I0d52e4f6684425cb15319760e0001bdb13846997 Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
* Invalidate accessible interfaces on destruction of view or pagePeter Varga2020-02-271-4/+18
| | | | | | | | | | | | | | | | | | | | | | | The RenderWidgetHostViewQtDelegate(Widget|Quick)Accessible interfaces are forwarding their queries to the WebEngineView. In case of widget, the view also forwards the query to the page. The accessible interfaces may outlive the view and page. The interfaces are not supposed to be used after the destruction of the underlying objects. Thus, set the RenderWidgetHostViewQtDelegate and WebEngineView accessible interfaces invalid if the corresponding pointers are null. Also fix querying the root accessible interface of the web page when the render frame host is not available. This fixes crash when QT_LOGGING_RULES="qt.accessibility.cache.debug=true" is set and logger tries to pretty-print QAccessibleInterfaces during destruction. Task-number: QTBUG-78284 Change-Id: If18af0605061fcd82d019d0042dbf1c9d3a910be Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
* Fix widget accessibility on macOSPeter Varga2020-01-241-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | macOS Accessibility queries the window for the focused accessibility element. The window forwards the query to the widget with active focus. This widget is the RWHVQtDelegateWidget if a web element is focused in QWebEngineView. Therefore, a QAccessibleWidget interface has been implemented for the RWHVQtDelegateWidget to forward the request to the QWebEngineView. The focused accessibility element expected to be returned by the QAccessibleInterface::focusChild() method. In case of the macOS accessibility backend, it is called by the accessibilityFocusedUIElement() NSAccessibility API function. It expects the focused web accessibility element otherwise VoiceOver won't focus properly. The focused web accessiblity element is looked up by the new BrowserAccessibilityQt::focusChild() method. RenderWidgetHostviewQtDelegateWidget::focusChild() and QWebengineViewAccessible::focusChild() methods have been also implemented to forward it. This patch depends on a focusChild() fix in qtbase: a132e02540 Fix QAccessibleWidget::focusChild() to return focused descendant Microsoft Narrator also uses focusChild() to query the current focused element when it starts but it is still functional without this fix. Task-number: QTBUG-78284 Task-number: QTBUG-81539 Change-Id: I3c4861e58622ccbb5046c60c4efcc19842400a88 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* Merge remote-tracking branch 'origin/5.13' into devAllan Sandfeld Jensen2019-07-241-9/+3
|\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/3rdparty src/core/core_chromium.pri tests/auto/quick/qmltests/BLACKLIST tests/auto/quick/qquickwebengineview/BLACKLIST tests/auto/widgets/qwebenginepage/BLACKLIST tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp tests/auto/widgets/qwebengineview/BLACKLIST Change-Id: I11b26f5eebde29c4c62247b90e11e3ae40789fe4
| * Merge remote-tracking branch 'origin/5.12' into 5.13Allan Sandfeld Jensen2019-07-101-9/+3
| |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf tests/auto/quick/qmltests/BLACKLIST tests/auto/quick/qquickwebengineview/BLACKLIST Change-Id: I29b68dec8692d0369a2dda56350ee62d3ad73e08
| | * Fully setup replaced QMouseDblClickEvent with source and flagsKirill Burtsev2019-07-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Not fully preserving properties causes event to not be considered synthesized by system and be forwarded into chromium. Receiving one single press event and no release event confuses input event_handler and triggers infinite loop and renderer process crash for pages with multiple nested iframes. Fixes: QTBUG-62106 Change-Id: Iabb8bff78fc3475923b4aa3209b720453a5b6ce5 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| | * Do not forward key-events on QQuickItem levelAllan Sandfeld Jensen2019-06-141-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We forward the real events earlier, anything coming in at QQuickItem level is synthetic. Fixes: QTBUG-76268 Change-Id: I067f8f94cc5e07bb0cd500b5ae9b9d6bbe66310b Reviewed-by: Michal Klocek <michal.klocek@qt.io>
| | * Accept handled eventsAllan Sandfeld Jensen2019-06-141-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | If we let tablet events pass through without handling it, it will come back to haunt us as a mouse event. Fixes: QTBUG-76347 Change-Id: I93297f543620350db0329fe993d18a04e33c7d18 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* | | Remove usage of QSGInternalImageNodeAlexandru Croitor2019-07-231-6/+0
|/ / | | | | | | | | | | | | | | | | | | | | | | | | Since 1f01b44d20471a7f4a5029a4c0049e8296749fef landed in qtdeclarative, the internal API createInternalImageNode() takes one required argument. However due to the following commit in qtdeclarative cf24651b550752fbf9bd3afb02aee5d722164658 we no longer need to use internal image nodes. Remove their usage, and use the regular image nodes instead. Change-Id: Ie0cc2a2c1e365bb7fae564ad3c9d880c3a0bf0d9 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Introduce RenderWidgetHostViewQtDelegateQuick::windowGeometry()Allan Sandfeld Jensen2019-05-071-0/+7
| | | | | | | | | | | | | | Leave it up to hostview delegate to report window geometry. Change-Id: I19a4b911aa493fbc6f66c6169e7fbbb7bf674217 Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
* | Remove our last uses of Q_DECL_OVERRIDE and Q_NULLPTRAllan Sandfeld Jensen2019-04-031-1/+1
| | | | | | | | | | Change-Id: I8806a3fb466006f14cf92f17510cdea8b50e8345 Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Allan Sandfeld Jensen2019-02-151-0/+1
|\| | | | | | | Change-Id: I0822fb8a10945a252cfd1aacaf0b6d9902cc8831
| * Fix hide/show of delegate widgetMichal Klocek2019-01-091-0/+1
| | | | | | | | | | | | | | | | | | | | For QQuickWidget::show does not work correctly if widget was not hidden. Fixes: QTBUG-72299 Change-Id: I12fba8c18cbf3f847d30de8b057a50e6d9917fde Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* | Simplify visual properties handling in RenderWidgetHostViewQtJüri Valdmann2019-02-131-19/+5
| | | | | | | | | | | | | | | | | | Replace separate notifications from delegate with one combined notification and change detection. Store view rect, window rect and screen info in RWHVQ to ensure the properties are in a consistent state. Change-Id: Icef8a17e72882f56db249f5553b6cf554e1f91dc Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devMichael Brüning2018-12-181-7/+2
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: src/core/compositor/delegated_frame_node.cpp src/core/profile_adapter.cpp src/core/profile_io_data_qt.cpp src/webengine/api/qquickwebengineprofile.cpp src/webenginewidgets/api/qwebengineprofile.cpp Change-Id: I35ec8480e758bbcb6c5942a5401cb1b6dbdcc428
| * Fix input method updatePeter Varga2018-11-291-7/+2
| | | | | | | | | | | | | | | | | | | | | | | | Do the update after the input properties are changed in RenderWidgetHostViewQt. Moreover, always update on input state changes, like cursor position, surrounding text and text selection (see QInputMethod::update() docs). Task-number: QTBUG-70158 Task-number: QTBUG-71995 Change-Id: I9d5c6e299826fbe66f5285b648013ef79aabed9b Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Merge branch '5.12' into devAllan Sandfeld Jensen2018-11-161-13/+18
|\| | | | | | | | | | | | | | | Conflicts: src/core/compositor/compositor.cpp src/core/compositor/compositor.h Change-Id: I8a4d73d728d93d95e499849f8778cc88dda2105e
| * Merge remote-tracking branch 'origin/5.12.0' into 5.12Allan Sandfeld Jensen2018-11-131-13/+9
| |\ | | | | | | | | | Change-Id: I05a9474efe6b00cc18ad6e33e19a1eb1cbbe8afe
| | * Fix opened webviews closing when opener closesAllan Sandfeld Jensen2018-11-081-13/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | We apparently can't not rely on getting a QEvent::ParentAboutToChange event before every QEvent::ParentChange event. Change-Id: Ie55b51f8c75623bc4f1a943367fb0070078df55b Fixes: QTBUG-71565 Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
| * | Implement CopyFromSurfaceAllan Sandfeld Jensen2018-11-081-0/+9
| |/ | | | | | | | | | | | | Means we can get screenshots in devtools. Change-Id: I7b50d6ac5a54d236573bcf5f58ae872bd50dccad Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
* / Fix GPU compositing (and WebGL) to work with ANGLE on WindowsAlexandru Croitor2018-11-121-16/+22
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Given the changes that implement GPU compositing on the UI thread (and thus only a single thread accesses all OpenGL contexts) it is now possible to enable GPU compositing to work together with ANGLE, which did not work before due to ANGLE being thread-unsafe. This requires a couple of things: - Enable GPU compositing via kInProcessGPU switch when using ANGLE - A small fix in GLContextHelper::getEGLDisplay() to return a correct "egldisplay "handle - Improved logic when to pass the kDisableES3GLContext switch depending on which OpenGL ES version is requested (2 or 3) - Adjustments in RenderWidgetHostViewQtDelegateWidget() to set up a correct surface format which matches the shared context OpenGL ES major version - A recent enough version of ANGLE (due to bugs calling glTexImage2D with an unsupported internal texture format for GL_DEPTH_COMPONENT, from inside gpu::gles2::IsWebGLDrawBuffersSupported) By default if no special QSurfaceFormat is set as the default surface format, using ANGLE will create an OpenGL ES 2 context, and will thus provide support only for WebGL 1. To enable OpenGL ES 3 / WebGL 2 support, make sure to set a default QSurfaceFormat with major version set to 3, and enable ANGLE either via QT_OPENGL=angle or QGuiApplication::setAttribute(Qt::AA_UseOpenGLES). The default surface format must be set before the Q*App instance is created. Manual test "webgl" added. Task-number: QTBUG-53908 Task-number: QTBUG-55604 Task-number: QTBUG-69236 Change-Id: Ic31dfdff1ca22d4689db5cf64126d7d12790aa76 Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Stop showing speculative framesJüri Valdmann2018-10-291-27/+32
| | | | | | | | | | | | | | | | | | | | | Chromium creates "speculative" frames (RenderFrameHost and company) for pending cross-process navigations (and maybe other navigations too). For example, a redirect from http://qt.io to https://qt.io will trigger this, as described in the bug report. These speculative frames are loading in the background and only shown once they are officially ready (as decided by the RenderFrameHostManager and signaled to WebContentsObserver::RenderViewHostChanged). At least, this is how it's supposed to work and how it works in Chrome. In WebEngine, however, we actually show these speculative frames as soon as they are created and before they are ready. This runs into the problem that the if the speculative frame is dropped (instead of committed), then Chromium will not ask us to re-show the old frame (since it hasn't actually asked to us to show the new frame, it naturally assumes we are still showing the old one). Fixes: QTBUG-68727 Change-Id: I9d53035ce60e3a002d5412d4473d940a32644b5d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>