From e3e23087e11d51112e8ce2c46e92927ce1309d2d Mon Sep 17 00:00:00 2001 From: Szabolcs David Date: Fri, 30 May 2014 06:37:23 -0700 Subject: Fix typos and warnings in the Quick tests - Add valid size to tst_faviconLoad.qml - Add missing files to qmltests.pro - Rename test cases and files from WebView to WebEngineView Change-Id: I40163117a11672b18230046a1604624bc4620dba Reviewed-by: Andras Becsi --- .../qquickwebengineviewgraphics.pro | 2 + .../tst_qquickwebengineviewgraphics.cpp | 186 +++++++++++++++++++++ 2 files changed, 188 insertions(+) create mode 100644 tests/auto/quick/qquickwebengineviewgraphics/qquickwebengineviewgraphics.pro create mode 100644 tests/auto/quick/qquickwebengineviewgraphics/tst_qquickwebengineviewgraphics.cpp (limited to 'tests/auto/quick/qquickwebengineviewgraphics') diff --git a/tests/auto/quick/qquickwebengineviewgraphics/qquickwebengineviewgraphics.pro b/tests/auto/quick/qquickwebengineviewgraphics/qquickwebengineviewgraphics.pro new file mode 100644 index 000000000..ff6c49628 --- /dev/null +++ b/tests/auto/quick/qquickwebengineviewgraphics/qquickwebengineviewgraphics.pro @@ -0,0 +1,2 @@ +include(../tests.pri) +exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc diff --git a/tests/auto/quick/qquickwebengineviewgraphics/tst_qquickwebengineviewgraphics.cpp b/tests/auto/quick/qquickwebengineviewgraphics/tst_qquickwebengineviewgraphics.cpp new file mode 100644 index 000000000..ad72ea0cc --- /dev/null +++ b/tests/auto/quick/qquickwebengineviewgraphics/tst_qquickwebengineviewgraphics.cpp @@ -0,0 +1,186 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include +#include + +class TestView : public QQuickView { + Q_OBJECT +public: + virtual void exposeEvent(QExposeEvent *e) Q_DECL_OVERRIDE { + QQuickView::exposeEvent(e); + emit exposeChanged(); + } + +Q_SIGNALS: + void exposeChanged(); +}; + +class tst_QQuickWebEngineViewGraphics : public QObject +{ + Q_OBJECT +public: + tst_QQuickWebEngineViewGraphics(); + virtual ~tst_QQuickWebEngineViewGraphics(); + +public Q_SLOTS: + void initTestCase(); + void init(); + void cleanup(); + +private Q_SLOTS: + void simpleGraphics(); + void renderAfterNodeCleanup(); + void showHideShow(); + void simpleAcceleratedLayer(); + void reparentToOtherWindow(); + +private: + void setHtml(const QString &html); + QScopedPointer m_view; +}; + +static const QString greenSquare("
"); +static const QString acLayerGreenSquare("
"); + +static QImage get150x150GreenReferenceImage() +{ + static QImage reference; + if (reference.isNull()) { + reference = QImage(150, 150, QImage::Format_RGB32); + reference.fill(Qt::white); + QPainter painter(&reference); + painter.fillRect(50, 50, 50, 50, QColor("#00ff00")); + } + return reference; +} + +tst_QQuickWebEngineViewGraphics::tst_QQuickWebEngineViewGraphics() +{ +} + +tst_QQuickWebEngineViewGraphics::~tst_QQuickWebEngineViewGraphics() +{ +} + +// This will be called before the first test function is executed. +// It is only called once. +void tst_QQuickWebEngineViewGraphics::initTestCase() +{ + QWebEngine::initialize(); +} + +void tst_QQuickWebEngineViewGraphics::init() +{ + m_view.reset(new TestView); +} + +void tst_QQuickWebEngineViewGraphics::cleanup() +{ +} + +void tst_QQuickWebEngineViewGraphics::simpleGraphics() +{ + setHtml(greenSquare); + QCOMPARE(m_view->grabWindow(), get150x150GreenReferenceImage()); +} + +void tst_QQuickWebEngineViewGraphics::renderAfterNodeCleanup() +{ + setHtml(greenSquare); + + // Do it twice in a row, if the window isn't visible, the scene graph is going to be trashed by QQuickWindow::grabWindow after the first render. + QVERIFY(!m_view->isVisible()); + QCOMPARE(m_view->grabWindow(), get150x150GreenReferenceImage()); + QCOMPARE(m_view->grabWindow(), get150x150GreenReferenceImage()); +} + +void tst_QQuickWebEngineViewGraphics::showHideShow() +{ + setHtml(greenSquare); + QSignalSpy exposeSpy(m_view.data(), SIGNAL(exposeChanged())); + m_view->show(); + QVERIFY(exposeSpy.wait(500)); + QCOMPARE(m_view->grabWindow(), get150x150GreenReferenceImage()); + + m_view->hide(); + QVERIFY(exposeSpy.wait(500)); + m_view->show(); + QVERIFY(exposeSpy.wait(500)); + QCOMPARE(m_view->grabWindow(), get150x150GreenReferenceImage()); +} + +void tst_QQuickWebEngineViewGraphics::simpleAcceleratedLayer() +{ + setHtml(acLayerGreenSquare); + QCOMPARE(m_view->grabWindow(), get150x150GreenReferenceImage()); +} + +void tst_QQuickWebEngineViewGraphics::reparentToOtherWindow() +{ + setHtml(greenSquare); + QQuickWindow window; + window.resize(m_view->size()); + window.create(); + + m_view->rootObject()->setParentItem(window.contentItem()); + QCOMPARE(window.grabWindow(), get150x150GreenReferenceImage()); +} + +void tst_QQuickWebEngineViewGraphics::setHtml(const QString &html) +{ + QString htmlData = QUrl::toPercentEncoding(html); + QString qmlData = QUrl::toPercentEncoding(QStringLiteral("import QtQuick 2.0; import QtWebEngine 0.9; WebEngineView { width: 150; height: 150; url: loadUrl }")); + m_view->rootContext()->setContextProperty("loadUrl", QUrl(QStringLiteral("data:text/html,%1").arg(htmlData))); + m_view->setSource(QUrl(QStringLiteral("data:text/plain,%1").arg(qmlData))); + m_view->create(); + + // FIXME: Replace with a proper initialLayout signal. + QTest::qWait(200); + QCOMPARE(m_view->rootObject()->property("loading"), QVariant(false)); +} + +QTEST_MAIN(tst_QQuickWebEngineViewGraphics) +#include "tst_qquickwebengineviewgraphics.moc" -- cgit v1.2.3