diff options
-rw-r--r-- | coin/qt-installer-package-config.json | 2 | ||||
-rw-r--r-- | dist/changes-5.12.10 | 86 | ||||
-rw-r--r-- | dist/changes-5.15.2 | 82 | ||||
-rw-r--r-- | examples/examples.pro | 2 | ||||
-rw-r--r-- | examples/pdf/multipage/main.cpp | 4 | ||||
-rw-r--r-- | examples/pdf/multipage/multipage.pro | 2 | ||||
-rw-r--r-- | examples/pdf/pdf.pro | 2 | ||||
-rw-r--r-- | examples/pdf/pdfviewer/main.cpp | 4 | ||||
-rw-r--r-- | examples/pdf/pdfviewer/pdfviewer.pro | 2 | ||||
-rw-r--r-- | src/core/content_main_delegate_qt.cpp | 3 | ||||
-rw-r--r-- | src/core/web_engine_context.cpp | 2 | ||||
-rw-r--r-- | src/core/web_engine_library_info.cpp | 32 | ||||
-rw-r--r-- | src/core/web_engine_library_info.h | 6 | ||||
-rw-r--r-- | src/core/web_engine_settings.cpp | 19 | ||||
-rw-r--r-- | src/webengine/doc/src/qtwebengine-platform-notes.qdoc | 3 | ||||
-rw-r--r-- | tests/auto/quick/dialogs/testhandler.cpp | 2 | ||||
-rw-r--r-- | tests/auto/quick/dialogs/tst_dialogs.cpp | 79 |
17 files changed, 272 insertions, 60 deletions
diff --git a/coin/qt-installer-package-config.json b/coin/qt-installer-package-config.json index 8507c9ec9..0ba69adac 100644 --- a/coin/qt-installer-package-config.json +++ b/coin/qt-installer-package-config.json @@ -9,7 +9,9 @@ "**/lib/pkgconfig/Qt5Pdf*", "**/lib/libQt5Pdf*", "**/lib/static_chrome/*", + "**/lib/QtPdf.framework/*", "**/mkspecs/modules/qt_lib_pdf*", + "**/mkspecs/modules/qt_plugin_qpdf.pri", "**/plugins/imageformats/*", "**/qml/QtQuick/**/*" ] diff --git a/dist/changes-5.12.10 b/dist/changes-5.12.10 new file mode 100644 index 000000000..12e0c46d8 --- /dev/null +++ b/dist/changes-5.12.10 @@ -0,0 +1,86 @@ +Qt 5.12.10 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.12.9. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + + https://doc.qt.io/qt-5.12/index.html + +The Qt version 5.12 series is binary compatible with the 5.11.x series. +Applications compiled for 5.11 will continue to run with 5.12. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + + https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Library * +**************************************************************************** + +General +------- + + - [QTBUG-75391] Fix pasting Unicode characters copied from WebEngine on macOS + - [QTBUG-83710] Fix input of keys requiring AltGr on Windows + - [QTBUG-84337] Fixed GPU switching with CoreProfile on macOS (for e.g. AirPlay) + - Fixed build with the linux-clang 10 spec + +Chromium +-------- + + - Security fixes from Chromium up to version 86.0.4240.75, including: + + - CVE-2020-6459 + - CVE-2020-6462: Use after free in task scheduling + - CVE-2020-6470 + - CVE-2020-6474 + - CVE-2020-6481 + - CVE-2020-6489 + - CVE-2020-6490 + - CVE-2020-6511: Side-channel information leakage in CSP + - CVE-2020-6512: Type Confusion in V8 + - CVE-2020-6513: Heap buffer overflow in PDFium + - CVE-2020-6514: Inappropriate implementation in WebRTC + - CVE-2020-6518: Use after free in developer tools + - CVE-2020-6523: Out of bounds write in Skia + - CVE-2020-6524: Heap buffer overflow in WebAudio + - CVE-2020-6529: Inappropriate implementation in WebRTC + - CVE-2020-6532: Use after free in SCTP + - CVE-2020-6535: Insufficient data validation in WebUI + - CVE-2020-6534: Heap buffer overflow in WebRTC + - CVE-2020-6540: Heap buffer overflow in Skia + - CVE-2020-6541: Use after free in WebUSB + - CVE-2020-6542: Use after free in ANGLE + - CVE-2020-6543: Use after free in task scheduling + - CVE-2020-6544: Use after free in media + - CVE-2020-6545: Use after free in audio + - CVE-2020-6548: Heap buffer overflow in Skia + - CVE-2020-6549: Use after free in media + - CVE-2020-6559: Use after free in presentation API + - CVE-2020-6561: Inappropriate implementation in Content Security Policy + - CVE-2020-6562: Insufficient policy enforcement in Blink + - CVE-2020-6569: Integer overflow in WebUSB + - CVE-2020-6571: Incorrect security UI in Omnibox + - CVE-2020-6573: Use after free in video + - CVE-2020-15962: Insufficient policy enforcement in serial + - CVE-2020-15964: Insufficient data validation in media + - CVE-2020-15965: Out of bounds write in V8 + - CVE-2020-15968: Use after free in Blink + - CVE-2020-15969: Use after free in WebRTC. + - Security Bug 1051439 + - Security bug 1052492 + - Security bug 1054229 + - Security Bug 1057369 + - Security Bug 1058515 + - Security bug 1065122 + - Security bug 1065731 + - Security bugs 1087629 and 1029569 + - Security issue 1098860 + - Security issue 1102137 + - Security bug 1102408 + - Security bug 1111149 + diff --git a/dist/changes-5.15.2 b/dist/changes-5.15.2 new file mode 100644 index 000000000..de6ffc584 --- /dev/null +++ b/dist/changes-5.15.2 @@ -0,0 +1,82 @@ +Qt 5.15.2 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.15.1. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + + https://doc.qt.io/qt-5.15/index.html + +The Qt version 5.15 series is binary compatible with the 5.14.x series. +Applications compiled for 5.14 will continue to run with 5.15. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + + https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Library * +**************************************************************************** + +General +------- + - [QTBUG-84632] Warn about QtWebengineProcess launching from network share + on Windows. + - [QTBUG-85363] Handle non-ASCII names for PulseAudio + - [QTBUG-85494] Fix regression crash when not handling QQuickWebEngineNewViewRequest + - [QTBUG-85817] Fix crashes on resize + - [QTBUG-86672] Fix remapped menu key being mapped back to menu key + - [QTBUG-86945] Fix crash when opening a PDF in debug build on windows. + - [QTBUG-87129] Mention node.js build-time dependency + - The QtWebEngineProcess now has a version number + - The old compositor has been removed and can no longer be restored using + command line argument. + +Chromium +-------- + + - The Chromium version has been updated to 83.0.4103.122 + - Security fixes from Chromium up to version 86.0.4240.111, including: + - CVE-2020-6540: Heap buffer overflow in Skia + - CVE-2020-6557: Inappropriate implementation in networking + - CVE-2020-6561: Inappropriate implementation in Content Security Policy + - CVE-2020-6562: Insufficient policy enforcement in Blink + - CVE-2020-6569: Integer overflow in WebUSB + - CVE-2020-6570: Side-channel information leakage in WebRTC + - CVE-2020-6573: Use after free in video + - CVE-2020-6571: Incorrect security UI in Omnibox + - CVE-2020-6575: Race in Mojo + - CVE-2020-6576: Use after free in offscreen canvas + - CVE-2020-15959: Insufficient policy enforcement in networking + - CVE-2020-15960: Out of bounds read in storage + - CVE-2020-15961: Insufficient policy enforcement in extensions + - CVE-2020-15962: Insufficient policy enforcement in serial + - CVE-2020-15963 + - CVE-2020-15964: Insufficient data validation in media + - CVE-2020-15965: Out of bounds write in V8 + - CVE-2020-15966 + - CVE-2020-15968: Use after free in Blink + - CVE-2020-15969: Use after free in WebRTC. + - CVE-2020-15972: Use after free in audio. + - CVE-2020—15973: Insufficient policy enforcement in extensions + - CVE-2020-15974: Integer overflow in Blink + - CVE-2020-15976: Use after free in WebXR + - CVE-2020-15977: Insufficient data validation in dialogs. + - CVE-2020-15978: Insufficient data validation in navigation + - CVE-2020-15979: Inappropriate implementation in V8. + - CVE-2020-15985: Inappropriate implementation in Blink. + - CVE-2020-15987: Use after free in WebRTC + - CVE-2020-15989: Uninitialized Use in PDFium + - CVE-2020-15992: Insufficient policy enforcement in networking + - CVE-2020-15999: Heap buffer overflow in freetype + - CVE-2020-16001: Use after free in media. + - CVE-2020-16002: Use after free in PDFium + - CVE-2020-16003: Use after free in printing + - Security bug 1106091 + - Security bug 1107824 + - Security bug 1111149 + - Security bug 1125199 + diff --git a/examples/examples.pro b/examples/examples.pro index c62d7c04d..a0245a869 100644 --- a/examples/examples.pro +++ b/examples/examples.pro @@ -20,6 +20,6 @@ qtConfig(build-qtwebengine-core):qtConfig(webengine-core-support) { } qtConfig(build-qtpdf):qtConfig(webengine-qtpdf-support) { - SUDIRS += pdf + SUBDIRS += pdf qtConfig(pdf-widgets): SUBDIRS += pdfwidgets } diff --git a/examples/pdf/multipage/main.cpp b/examples/pdf/multipage/main.cpp index 35aaa8c64..446b2999b 100644 --- a/examples/pdf/multipage/main.cpp +++ b/examples/pdf/multipage/main.cpp @@ -48,7 +48,7 @@ ** ****************************************************************************/ -#include <QApplication> +#include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char* argv[]) @@ -57,7 +57,7 @@ int main(int argc, char* argv[]) QCoreApplication::setOrganizationName("QtProject"); QCoreApplication::setApplicationVersion(QT_VERSION_STR); QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QApplication app(argc, argv); + QGuiApplication app(argc, argv); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:///pdfviewer/viewer.qml"))); diff --git a/examples/pdf/multipage/multipage.pro b/examples/pdf/multipage/multipage.pro index 5df9e653d..bd08ba0de 100644 --- a/examples/pdf/multipage/multipage.pro +++ b/examples/pdf/multipage/multipage.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += qml quick pdf widgets svg +QT += qml quick pdf svg SOURCES += main.cpp diff --git a/examples/pdf/pdf.pro b/examples/pdf/pdf.pro index 7130f3560..0ae198ee7 100644 --- a/examples/pdf/pdf.pro +++ b/examples/pdf/pdf.pro @@ -1,3 +1,3 @@ TEMPLATE=subdirs -SUBDIRS += pdfviewer multipage +qtHaveModule(svg): SUBDIRS += pdfviewer multipage diff --git a/examples/pdf/pdfviewer/main.cpp b/examples/pdf/pdfviewer/main.cpp index 5f65e3061..13db2b88a 100644 --- a/examples/pdf/pdfviewer/main.cpp +++ b/examples/pdf/pdfviewer/main.cpp @@ -48,7 +48,7 @@ ** ****************************************************************************/ -#include <QApplication> +#include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char* argv[]) @@ -57,7 +57,7 @@ int main(int argc, char* argv[]) QCoreApplication::setOrganizationName("QtProject"); QCoreApplication::setApplicationVersion(QT_VERSION_STR); QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QApplication app(argc, argv); + QGuiApplication app(argc, argv); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:///pdfviewer/viewer.qml"))); diff --git a/examples/pdf/pdfviewer/pdfviewer.pro b/examples/pdf/pdfviewer/pdfviewer.pro index b8817c9be..a1c578efc 100644 --- a/examples/pdf/pdfviewer/pdfviewer.pro +++ b/examples/pdf/pdfviewer/pdfviewer.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += qml quick pdf widgets svg +QT += qml quick pdf svg SOURCES += main.cpp diff --git a/src/core/content_main_delegate_qt.cpp b/src/core/content_main_delegate_qt.cpp index 2d7d1eb57..cf8582ef2 100644 --- a/src/core/content_main_delegate_qt.cpp +++ b/src/core/content_main_delegate_qt.cpp @@ -224,7 +224,8 @@ void ContentMainDelegateQt::PreSandboxStartup() #endif if (parsedCommandLine->HasSwitch(service_manager::switches::kApplicationName)) { - const std::string appName = parsedCommandLine->GetSwitchValueASCII(service_manager::switches::kApplicationName); + std::string appName = parsedCommandLine->GetSwitchValueASCII(service_manager::switches::kApplicationName); + appName = QByteArray::fromPercentEncoding(QByteArray::fromStdString(appName)).toStdString(); QCoreApplication::setApplicationName(QString::fromStdString(appName)); #if defined(OS_LINUX) media::AudioManager::SetGlobalAppName(appName); diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp index a49d8103c..32701f230 100644 --- a/src/core/web_engine_context.cpp +++ b/src/core/web_engine_context.cpp @@ -648,7 +648,7 @@ WebEngineContext::WebEngineContext() setupProxyPac(parsedCommandLine); parsedCommandLine->AppendSwitchPath(switches::kBrowserSubprocessPath, WebEngineLibraryInfo::getPath(content::CHILD_PROCESS_EXE)); - parsedCommandLine->AppendSwitchASCII(service_manager::switches::kApplicationName, QCoreApplication::applicationName().toStdString()); + parsedCommandLine->AppendSwitchASCII(service_manager::switches::kApplicationName, QCoreApplication::applicationName().toUtf8().toPercentEncoding().toStdString()); // Enable sandboxing on OS X and Linux (Desktop / Embedded) by default. bool disable_sandbox = qEnvironmentVariableIsSet(kDisableSandboxEnv); diff --git a/src/core/web_engine_library_info.cpp b/src/core/web_engine_library_info.cpp index 9c99e7e22..fa9e34268 100644 --- a/src/core/web_engine_library_info.cpp +++ b/src/core/web_engine_library_info.cpp @@ -47,6 +47,7 @@ #include "content/public/common/content_paths.h" #include "ui/base/ui_base_paths.h" #include "ui/base/ui_base_switches.h" +#include "services/service_manager/sandbox/switches.h" #include "type_conversion.h" #include <QByteArray> @@ -56,7 +57,10 @@ #include <QLibraryInfo> #include <QLocale> #include <QStandardPaths> -#include <QString> + +#if defined(OS_WIN) +#include <windows.h> +#endif // OS_WIN #ifndef QTWEBENGINEPROCESS_NAME #error "No name defined for QtWebEngine's process" @@ -178,6 +182,14 @@ QString subProcessPath() if (processPath.isEmpty()) qFatal("Could not find %s", processBinary.toUtf8().constData()); +#if defined(OS_WIN) + base::CommandLine *parsedCommandLine = base::CommandLine::ForCurrentProcess(); + if (!parsedCommandLine->HasSwitch(service_manager::switches::kNoSandbox)) { + if (WebEngineLibraryInfo::isUNCPath(processPath) || WebEngineLibraryInfo::isRemoteDrivePath(processPath)) + qCritical("Can not launch QtWebEngineProcess from network path if sandbox is enabled: %s.", processPath.toUtf8().constData()); + } +#endif + } @@ -351,3 +363,21 @@ std::string WebEngineLibraryInfo::getApplicationLocale() return parsedCommandLine->GetSwitchValueASCII(switches::kLang); } + +#if defined(OS_WIN) +bool WebEngineLibraryInfo::isRemoteDrivePath(const QString &path) +{ + WCHAR wDriveLetter[3]; + swprintf(wDriveLetter, L"%S", path.mid(0, 3).toStdString().c_str()); + return GetDriveType(wDriveLetter) == DRIVE_REMOTE; +} + +bool WebEngineLibraryInfo::isUNCPath(const QString &path) +{ + return (base::FilePath::IsSeparator(path.at(0).toLatin1()) + && base::FilePath::IsSeparator(path.at(1).toLatin1()) + && path.at(2) != "." && path.at(2) != "?" + && path.at(2).isLetter() && path.at(3) != ":"); +} + +#endif diff --git a/src/core/web_engine_library_info.h b/src/core/web_engine_library_info.h index a5cd914d3..4d23d8921 100644 --- a/src/core/web_engine_library_info.h +++ b/src/core/web_engine_library_info.h @@ -43,6 +43,8 @@ #include "base/files/file_path.h" #include "base/strings/string16.h" +#include <QString> + enum { QT_RESOURCES_PAK = 5000, QT_RESOURCES_100P_PAK = 5001, @@ -56,6 +58,10 @@ public: // Called by localized_error in our custom chrome layer static base::string16 getApplicationName(); static std::string getApplicationLocale(); +#if defined(OS_WIN) + static bool isRemoteDrivePath(const QString &path); + static bool isUNCPath(const QString &path); +#endif }; diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp index 93c822f2f..693c6f6fb 100644 --- a/src/core/web_engine_settings.cpp +++ b/src/core/web_engine_settings.cpp @@ -112,9 +112,8 @@ WebEngineSettings::~WebEngineSettings() if (parentSettings) parentSettings->childSettings.remove(this); // In QML the profile and its settings may be garbage collected before the page and its settings. - for (WebEngineSettings *settings : qAsConst(childSettings)) { - settings->parentSettings = 0; - } + for (WebEngineSettings *settings : qAsConst(childSettings)) + settings->parentSettings = nullptr; } void WebEngineSettings::overrideWebPreferences(content::WebContents *webContents, content::WebPreferences *prefs) @@ -141,11 +140,15 @@ void WebEngineSettings::setAttribute(QWebEngineSettings::WebAttribute attr, bool bool WebEngineSettings::testAttribute(QWebEngineSettings::WebAttribute attr) const { - if (!parentSettings) { - Q_ASSERT(s_defaultAttributes.contains(attr)); - return m_attributes.value(attr, s_defaultAttributes.value(attr)); - } - return m_attributes.value(attr, parentSettings->testAttribute(attr)); + auto it = m_attributes.constFind(attr); + if (it != m_attributes.constEnd()) + return *it; + + if (parentSettings) + return parentSettings->testAttribute(attr); + + Q_ASSERT(s_defaultAttributes.contains(attr)); + return s_defaultAttributes.value(attr); } bool WebEngineSettings::isAttributeExplicitlySet(QWebEngineSettings::WebAttribute attr) const diff --git a/src/webengine/doc/src/qtwebengine-platform-notes.qdoc b/src/webengine/doc/src/qtwebengine-platform-notes.qdoc index cbb12a0bd..dac010058 100644 --- a/src/webengine/doc/src/qtwebengine-platform-notes.qdoc +++ b/src/webengine/doc/src/qtwebengine-platform-notes.qdoc @@ -59,12 +59,13 @@ \section2 All Platforms - On all platforms, the following tools are required: + On all platforms, the following tools are required at build time: \list \li \l Python 2.7.5 or later. Python 3 is not supported. \li Bison, Flex \li GPerf + \li Node.js for a full featured Dev Tools. \endlist \section2 Windows diff --git a/tests/auto/quick/dialogs/testhandler.cpp b/tests/auto/quick/dialogs/testhandler.cpp index bdd63a547..78a944cc6 100644 --- a/tests/auto/quick/dialogs/testhandler.cpp +++ b/tests/auto/quick/dialogs/testhandler.cpp @@ -30,7 +30,7 @@ TestHandler::TestHandler(QObject *parent) : QObject(parent) { - setObjectName(QStringLiteral("TestListner")); + setObjectName(QStringLiteral("TestListener")); } QObject* TestHandler::request() const diff --git a/tests/auto/quick/dialogs/tst_dialogs.cpp b/tests/auto/quick/dialogs/tst_dialogs.cpp index dca872aad..8f2e79d3b 100644 --- a/tests/auto/quick/dialogs/tst_dialogs.cpp +++ b/tests/auto/quick/dialogs/tst_dialogs.cpp @@ -29,22 +29,23 @@ #include "testhandler.h" #include "server.h" #include "util.h" + #include <QtWebEngine/private/qquickwebenginedialogrequests_p.h> #include <QtWebEngineCore/qwebenginecontextmenurequest.h> #include <QQuickWebEngineProfile> + +#include <QNetworkProxy> #include <QQmlApplicationEngine> #include <QQuickWindow> -#include <QTest> #include <QSignalSpy> -#include <QNetworkProxy> - +#include <QTest> -class tst_Dialogs : public QObject { +class tst_Dialogs : public QObject +{ Q_OBJECT public: tst_Dialogs(){} - private slots: void initTestCase(); void init(); @@ -57,11 +58,11 @@ private slots: void authenticationDialogRequested(); private: - void createDialog(const QLatin1String& dialog, bool &ok); + void createDialog(const QLatin1String &dialog, bool &ok); private: QScopedPointer<QQmlApplicationEngine> m_engine; - QQuickWindow *m_widnow; - TestHandler *m_listner; + QQuickWindow *m_window; + TestHandler *m_listener; }; void tst_Dialogs::initTestCase() @@ -70,10 +71,10 @@ void tst_Dialogs::initTestCase() qmlRegisterType<TestHandler>("io.qt.tester", 1, 0, "TestHandler"); m_engine.reset(new QQmlApplicationEngine()); m_engine->load(QUrl(QStringLiteral("qrc:/WebView.qml"))); - m_widnow = qobject_cast<QQuickWindow*>(m_engine->rootObjects().first()); - Q_ASSERT(m_widnow); - m_listner = m_widnow->findChild<TestHandler*>(QStringLiteral("TestListner")); - Q_ASSERT(m_listner); + m_window = qobject_cast<QQuickWindow*>(m_engine->rootObjects().first()); + Q_ASSERT(m_window); + m_listener = m_window->findChild<TestHandler*>(QStringLiteral("TestListener")); + Q_ASSERT(m_listener); QNetworkProxy proxy; proxy.setType(QNetworkProxy::HttpProxy); @@ -84,29 +85,29 @@ void tst_Dialogs::initTestCase() void tst_Dialogs::init() { - m_listner->setRequest(nullptr); - m_listner->setReady(false); + m_listener->setRequest(nullptr); + m_listener->setReady(false); } -void tst_Dialogs::createDialog(const QLatin1String& dialog, bool &ok) +void tst_Dialogs::createDialog(const QLatin1String &dialog, bool &ok) { QString trigger = QStringLiteral("document.getElementById('buttonOne').onclick = function() {document.getElementById('%1').click()}"); - QSignalSpy dialogSpy(m_listner, &TestHandler::requestChanged); - m_listner->runJavaScript(trigger.arg(dialog)); - QTRY_VERIFY(m_listner->ready()); - QTest::mouseClick(m_widnow, Qt::LeftButton); + QSignalSpy dialogSpy(m_listener, &TestHandler::requestChanged); + m_listener->runJavaScript(trigger.arg(dialog)); + QTRY_VERIFY(m_listener->ready()); + QTest::mouseClick(m_window, Qt::LeftButton); QTRY_COMPARE(dialogSpy.count(), 1); ok = true; } void tst_Dialogs::colorDialogRequested() { - m_listner->load(QUrl("qrc:/index.html")); - QTRY_VERIFY(m_listner->ready()); + m_listener->load(QUrl("qrc:/index.html")); + QTRY_VERIFY(m_listener->ready()); bool ok = false; createDialog(QLatin1String("colorpicker"), ok); if (ok) { - auto dialog = qobject_cast<QQuickWebEngineColorDialogRequest*>(m_listner->request()); + auto *dialog = qobject_cast<QQuickWebEngineColorDialogRequest*>(m_listener->request()); QVERIFY2(dialog, "Incorrect dialog requested"); dialog->dialogReject(); QVERIFY2(dialog->isAccepted(), "Dialog is not accepted"); @@ -116,23 +117,23 @@ void tst_Dialogs::colorDialogRequested() void tst_Dialogs::contextMenuRequested() { - m_listner->load(QUrl("qrc:/index.html")); - QTRY_COMPARE_WITH_TIMEOUT(m_listner->ready(), true, 20000); - QSignalSpy dialogSpy(m_listner, &TestHandler::requestChanged); - QTest::mouseClick(m_widnow, Qt::RightButton); + m_listener->load(QUrl("qrc:/index.html")); + QTRY_COMPARE_WITH_TIMEOUT(m_listener->ready(), true, 20000); + QSignalSpy dialogSpy(m_listener, &TestHandler::requestChanged); + QTest::mouseClick(m_window, Qt::RightButton); QTRY_COMPARE(dialogSpy.count(), 1); - auto dialog = qobject_cast<QWebEngineContextMenuRequest *>(m_listner->request()); + auto dialog = qobject_cast<QWebEngineContextMenuRequest *>(m_listener->request()); QVERIFY2(dialog, "Incorrect dialog requested"); } void tst_Dialogs::fileDialogRequested() { - m_listner->load(QUrl("qrc:/index.html")); - QTRY_VERIFY(m_listner->ready()); + m_listener->load(QUrl("qrc:/index.html")); + QTRY_VERIFY(m_listener->ready()); bool ok = false; createDialog(QLatin1String("filepicker"), ok); if (ok) { - auto dialog = qobject_cast<QQuickWebEngineFileDialogRequest*>(m_listner->request()); + auto dialog = qobject_cast<QQuickWebEngineFileDialogRequest*>(m_listener->request()); QVERIFY2(dialog, "Incorrect dialog requested"); dialog->dialogReject(); QVERIFY2(dialog->isAccepted(), "Dialog is not accepted"); @@ -173,11 +174,11 @@ void tst_Dialogs::authenticationDialogRequested() server.run(); QTRY_VERIFY2(server.isListening(), "Could not setup authentication server"); - QSignalSpy dialogSpy(m_listner, &TestHandler::requestChanged); - m_listner->load(url); + QSignalSpy dialogSpy(m_listener, &TestHandler::requestChanged); + m_listener->load(url); QTRY_COMPARE(dialogSpy.count(), 1); - auto dialog = qobject_cast<QQuickWebEngineAuthenticationDialogRequest*>(m_listner->request()); + auto *dialog = qobject_cast<QQuickWebEngineAuthenticationDialogRequest*>(m_listener->request()); QVERIFY2(dialog, "Incorrect dialog requested"); dialog->dialogReject(); QVERIFY2(dialog->isAccepted(), "Dialog is not accepted"); @@ -214,20 +215,20 @@ void tst_Dialogs::javaScriptDialogRequested() QFETCH(QString, message); QFETCH(QString, defaultText); - m_listner->load(QUrl("qrc:/index.html")); - QTRY_VERIFY(m_listner->ready()); + m_listener->load(QUrl("qrc:/index.html")); + QTRY_VERIFY(m_listener->ready()); - QSignalSpy dialogSpy(m_listner, &TestHandler::requestChanged); - m_listner->runJavaScript(script); + QSignalSpy dialogSpy(m_listener, &TestHandler::requestChanged); + m_listener->runJavaScript(script); QTRY_COMPARE(dialogSpy.count(), 1); - auto dialog = qobject_cast<QQuickWebEngineJavaScriptDialogRequest*>(m_listner->request()); + auto *dialog = qobject_cast<QQuickWebEngineJavaScriptDialogRequest*>(m_listener->request()); QVERIFY2(dialog, "Incorrect dialog requested"); dialog->dialogReject(); QVERIFY2(dialog->isAccepted(), "Dialog is not accepted"); QCOMPARE(dialog->type(), type); QCOMPARE(dialog->message(), message); QCOMPARE(dialog->defaultText(), defaultText); - QTRY_VERIFY(m_listner->ready()); // make sure javascript executes no longer + QTRY_VERIFY(m_listener->ready()); // make sure javascript executes no longer } static QByteArrayList params; |