From df84dec6bc90c087aab4a2b9b4bfe6f129584ebb Mon Sep 17 00:00:00 2001 From: Michal Klocek Date: Tue, 4 Jun 2019 12:48:10 +0200 Subject: Use Chromium linker flags Add all Chromium linker flags by default and explicitly blacklist some of them. Change-Id: Icb461838f71c8511fe5730d4601eb20bc2aa135c Reviewed-by: Allan Sandfeld Jensen --- src/core/core_module.pro | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/core/core_module.pro b/src/core/core_module.pro index 9bd56f9de..7bcd916a1 100644 --- a/src/core/core_module.pro +++ b/src/core/core_module.pro @@ -42,11 +42,15 @@ LIBS_PRIVATE += $$NINJA_LIB_DIRS $$NINJA_LIBS unix:qtConfig(webengine-noexecstack): \ QMAKE_LFLAGS += -Wl,-z,noexecstack linux { - QMAKE_LFLAGS += -Wl,--gc-sections -Wl,-O1 -Wl,-z,now - # Embedded address sanitizer symbols are undefined and are picked up by the dynamic link loader - # at runtime. Thus we do not to pass the linker flag below, because the linker would complain - # about the undefined sanitizer symbols. - !sanitizer: QMAKE_LFLAGS += -Wl,-z,defs + # add chromium flags + for(flag, NINJA_LFLAGS) { + # filter out some flags + !contains(flag, .*noexecstack$): \ + !contains(flag, .*as-needed$): \ + !contains(flag, ^-B.*): \ + !contains(flag, ^-fuse-ld.*): \ + QMAKE_LFLAGS += $$flag + } } else { QMAKE_LFLAGS += $$NINJA_LFLAGS } -- cgit v1.2.3 From b78d307f741e6fed23ee4b3326927b6f49d5f172 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Fri, 14 Jun 2019 15:44:40 +0200 Subject: Accept handled events 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 --- src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp index 55bdb3a62..90ef3c1ee 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp @@ -487,6 +487,8 @@ bool RenderWidgetHostViewQtDelegateWidget::event(QEvent *event) if (!handled) return QQuickWidget::event(event); + // Most events are accepted by default, but tablet events are not: + event->accept(); return true; } -- cgit v1.2.3 From 47e69dd008dd7e55dc035063dc7293a19971a0bb Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Fri, 14 Jun 2019 16:01:07 +0200 Subject: Do not forward key-events on QQuickItem level We forward the real events earlier, anything coming in at QQuickItem level is synthetic. Fixes: QTBUG-76268 Change-Id: I067f8f94cc5e07bb0cd500b5ae9b9d6bbe66310b Reviewed-by: Michal Klocek --- .../render_widget_host_view_qt_delegate_widget.cpp | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp index 90ef3c1ee..27adef919 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp @@ -77,14 +77,6 @@ protected: { m_client->forwardEvent(event); } - void keyPressEvent(QKeyEvent *event) override - { - m_client->forwardEvent(event); - } - void keyReleaseEvent(QKeyEvent *event) override - { - m_client->forwardEvent(event); - } void inputMethodEvent(QInputMethodEvent *event) override { m_client->forwardEvent(event); -- cgit v1.2.3 From 3b04c83620a465a4f8876413c37696fbbc3a23d6 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Fri, 7 Jun 2019 11:14:00 +0200 Subject: Set custom user-agent manually on new windows Chromium forgets to set ShouldOverrideUserAgentInNewTabs(), so we need to manually set the override. Fixes: QTBUG-76249 Change-Id: Id240ee525dacec3cd8389aca058a61d3af62b00a Reviewed-by: Michal Klocek --- src/core/web_contents_delegate_qt.cpp | 5 ++ .../widgets/qwebenginepage/tst_qwebenginepage.cpp | 65 ++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp index 95a49f40a..83f68b68d 100644 --- a/src/core/web_contents_delegate_qt.cpp +++ b/src/core/web_contents_delegate_qt.cpp @@ -225,6 +225,11 @@ void WebContentsDelegateQt::AddNewContents(content::WebContents* source, std::un { Q_UNUSED(source) QSharedPointer newAdapter = createWindow(std::move(new_contents), disposition, initial_pos, user_gesture); + // Chromium can forget to pass user-agent override settings to new windows (see QTBUG-61774 and QTBUG-76249), + // so set it here. Note the actual value doesn't really matter here. Only the second value does, but we try + // to give the correct user-agent anyway. + if (newAdapter) + newAdapter->webContents()->SetUserAgentOverride(newAdapter->profileAdapter()->httpUserAgent().toStdString(), true); if (newAdapter && !newAdapter->isInitialized()) newAdapter->loadDefault(); if (was_blocked) diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp index d73c8e80a..bfe94ba4e 100644 --- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp +++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp @@ -231,6 +231,8 @@ private Q_SLOTS: void editActionsWithInitialFocus(); void editActionsWithFocusOnIframe(); + void customUserAgentInNewTab(); + private: static QPoint elementCenter(QWebEnginePage *page, const QString &id); @@ -4594,6 +4596,69 @@ void tst_QWebEnginePage::editActionsWithFocusOnIframe() QCOMPARE(page->selectedText(), QStringLiteral("inner")); } +void tst_QWebEnginePage::customUserAgentInNewTab() +{ + HttpServer server; + QByteArray lastUserAgent; + connect(&server, &HttpServer::newRequest, [&](HttpReqRep *rr) { + QCOMPARE(rr->requestMethod(), "GET"); + lastUserAgent = rr->requestHeader("user-agent"); + rr->setResponseBody(QByteArrayLiteral("Test")); + rr->sendResponse(); + }); + QVERIFY(server.start()); + + class Page : public QWebEnginePage { + public: + QWebEngineProfile *targetProfile = nullptr; + QScopedPointer newPage; + Page(QWebEngineProfile *profile) : QWebEnginePage(profile) {} + private: + QWebEnginePage *createWindow(WebWindowType) override + { + newPage.reset(new QWebEnginePage(targetProfile ? targetProfile : profile(), nullptr)); + return newPage.data(); + } + }; + QWebEngineProfile profile1, profile2; + profile1.setHttpUserAgent(QStringLiteral("custom 1")); + profile2.setHttpUserAgent(QStringLiteral("custom 2")); + Page page(&profile1); + QWebEngineView view; + view.resize(500, 500); + view.setPage(&page); + view.show(); + QVERIFY(QTest::qWaitForWindowExposed(&view)); + QSignalSpy spy(&page, &QWebEnginePage::loadFinished); + + // First check we can get the user-agent passed through normally + page.setHtml(QString("link")); + QTRY_COMPARE(spy.count(), 1); + QVERIFY(spy.takeFirst().value(0).toBool()); + QCOMPARE(evaluateJavaScriptSync(&page, QStringLiteral("navigator.userAgent")).toString(), profile1.httpUserAgent()); + QTest::mouseClick(view.focusProxy(), Qt::LeftButton, 0, elementCenter(&page, "link")); + QTRY_VERIFY(page.newPage); + QTRY_VERIFY(!lastUserAgent.isEmpty()); + QCOMPARE(lastUserAgent, profile1.httpUserAgent().toUtf8()); + + // Now check we can get the new user-agent of the profile + page.newPage.reset(); + page.targetProfile = &profile2; + spy.clear(); + lastUserAgent = { }; + page.setHtml(QString("link")); + QTRY_COMPARE(spy.count(), 1); + QVERIFY(spy.takeFirst().value(0).toBool()); + QTest::mouseClick(view.focusProxy(), Qt::LeftButton, 0, elementCenter(&page, "link")); + QTRY_VERIFY(page.newPage); + QTRY_VERIFY(!lastUserAgent.isEmpty()); + QCOMPARE(lastUserAgent, profile2.httpUserAgent().toUtf8()); +} + static QByteArrayList params = {QByteArrayLiteral("--use-fake-device-for-media-stream")}; W_QTEST_MAIN(tst_QWebEnginePage, params) -- cgit v1.2.3 From 1f02df146c30adab0a9dffa0587afde1aa6a48b9 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 1 Jul 2019 16:02:44 +0200 Subject: Bump version Change-Id: I1911b4094df4622a67eaeb9c638efc20cbf1a8b3 --- .qmake.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.qmake.conf b/.qmake.conf index 18329bbf8..65f02f1b4 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -5,4 +5,4 @@ QTWEBENGINE_OUT_ROOT = $$shadowed($$PWD) load(qt_build_config) CONFIG += warning_clean -MODULE_VERSION = 5.12.4 +MODULE_VERSION = 5.12.5 -- cgit v1.2.3 From 16a6b2dc39f0022cddbc9be48a0ae8564f7a53a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= Date: Wed, 3 Jul 2019 11:53:07 +0200 Subject: Unset global share context pointer on deletion Fixes: QTBUG-76828 Change-Id: I43eae3c04a23abe118f51c69742772ddb38646f0 Reviewed-by: Allan Sandfeld Jensen --- src/core/api/qtwebenginecoreglobal.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/api/qtwebenginecoreglobal.cpp b/src/core/api/qtwebenginecoreglobal.cpp index a415ade92..5a634641b 100644 --- a/src/core/api/qtwebenginecoreglobal.cpp +++ b/src/core/api/qtwebenginecoreglobal.cpp @@ -79,6 +79,8 @@ static QOpenGLContext *shareContext; static void deleteShareContext() { + if (qt_gl_global_share_context() == shareContext) + qt_gl_set_global_share_context(nullptr); delete shareContext; shareContext = 0; } -- cgit v1.2.3 From fafc387a32ac4b06709c0845c7f4cfd5164c1206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= Date: Wed, 3 Jul 2019 08:56:39 +0200 Subject: Bump timeout in tst_InspectorServer::openRemoteDebuggingSession Flaky on Windows 10. Change-Id: Idaf73ccaf29831010e84397ae722dbe54a2de9bb Reviewed-by: Allan Sandfeld Jensen --- tests/auto/quick/inspectorserver/tst_inspectorserver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/quick/inspectorserver/tst_inspectorserver.cpp b/tests/auto/quick/inspectorserver/tst_inspectorserver.cpp index 8e23e86e8..922c7769e 100644 --- a/tests/auto/quick/inspectorserver/tst_inspectorserver.cpp +++ b/tests/auto/quick/inspectorserver/tst_inspectorserver.cpp @@ -167,7 +167,7 @@ void tst_InspectorServer::openRemoteDebuggingSession() // - The page list didn't return a valid inspector URL // - Or the front-end couldn't be loaded through the inspector HTTP server // - Or the web socket connection couldn't be established between the front-end and the page through the inspector server - QTRY_VERIFY(inspectorWebView->title().startsWith("DevTools -")); + QTRY_VERIFY_WITH_TIMEOUT(inspectorWebView->title().startsWith("DevTools -"), 20000); } QTEST_MAIN(tst_InspectorServer) -- cgit v1.2.3 From 9bf361eddea701a65ea2a26f3d598ec4d4a6e22c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= Date: Mon, 8 Jul 2019 10:01:16 +0200 Subject: Un-blacklist some passing tests Remove from the blacklist some tests which, according to Grafana, have had no failures in the last 90 days on 5.12 branch. Change-Id: I3f174c82b5644d74b70fffa3856ae79f8c9893f8 Reviewed-by: Allan Sandfeld Jensen --- tests/auto/quick/qmltests/BLACKLIST | 9 --------- tests/auto/quick/qquickwebengineview/BLACKLIST | 11 ----------- tests/auto/widgets/qwebenginepage/BLACKLIST | 3 --- tests/auto/widgets/qwebengineview/BLACKLIST | 3 --- 4 files changed, 26 deletions(-) diff --git a/tests/auto/quick/qmltests/BLACKLIST b/tests/auto/quick/qmltests/BLACKLIST index dfafbaea4..083c15984 100644 --- a/tests/auto/quick/qmltests/BLACKLIST +++ b/tests/auto/quick/qmltests/BLACKLIST @@ -1,9 +1,3 @@ -[WebViewGeopermission::test_deniedGeolocationByUser] -osx - -[WebViewGeopermission::test_geoPermissionRequest] -osx - [WebEngineViewSingleFileUpload::test_acceptDirectory] * @@ -13,8 +7,5 @@ osx [WebEngineViewSingleFileUpload::test_acceptSingleFileSelection] * -[WebViewFindText::test_findTextInterruptedByLoad] -* - [WebEngineViewSource::test_viewSourceURL] * diff --git a/tests/auto/quick/qquickwebengineview/BLACKLIST b/tests/auto/quick/qquickwebengineview/BLACKLIST index 76cb18c1e..5f46fa47e 100644 --- a/tests/auto/quick/qquickwebengineview/BLACKLIST +++ b/tests/auto/quick/qquickwebengineview/BLACKLIST @@ -1,14 +1,3 @@ -[transparentWebEngineViews] -windows - -[inputEventForwardingDisabledWhenActiveFocusOnPressDisabled] -* - -[transparentWebEngineViews] -* - -[basicRenderingSanity] -* [javascriptClipboard:default] opensuse-leap [javascriptClipboard:canPaste] diff --git a/tests/auto/widgets/qwebenginepage/BLACKLIST b/tests/auto/widgets/qwebenginepage/BLACKLIST index 228efd61c..1453f6e95 100644 --- a/tests/auto/widgets/qwebenginepage/BLACKLIST +++ b/tests/auto/widgets/qwebenginepage/BLACKLIST @@ -10,9 +10,6 @@ osx [mouseMovementProperties] windows -[getUserMediaRequest] -windows - [getUserMediaRequestDesktopVideoManyPages] windows diff --git a/tests/auto/widgets/qwebengineview/BLACKLIST b/tests/auto/widgets/qwebengineview/BLACKLIST index 7c86a72d6..9087067f5 100644 --- a/tests/auto/widgets/qwebengineview/BLACKLIST +++ b/tests/auto/widgets/qwebengineview/BLACKLIST @@ -1,6 +1,3 @@ -[doNotSendMouseKeyboardEventsWhenDisabled] -windows - [microFocusCoordinates] osx -- cgit v1.2.3 From d3915634c392f8a350e5ef112f740d4d353daaac Mon Sep 17 00:00:00 2001 From: Kirill Burtsev Date: Wed, 3 Jul 2019 18:36:40 +0200 Subject: Fully setup replaced QMouseDblClickEvent with source and flags 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 --- src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp index 27adef919..18f1e97d0 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp @@ -471,7 +471,7 @@ bool RenderWidgetHostViewQtDelegateWidget::event(QEvent *event) // where we can simply ignore the DblClick event. QMouseEvent *dblClick = static_cast(event); QMouseEvent press(QEvent::MouseButtonPress, dblClick->localPos(), dblClick->windowPos(), dblClick->screenPos(), - dblClick->button(), dblClick->buttons(), dblClick->modifiers()); + dblClick->button(), dblClick->buttons(), dblClick->modifiers(), dblClick->source()); press.setTimestamp(dblClick->timestamp()); handled = m_client->forwardEvent(&press); } else -- cgit v1.2.3 From d35cd072c3f56aa285871a151adc30d9d81f3ea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= Date: Tue, 9 Jul 2019 10:41:01 +0200 Subject: Wait for SelectAll to be enabled in tst_QWebEnginePage::findText Fixes flaky m_view->hasSelection() assertion. Change-Id: Idba17916c38ac76b8002e30bab08d7f9e1064b2a Reviewed-by: Kirill Burtsev Reviewed-by: Peter Varga --- tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp index bfe94ba4e..f27dae3c7 100644 --- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp +++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp @@ -1807,6 +1807,7 @@ void tst_QWebEnginePage::findText() QTRY_COMPARE(loadSpy.count(), 1); // Select whole page contents. + QTRY_VERIFY(m_view->page()->action(QWebEnginePage::SelectAll)->isEnabled()); m_view->page()->triggerAction(QWebEnginePage::SelectAll); QTRY_COMPARE(m_view->hasSelection(), true); -- cgit v1.2.3 From bb2a0bbd71019c44a38ba8608f8a7b3cd2106f7e Mon Sep 17 00:00:00 2001 From: Michal Klocek Date: Fri, 12 Jul 2019 11:17:40 +0200 Subject: Fix detection of ozone x11 support Fixes: QTBUG-77011 Change-Id: I0136b360c74970b912124f6f308f598c80eceba3 Reviewed-by: Allan Sandfeld Jensen --- mkspecs/features/configure.prf | 10 +++------- mkspecs/features/functions.prf | 8 -------- src/core/config/linux.pri | 2 +- src/core/configure.json | 20 ++++++++++++++++++-- src/core/core_chromium.pri | 2 +- src/core/ozone/surface_factory_qt.cpp | 4 ++-- 6 files changed, 25 insertions(+), 21 deletions(-) diff --git a/mkspecs/features/configure.prf b/mkspecs/features/configure.prf index 42e5b40c9..e407ede17 100644 --- a/mkspecs/features/configure.prf +++ b/mkspecs/features/configure.prf @@ -94,13 +94,9 @@ defineTest(runConfigure) { } } - !qtConfig(webengine-embedded-build): qtConfig(xcb) { - for(package, $$list("libdrm xcomposite xcursor xi xtst")) { - !qtConfig(webengine-system-$$package) { - skipBuild("A suitable version of $$package could not be found.") - return(false) - } - } + !qtConfig(webengine-embedded-build): qtConfig(xcb) : !qtConfig(webengine-ozone-x11) { + skipBuild("Could not find all necessary libraries for qpa-xcb support") + return(false) } } } diff --git a/mkspecs/features/functions.prf b/mkspecs/features/functions.prf index 9efa8958f..d3eda85b2 100644 --- a/mkspecs/features/functions.prf +++ b/mkspecs/features/functions.prf @@ -121,11 +121,3 @@ defineReplace(pkgConfigHostExecutable) { return($$system_quote($$system_path($$wrapper_name))) } -defineTest(hasX11Dependencies) { - for(package, $$list("libdrm xcomposite xcursor xi xtst")) { - !qtConfig(webengine-system-$$package) { - return(false) - } - } - return(true) -} diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri index e75764239..eaecab3c9 100644 --- a/src/core/config/linux.pri +++ b/src/core/config/linux.pri @@ -175,7 +175,7 @@ host_build { } !packagesExist(libpci): gn_args += use_libpci=false - qtConfig(webengine-system-x11): hasX11Dependencies() { + qtConfig(webengine-ozone-x11) { gn_args += ozone_platform_x11=true packagesExist(xscrnsaver): gn_args += use_xscrnsaver=true } diff --git a/src/core/configure.json b/src/core/configure.json index 6dccd1644..9e4eb62ac 100644 --- a/src/core/configure.json +++ b/src/core/configure.json @@ -642,6 +642,17 @@ "condition": "config.unix && libs.webengine-x11", "output": [ "privateFeature" ] }, + "webengine-ozone-x11" : { + "label": "Support qpa-xcb", + "condition": "config.unix + && features.webengine-system-x11 + && features.webengine-system-libdrm + && features.webengine-system-xcomposite + && features.webengine-system-xcursor + && features.webengine-system-xi + && features.webengine-system-xtst", + "output": [ "privateFeature" ] + }, "webengine-sanitizer" : { "label": "Sanitizer", "autoDetect": "config.sanitizer && tests.webengine-sanitizer", @@ -730,6 +741,11 @@ "webengine-webchannel", "webengine-v8-snapshot", "webengine-kerberos", + { + "type": "feature", + "args": "webengine-ozone-x11", + "condition": "config.unix" + }, { "type": "feature", "args": "webengine-v8-snapshot-support", @@ -802,8 +818,7 @@ "webengine-system-png", "webengine-system-jpeg", "webengine-system-harfbuzz", - "webengine-system-freetype", - "webengine-system-x11" + "webengine-system-freetype" ] }, { @@ -821,6 +836,7 @@ "section": "Required system libraries for qpa-xcb", "condition": "config.unix && !config.macos", "entries": [ + "webengine-system-x11", "webengine-system-libdrm", "webengine-system-xcomposite", "webengine-system-xcursor", diff --git a/src/core/core_chromium.pri b/src/core/core_chromium.pri index 60eaf1f06..5566dbef7 100644 --- a/src/core/core_chromium.pri +++ b/src/core/core_chromium.pri @@ -219,7 +219,7 @@ HEADERS = \ web_event_factory.h -qtConfig(webengine-system-x11): hasX11Dependencies() { +qtConfig(webengine-ozone-x11) { HEADERS += ozone/gl_ozone_glx_qt.h \ ozone/gl_surface_glx_qt.h SOURCES += ozone/gl_surface_glx_qt.cpp \ diff --git a/src/core/ozone/surface_factory_qt.cpp b/src/core/ozone/surface_factory_qt.cpp index 9570852c9..f69520b70 100644 --- a/src/core/ozone/surface_factory_qt.cpp +++ b/src/core/ozone/surface_factory_qt.cpp @@ -41,7 +41,7 @@ #include "qtwebenginecoreglobal_p.h" #include "gl_context_qt.h" #include "gl_ozone_egl_qt.h" -#if QT_CONFIG(webengine_system_x11) +#if QT_CONFIG(webengine_ozone_x11) #include "gl_ozone_glx_qt.h" #endif @@ -58,7 +58,7 @@ namespace QtWebEngineCore { SurfaceFactoryQt::SurfaceFactoryQt() { Q_ASSERT(qApp); -#if QT_CONFIG(webengine_system_x11) +#if QT_CONFIG(webengine_ozone_x11) if (GLContextHelper::getGlXConfig()) { m_impl = gl::kGLImplementationDesktopGL; m_ozone.reset(new ui::GLOzoneGLXQt()); -- cgit v1.2.3 From ddcd947cd36ee282bf8ba4581fcf622c1b589df4 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 12 Jul 2019 14:26:31 +0200 Subject: Doc: Update requirements for building on Windows Visual Studio 2017 version 15.8 or later is now required. Task-number: QTBUG-76606 Change-Id: Ib115336acc341d799c7ff0f08e89abc56bc6c6d9 Reviewed-by: Kai Koehne --- src/webengine/doc/src/qtwebengine-platform-notes.qdoc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/webengine/doc/src/qtwebengine-platform-notes.qdoc b/src/webengine/doc/src/qtwebengine-platform-notes.qdoc index fefb47795..5b7d750ff 100644 --- a/src/webengine/doc/src/qtwebengine-platform-notes.qdoc +++ b/src/webengine/doc/src/qtwebengine-platform-notes.qdoc @@ -69,7 +69,12 @@ \section2 Windows - On Windows, Visual Studio 2017 and Windows 10 SDK are required. + On Windows, the following additional tools are required: + + \list + \li Visual Studio 2017 version 15.8 or later + \li Windows 10 SDK + \endlist \QWE can only be built on 64-bit Windows, with a x64-bit toolchain. For building \QWE for x86 applications, you need to configure -- cgit v1.2.3 From 2a0677ec1d3f9e849eb61ec99c5682cf0b87f4b9 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Fri, 12 Jul 2019 14:16:16 +0200 Subject: If Qt is configured with ccache feature pass that along to GN This will set the cc_wrapper to ccache when running GN, which in turn will prefix all compiler calls with ccache. This allows a nice way of using ccache and icecream on macOS. Change-Id: I19ca1261aa8ebc4aaf7f8c34b3cb363baa29de01 Reviewed-by: Allan Sandfeld Jensen --- src/core/config/common.pri | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/config/common.pri b/src/core/config/common.pri index c8c3d55f6..42cf445df 100644 --- a/src/core/config/common.pri +++ b/src/core/config/common.pri @@ -114,3 +114,7 @@ qtConfig(webengine-kerberos) { } !msvc: gn_args += enable_iterator_debugging=false + +ccache { + gn_args += cc_wrapper=\"ccache\" +} -- cgit v1.2.3 From 49d4da10920abbe46931e163e3b3d98614cad584 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Tue, 9 Jul 2019 13:05:06 +0200 Subject: Make enabling full debug information easier Avoids asking customers to edit source files or add CONFIG to qmake on the command line to enable full debug information. Change-Id: Id58388565df88442e74e02687eb3189136e998f3 Reviewed-by: Alexandru Croitor --- src/core/configure.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/core/configure.json b/src/core/configure.json index 9e4eb62ac..b9c920444 100644 --- a/src/core/configure.json +++ b/src/core/configure.json @@ -11,6 +11,7 @@ "options": { "webengine-alsa": "boolean", "webengine-embedded-build": "boolean", + "webengine-full-debug-info": "boolean", "webengine-icu": { "type": "enum", "name": "webengine-system-icu", "values": { "system": "yes", "qt": "no" } }, "webengine-ffmpeg": { "type": "enum", "name": "webengine-system-ffmpeg", "values": { "system": "yes", "qt": "no" } }, "webengine-opus": { "type": "enum", "name": "webengine-system-opus", "values": { "system": "yes", "qt": "no" } }, @@ -675,6 +676,16 @@ "condition": "config.linux && features.webengine-embedded-build && arch.arm && tests.webengine-arm-thumb", "output": [ "privateFeature" ] }, + "webengine-full-debug-info": { + "label": "Full debug information", + "purpose": "Enables debug information for Blink and V8.", + "autoDetect": false, + "condition": "config.debug || features.debug_and_release || features.force_debug_info", + "output": [ + { "type": "privateConfig", "name": "v8base_debug" }, + { "type": "privateConfig", "name": "webcore_debug" } + ] + }, "webengine-noexecstack": { "label": "linker supports -z noexecstack", "condition": "config.unix && tests.webengine-noexecstack", @@ -730,6 +741,7 @@ "section": "Qt WebEngine", "entries": [ "webengine-embedded-build", + "webengine-full-debug-info", "webengine-pepper-plugins", "webengine-printing-and-pdf", "webengine-proprietary-codecs", -- cgit v1.2.3 From a2e47fa8c90be25407268434f60114892c9e500a Mon Sep 17 00:00:00 2001 From: Michal Klocek Date: Wed, 19 Jun 2019 11:26:42 +0200 Subject: Do not proceed with uninitialized resources QRC files can be optimized with CONFIG+=qtquickcompiler and removed, in that case 'size' of resource is zero. Do not process 'empty' resources. Throw warning. Fixes: QTBUG-76403 Change-Id: If21ff698e7985f82e6456500d4d24cb366cff012 Reviewed-by: Kai Koehne --- src/core/net/url_request_qrc_job_qt.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/net/url_request_qrc_job_qt.cpp b/src/core/net/url_request_qrc_job_qt.cpp index a2712653d..4ac45e7c8 100644 --- a/src/core/net/url_request_qrc_job_qt.cpp +++ b/src/core/net/url_request_qrc_job_qt.cpp @@ -120,14 +120,14 @@ void URLRequestQrcJobQt::startGetHead() QMimeType mimeType = mimeDatabase.mimeTypeForFile(qrcFileInfo); m_mimeType = mimeType.name().toStdString(); // Open file - if (m_file.open(QIODevice::ReadOnly)) { + if (m_file.open(QIODevice::ReadOnly) && m_file.size() > 0) { m_remainingBytes = m_file.size(); set_expected_content_size(m_remainingBytes); // Notify that the headers are complete NotifyHeadersComplete(); - } else { - NotifyStartError(URLRequestStatus(URLRequestStatus::FAILED, ERR_INVALID_URL)); + return; } + qWarning("Resource %s not found or is empty", qUtf8Printable(qrcFilePath)); + NotifyStartError(URLRequestStatus(URLRequestStatus::FAILED, ERR_INVALID_URL)); } - } // namespace QtWebEngineCore -- cgit v1.2.3 From b7054e3dc8cbe3dc4583dd75463aac11142d5643 Mon Sep 17 00:00:00 2001 From: Kirill Burtsev Date: Thu, 11 Jul 2019 16:23:49 +0200 Subject: Fix spellcheck test flaky failure with misspelled word missing Work is done asynchronously by chromium SpellChecker object. Therefore there is no guarantee that on ShowContextMenu event for WebContents there will be a result with misspelled word. Change-Id: I2978ed99e4c14f0a7d9086853c5218f82ea1ab60 Reviewed-by: Michal Klocek --- .../widgets/spellchecking/tst_spellchecking.cpp | 43 ++++++++++++++++++---- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/tests/auto/widgets/spellchecking/tst_spellchecking.cpp b/tests/auto/widgets/spellchecking/tst_spellchecking.cpp index b6582083d..d02fc78b9 100644 --- a/tests/auto/widgets/spellchecking/tst_spellchecking.cpp +++ b/tests/auto/widgets/spellchecking/tst_spellchecking.cpp @@ -174,14 +174,41 @@ void tst_Spellchecking::spellcheck() QString result = evaluateJavaScriptSync(m_view->page(), "text();").toString(); QVERIFY(result == text); - // open menu on misspelled word - m_view->activateMenu(m_view->focusWidget(), rect.center()); - QSignalSpy spyMenuReady(m_view, &WebView::menuReady); - QVERIFY(spyMenuReady.wait()); - - // check if menu is valid - QVERIFY(m_view->data().isValid()); - QVERIFY(m_view->data().isContentEditable()); + bool gotMisspelledWord = false; // clumsy QTRY_VERIFY still execs expr after first success + QString detail; + + // check that spellchecker has done text processing and filled misspelled word + QTRY_VERIFY2([&] () { + detail.clear(); + if (gotMisspelledWord) + return true; + + // open menu on misspelled word + m_view->activateMenu(m_view->focusWidget(), rect.center()); + QSignalSpy spyMenuReady(m_view, &WebView::menuReady); + if (!spyMenuReady.wait()) { + detail = "menu was not shown"; + return false; + } + + if (!m_view->data().isValid()) { + detail = "invalid data"; + return false; + } + + if (!m_view->data().isContentEditable()) { + detail = "content is not editable"; + return false; + } + + if (m_view->data().misspelledWord().isEmpty()) { + detail = "no misspelled word"; + return false; + }; + + gotMisspelledWord = true; + return true; + } (), qPrintable(QString("Context menu: %1").arg(detail))); // check misspelled word QCOMPARE(m_view->data().misspelledWord(), QStringLiteral("lowe")); -- cgit v1.2.3 From fef43d7b6fad44f9ee3de12ea49cc418245b1844 Mon Sep 17 00:00:00 2001 From: Kirill Burtsev Date: Fri, 12 Jul 2019 11:14:07 +0200 Subject: Fix quick dialog test wrong message on view's LoadStatus changed Change-Id: Ic8eb671409794799bcdad4760dc58e84de3b109f Reviewed-by: Michal Klocek --- tests/auto/quick/dialogs/WebView.qml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/auto/quick/dialogs/WebView.qml b/tests/auto/quick/dialogs/WebView.qml index 4f8b7a0ce..01f4ac297 100644 --- a/tests/auto/quick/dialogs/WebView.qml +++ b/tests/auto/quick/dialogs/WebView.qml @@ -56,11 +56,12 @@ Window { WebEngineView { id: view anchors.fill: parent - onLoadingChanged: function(reqeust) { - if (reqeust.status === WebEngineView.LoadSucceededStatus) { + onLoadingChanged: function(request) { + if (request.status === WebEngineView.LoadSucceededStatus) { handler.ready = true - } else { - console.log("Wooohooo loading page from qrc failed !") + } else if (request.status === WebEngineView.LoadFailedStatus) { + console.log("Page was not successfully loaded from qrc! Status: " + request.status + + ", error [code: " + request.errorCode + "]: '" + request.errorString + "'") } } -- cgit v1.2.3 From e67b573611bef64a1cae30f0e1923dff15594cb4 Mon Sep 17 00:00:00 2001 From: Romain Pokrzywka Date: Fri, 12 Jul 2019 11:23:20 -0500 Subject: Pass an accurate touchpoint ToolType to Chromium QTouchEvent::TouchPoint's flags() specifies the tool type (pen, finger) for the touchpoint, so we can forward that information to Chromium. This allows proper touch handling in web pages that depend on the touch type property detect finger/pen touches. Change-Id: Ib6069a057249ef2776a6b315bc71c75d14c9b673 Reviewed-by: Allan Sandfeld Jensen --- src/core/render_widget_host_view_qt.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index 994e3a3d6..4407e706e 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -237,7 +237,10 @@ public: float GetHistoricalTouchMajor(size_t pointer_index, size_t historical_index) const override { return 0; } float GetHistoricalX(size_t pointer_index, size_t historical_index) const override { return 0; } float GetHistoricalY(size_t pointer_index, size_t historical_index) const override { return 0; } - ToolType GetToolType(size_t pointer_index) const override { return ui::MotionEvent::ToolType::FINGER; } + ToolType GetToolType(size_t pointer_index) const override { + return (touchPoints.at(pointer_index).flags() & QTouchEvent::TouchPoint::InfoFlag::Pen) ? ui::MotionEvent::ToolType::STYLUS + : ui::MotionEvent::ToolType::FINGER; + } int GetButtonState() const override { return 0; } private: -- cgit v1.2.3 From 73daf5b669c943d3c7a765533c5b5d61c380a576 Mon Sep 17 00:00:00 2001 From: Kirill Burtsev Date: Fri, 12 Jul 2019 11:23:17 +0200 Subject: Remove qt.io load from findTextInterruptedByLoad and ensure checks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Load of real website is not really needed, simple html is enough to verify that on load no findText callback is executed from previous query. Ensure callback is not called with timeout and additional check inside it to verify that it's not called twise. Task-number: QTBUG-75541 Change-Id: Iebf207e40d8f4d4f680b46bb0f32480edd72f36d Reviewed-by: Jüri Valdmann Reviewed-by: Peter Varga --- tests/auto/quick/qmltests/data/tst_findText.qml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/tests/auto/quick/qmltests/data/tst_findText.qml b/tests/auto/quick/qmltests/data/tst_findText.qml index dfcfd586f..9687d9183 100644 --- a/tests/auto/quick/qmltests/data/tst_findText.qml +++ b/tests/auto/quick/qmltests/data/tst_findText.qml @@ -43,13 +43,21 @@ TestWebEngineView { matchCount = -1 } + function findCallbackCalled() { return matchCount != -1 } + function findTextCallback(matchCount) { + // If this starts to fail then either clear was not called before findText + // or unexpected callback was triggered from some search. + // On c++ side callback id can be checked to verify + testcase.verify(!findCallbackCalled(), 'Unexpected callback call or uncleared state before findText call!') + webEngineView.matchCount = matchCount findFailed = matchCount == 0 } TestCase { + id: testcase name: "WebViewFindText" function getBodyInnerHTML() { @@ -207,13 +215,13 @@ TestWebEngineView { webEngineView.findText("hello", findFlags, webEngineView.findTextCallback); // This should not crash. - webEngineView.url = "https://www.qt.io"; - if (!webEngineView.waitForLoadSucceeded(12000)) - skip("Couldn't load page from network, skipping test."); + webEngineView.loadHtml("New page with same hello text") + verify(webEngineView.waitForLoadSucceeded()) // The callback is not supposed to be called, see QTBUG-61506. - // Check whether the callback was called (-1 = no, other values = yes). - tryVerify(function() { return webEngineView.matchCount == -1; }, 20000); + expectFailContinue('', 'No unexpected findText callback calls occurred.') + tryVerify(function() { return webEngineView.findCallbackCalled() }) + verify(!webEngineView.findCallbackCalled()) } } } -- cgit v1.2.3 From b4589db4c7cb10cb55b38bab00d80eb1290312b1 Mon Sep 17 00:00:00 2001 From: Kirill Burtsev Date: Mon, 15 Jul 2019 13:03:14 +0200 Subject: Reset findText reply id on StopFinding to prevent callback later Not updating lastReceivedFindReply caused next findText call after StopFinding to trigger redundant callback call on checking stale query. Fixes: QTBUG-77029 Change-Id: Iad4b71364ecb3ec3db3096b739e77620d12731f9 Reviewed-by: Peter Varga --- src/core/web_contents_adapter.cpp | 2 ++ src/core/web_contents_delegate_qt.cpp | 2 +- src/core/web_contents_delegate_qt.h | 1 + tests/auto/quick/qmltests/data/tst_findText.qml | 4 ++++ 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index 567a76637..a342ba302 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -987,6 +987,7 @@ quint64 WebContentsAdapter::findText(const QString &subString, bool caseSensitiv // waiting for it forever. // Assume that any unfinished find has been unsuccessful when a new one is started // to cover that case. + m_webContentsDelegate->setLastReceivedFindReply(m_lastFindRequestId); m_adapterClient->didFindText(m_lastFindRequestId, 0); } @@ -1007,6 +1008,7 @@ quint64 WebContentsAdapter::findText(const QString &subString, bool caseSensitiv void WebContentsAdapter::stopFinding() { CHECK_INITIALIZED(); + m_webContentsDelegate->setLastReceivedFindReply(m_lastFindRequestId); m_webContentsDelegate->setLastSearchedString(QString()); m_webContents->StopFinding(content::STOP_FIND_ACTION_KEEP_SELECTION); } diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp index 83f68b68d..20de0546f 100644 --- a/src/core/web_contents_delegate_qt.cpp +++ b/src/core/web_contents_delegate_qt.cpp @@ -510,7 +510,7 @@ void WebContentsDelegateQt::FindReply(content::WebContents *source, int request_ Q_UNUSED(source) Q_UNUSED(selection_rect) Q_UNUSED(active_match_ordinal) - if (final_update) { + if (final_update && request_id > m_lastReceivedFindReply) { m_lastReceivedFindReply = request_id; m_viewClient->didFindText(request_id, number_of_matches); } diff --git a/src/core/web_contents_delegate_qt.h b/src/core/web_contents_delegate_qt.h index 27aac2071..b88b56dc1 100644 --- a/src/core/web_contents_delegate_qt.h +++ b/src/core/web_contents_delegate_qt.h @@ -114,6 +114,7 @@ public: QString lastSearchedString() const { return m_lastSearchedString; } void setLastSearchedString(const QString &s) { m_lastSearchedString = s; } int lastReceivedFindReply() const { return m_lastReceivedFindReply; } + void setLastReceivedFindReply(int id) { m_lastReceivedFindReply = id; } QUrl url() const { return m_url; } QString title() const { return m_title; } diff --git a/tests/auto/quick/qmltests/data/tst_findText.qml b/tests/auto/quick/qmltests/data/tst_findText.qml index 9687d9183..93aa48365 100644 --- a/tests/auto/quick/qmltests/data/tst_findText.qml +++ b/tests/auto/quick/qmltests/data/tst_findText.qml @@ -222,6 +222,10 @@ TestWebEngineView { expectFailContinue('', 'No unexpected findText callback calls occurred.') tryVerify(function() { return webEngineView.findCallbackCalled() }) verify(!webEngineView.findCallbackCalled()) + + webEngineView.clear(); + webEngineView.findText('New page', findFlags, webEngineView.findTextCallback) + tryCompare(webEngineView, 'matchCount', 1) } } } -- cgit v1.2.3 From 662de14ceecee701b31478849ae147c70f3fe00f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= Date: Wed, 17 Jul 2019 13:16:23 +0200 Subject: Fix use-after-free in WebContentsAdapter::load Pass WebContentsAdapter pointer to lambda via QWeakPointer in case the adapter has been deleted already. Fixes: QTBUG-76958 Change-Id: I1962ba3dd1794a27e7013a2ad1b729fe7a08c079 Reviewed-by: Allan Sandfeld Jensen --- src/core/web_contents_adapter.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index a342ba302..f74f16bc3 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -653,19 +653,23 @@ void WebContentsAdapter::load(const QWebEngineHttpRequest &request) } } - auto navigate = [](WebContentsAdapter *adapter, const content::NavigationController::LoadURLParams ¶ms) { + auto navigate = [](QWeakPointer weakAdapter, const content::NavigationController::LoadURLParams ¶ms) { + WebContentsAdapter *adapter = weakAdapter.data(); + if (!adapter) + return; adapter->webContents()->GetController().LoadURLWithParams(params); // Follow chrome::Navigate and invalidate the URL immediately. adapter->m_webContentsDelegate->NavigationStateChanged(adapter->webContents(), content::INVALIDATE_TYPE_URL); adapter->focusIfNecessary(); }; + QWeakPointer weakThis(sharedFromThis()); if (resizeNeeded) { // Schedule navigation on the event loop. content::BrowserThread::PostTask( - content::BrowserThread::UI, FROM_HERE, base::BindOnce(navigate, this, std::move(params))); + content::BrowserThread::UI, FROM_HERE, base::BindOnce(navigate, std::move(weakThis), std::move(params))); } else { - navigate(this, params); + navigate(std::move(weakThis), params); } } -- cgit v1.2.3 From f43d9dc448f0fd2073f44ea696205969ffd0d9c8 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 18 Jul 2019 13:03:57 +0200 Subject: Make qdoc scan WebEngine more effective It was triggering heaps of errors on internal non-API files, so make it just scan the API and documentation. Change-Id: I716d0464f924b00dfd7ddb3a72e5f23bbbad80ad Reviewed-by: Leena Miettinen --- src/webengine/doc/qtwebengine.qdocconf | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/webengine/doc/qtwebengine.qdocconf b/src/webengine/doc/qtwebengine.qdocconf index d84e41c5a..be5db9c19 100644 --- a/src/webengine/doc/qtwebengine.qdocconf +++ b/src/webengine/doc/qtwebengine.qdocconf @@ -61,12 +61,14 @@ depends += qtcore \ qtwidgets headerdirs += .. \ - ../../core \ - ../../webenginewidgets + ../../core/api \ + ../../webenginewidgets/api sourcedirs += .. \ - ../../core/ \ - ../../webenginewidgets \ + ../../core/api \ + ../../core/doc \ + ../../webenginewidgets/api \ + ../../webenginewidgets/doc exampledirs += . \ ../../../examples \ @@ -85,4 +87,4 @@ navigation.qmltypespage = "Qt WebEngine QML Types" # \QWE macro expands to 'Qt WebEngine' without auto-linking anywhere. macro.QWE = "Qt \\WebEngine" -Cpp.ignoretokens += Q_WEBENGINE_EXPORT QWEBENGINEWIDGETS_EXPORT +Cpp.ignoretokens += Q_WEBENGINE_EXPORT Q_WEBENGINECORE_EXPORT QWEBENGINEWIDGETS_EXPORT -- cgit v1.2.3 From 7090472ade970404a1199556b1296d8ac3355d47 Mon Sep 17 00:00:00 2001 From: Kirill Burtsev Date: Thu, 18 Jul 2019 16:21:38 +0200 Subject: Fix flaky inputContextQueryInput test After change 5a6a8509a9 selectionChanged emitted asynchronously. That means it's not right to assume this signal be emitted after receiving and processing InputMethodQueries for QPlatformInputContext. Change-Id: Ibe06bdbb5d39f7805f938740e3925a8e47b95e40 Reviewed-by: Peter Varga --- tests/auto/widgets/qwebengineview/BLACKLIST | 3 --- tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/tests/auto/widgets/qwebengineview/BLACKLIST b/tests/auto/widgets/qwebengineview/BLACKLIST index 21a876c88..9087067f5 100644 --- a/tests/auto/widgets/qwebengineview/BLACKLIST +++ b/tests/auto/widgets/qwebengineview/BLACKLIST @@ -3,6 +3,3 @@ osx [textSelectionOutOfInputField] * - -[inputContextQueryInput] -windows diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp index d3ea27fc2..a7ff05f55 100644 --- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp +++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp @@ -1890,7 +1890,7 @@ void tst_QWebEngineView::inputContextQueryInput() QApplication::sendEvent(view.focusProxy(), &event); } QTRY_COMPARE(testContext.infos.count(), 2); - QCOMPARE(selectionChangedSpy.count(), 1); + QTRY_COMPARE(selectionChangedSpy.count(), 1); // As a first step, Chromium moves the cursor to the start of the selection. // We don't filter this in QtWebEngine because we don't know yet if this is part of a selection. @@ -1916,7 +1916,7 @@ void tst_QWebEngineView::inputContextQueryInput() QApplication::sendEvent(view.focusProxy(), &event); } QTRY_COMPARE(testContext.infos.count(), 1); - QCOMPARE(selectionChangedSpy.count(), 1); + QTRY_COMPARE(selectionChangedSpy.count(), 1); QCOMPARE(testContext.infos[0].cursorPosition, 0); QCOMPARE(testContext.infos[0].anchorPosition, 0); QCOMPARE(testContext.infos[0].surroundingText, QStringLiteral("QtWebEngine!")); -- cgit v1.2.3 From b4a661eaa3506bd2a698e61e8228de029bd810ca Mon Sep 17 00:00:00 2001 From: Michal Klocek Date: Mon, 22 Jul 2019 18:46:07 +0200 Subject: Update Chromium Pulls in following changes: * 7871e09 [Backport] CVE-2019-5839 * 5c8fe22 [Backport] CVE-2019-5837 4/4 * e12c72e [Backport] CVE-2019-5837 3/4 * 9b92d35 [Backport] CVE-2019-5837 2/4 * cafa7b6 [Backport] CVE-2019-5837 1/4 * ddf3cec [Backport] CVE-2019-5836 * 125af0b [Backport] CVE-2019-5832 * 681aa1a [Backport] CVE-2019-5831 * e770193 [Backport] CVE-2019-5829 * 6695b71 Support ubsan and asan on GCC * d3b2cf8 Don't generate LTCG data we don't use * 9b1ec15 Fix segfaults with arm 32bit on metrics * 4299078 Fix zygote path used Task-number: QTBUG-76206 Change-Id: I46e2d66be90513bdedc91d4041c599d6aacaaff7 Reviewed-by: Allan Sandfeld Jensen --- src/3rdparty | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/3rdparty b/src/3rdparty index e7232c265..7871e09ac 160000 --- a/src/3rdparty +++ b/src/3rdparty @@ -1 +1 @@ -Subproject commit e7232c265e7424363a076f2e01f7e10c8e257141 +Subproject commit 7871e09ac266bd23fab100c9b56c14fcbdf2198f -- cgit v1.2.3