From a757568022ebefd0d83f69a20c09dcc8bdb98136 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Mon, 9 May 2016 16:10:59 +0200 Subject: Blacklist flaky QWebEnginePage::setHtmlWithImageResource test. It used to be an expected fail, then it seemed to work in 5.6, and for some reason it fails again in 5.6.1. Change-Id: I95161e001c3b8af3ea48fc284e448a2d8853e108 Reviewed-by: Peter Varga Reviewed-by: Allan Sandfeld Jensen --- tests/auto/widgets/qwebenginepage/BLACKLIST | 3 +++ 1 file changed, 3 insertions(+) (limited to 'tests') diff --git a/tests/auto/widgets/qwebenginepage/BLACKLIST b/tests/auto/widgets/qwebenginepage/BLACKLIST index 91858f299..ddfba2612 100644 --- a/tests/auto/widgets/qwebenginepage/BLACKLIST +++ b/tests/auto/widgets/qwebenginepage/BLACKLIST @@ -3,3 +3,6 @@ [macCopyUnicodeToClipboard] osx + +[setHtmlWithImageResource] +* -- cgit v1.2.3 From f4b806ffbc2f11a5a64fab2856dfe68ae7d603c8 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Wed, 18 May 2016 14:55:13 +0200 Subject: Fix pasting images to web pages WebKit expects pasted images to have the MIME type image/png (see code and comment in DataObjectItem::getAsFile()). Task-number: QTBUG-53409 Change-Id: I2b0c1244d309687ad190db26c5b00718ed0c4258 Reviewed-by: Allan Sandfeld Jensen --- .../qwebenginepage/resources/pasteimage.html | 30 +++++++++++++++++++++ .../widgets/qwebenginepage/tst_qwebenginepage.cpp | 31 ++++++++++++++++++++++ .../widgets/qwebenginepage/tst_qwebenginepage.qrc | 1 + 3 files changed, 62 insertions(+) create mode 100644 tests/auto/widgets/qwebenginepage/resources/pasteimage.html (limited to 'tests') diff --git a/tests/auto/widgets/qwebenginepage/resources/pasteimage.html b/tests/auto/widgets/qwebenginepage/resources/pasteimage.html new file mode 100644 index 000000000..cc37d9319 --- /dev/null +++ b/tests/auto/widgets/qwebenginepage/resources/pasteimage.html @@ -0,0 +1,30 @@ + + + + + + + + + diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp index 5d53c0468..f29b24933 100644 --- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp +++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -120,6 +121,7 @@ private Q_SLOTS: void geolocationRequestJS(); void loadFinished(); void actionStates(); + void pasteImage(); void popupFormSubmission(); void userStyleSheet(); void userStyleSheetFromLocalFileUrl(); @@ -459,6 +461,35 @@ void tst_QWebEnginePage::actionStates() QTRY_VERIFY(!stopAction->isEnabled()); } +static QImage imageWithoutAlpha(const QImage &image) +{ + QImage result = image; + QPainter painter(&result); + painter.fillRect(result.rect(), Qt::green); + painter.drawImage(0, 0, image); + return result; +} + +void tst_QWebEnginePage::pasteImage() +{ + // Pixels with an alpha value of 0 will have different RGB values after the + // test -> clipboard -> webengine -> test roundtrip. + // Clear the alpha channel to make QCOMPARE happy. + const QImage origImage = imageWithoutAlpha(QImage(":/resources/image.png")); + QClipboard *clipboard = QGuiApplication::clipboard(); + clipboard->setImage(origImage); + QWebEnginePage *page = m_view->page(); + page->load(QUrl("qrc:///resources/pasteimage.html")); + QVERIFY(waitForSignal(m_view, SIGNAL(loadFinished(bool)))); + page->triggerAction(QWebEnginePage::Paste); + QTRY_VERIFY(evaluateJavaScriptSync(page, + "window.myImageDataURL ? window.myImageDataURL.length : 0").toInt() > 0); + QByteArray data = evaluateJavaScriptSync(page, "window.myImageDataURL").toByteArray(); + data.remove(0, data.indexOf(";base64,") + 8); + const QImage image = QImage::fromData(QByteArray::fromBase64(data), "PNG"); + QCOMPARE(image, origImage); +} + class ConsolePage : public QWebEnginePage { public: diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.qrc b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.qrc index c7bffd5bb..91adeb694 100644 --- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.qrc +++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.qrc @@ -12,6 +12,7 @@ resources/script.html resources/user.css resources/image.png + resources/pasteimage.html resources/style.css resources/test1.html resources/test2.html -- cgit v1.2.3