From e45876c2a3ee8116eb1c91fb8a7da737ca2d0a62 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Mon, 29 Jan 2018 00:20:28 +0100 Subject: [PATCH] Autotests: Add WebViewTest --- autotests/CMakeLists.txt | 3 + autotests/autotests.qrc | 5 ++ autotests/data/basic_page.html | 8 +++ autotests/webviewtest.cpp | 106 +++++++++++++++++++++++++++++++++ autotests/webviewtest.h | 31 ++++++++++ 5 files changed, 153 insertions(+) create mode 100644 autotests/autotests.qrc create mode 100644 autotests/data/basic_page.html create mode 100644 autotests/webviewtest.cpp create mode 100644 autotests/webviewtest.h diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt index 17b9890c5..d701531fb 100644 --- a/autotests/CMakeLists.txt +++ b/autotests/CMakeLists.txt @@ -2,6 +2,8 @@ include(ECMMarkAsTest) set(falkon_autotests_SRCS ) +qt5_add_resources(falkon_autotests_SRCS autotests.qrc) + macro(falkon_tests) foreach(_testname ${ARGN}) add_executable(${_testname} ${_testname}.cpp ${falkon_autotests_SRCS}) @@ -18,6 +20,7 @@ falkon_tests( adblocktest updatertest locationbartest + webviewtest ) set(falkon_autotests_SRCS passwordbackendtest.cpp) diff --git a/autotests/autotests.qrc b/autotests/autotests.qrc new file mode 100644 index 000000000..55a721dc7 --- /dev/null +++ b/autotests/autotests.qrc @@ -0,0 +1,5 @@ + + + data/basic_page.html + + diff --git a/autotests/data/basic_page.html b/autotests/data/basic_page.html new file mode 100644 index 000000000..d0142c415 --- /dev/null +++ b/autotests/data/basic_page.html @@ -0,0 +1,8 @@ + + + Basic Page + + +

Hello World

+ + diff --git a/autotests/webviewtest.cpp b/autotests/webviewtest.cpp new file mode 100644 index 000000000..1e9380def --- /dev/null +++ b/autotests/webviewtest.cpp @@ -0,0 +1,106 @@ +/* ============================================================ +* Falkon - Qt web browser +* Copyright (C) 2018 David Rosca +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* ============================================================ */ +#include "autotests.h" +#include "webviewtest.h" +#include "webview.h" +#include "webpage.h" + +class TestWebView : public WebView +{ +public: + explicit TestWebView() + : WebView() + { + } + + QWidget *overlayWidget() override + { + return this; + } + + void closeView() override + { + } + + void loadInNewTab(const LoadRequest &req, Qz::NewTabPositionFlags position) override + { + Q_UNUSED(req) + Q_UNUSED(position) + } + + bool isFullScreen() override + { + return m_fullScreen; + } + + void requestFullScreen(bool enable) override + { + m_fullScreen = enable; + } + + bool m_fullScreen = false; +}; + +void WebViewTest::initTestCase() +{ +} + +void WebViewTest::cleanupTestCase() +{ +} + +void WebViewTest::loadSignalsChangePageTest() +{ + TestWebView view; + WebPage *page1 = new WebPage; + view.setPage(page1); + + QSignalSpy loadStartedSpy(&view, &WebView::loadStarted); + QSignalSpy loadFinishedSpy(&view, &WebView::loadFinished); + + view.load(QUrl(":autotests/data/basic_page.html")); + + QTRY_COMPARE(loadStartedSpy.count(), 1); + loadStartedSpy.clear(); + + WebPage *page2 = new WebPage; + view.setPage(page2); + + // WebPage: Workaround for broken load started/finished signals in QtWebEngine 5.10 + const int loadFinishedEmitCount = qstrcmp(qVersion(), "5.10.0") == 0 ? 2 : 1; + + QTRY_COMPARE(loadFinishedSpy.count(), loadFinishedEmitCount); + QCOMPARE(loadStartedSpy.count(), 0); + loadFinishedSpy.clear(); + + QWebEngineView view2; + WebPage *page3 = new WebPage; + view2.setPage(page3); + + QSignalSpy page3LoadStart(page3, &WebPage::loadStarted); + page3->load(QUrl(":autotests/data/basic_page.html")); + QVERIFY(page3LoadStart.wait()); + + view2.setPage(new QWebEnginePage(&view2)); + view.setPage(page3); + + QTRY_COMPARE(loadStartedSpy.count(), 1); + QCOMPARE(loadFinishedSpy.count(), 0); +} + +FALKONTEST_MAIN(WebViewTest) diff --git a/autotests/webviewtest.h b/autotests/webviewtest.h new file mode 100644 index 000000000..5dd25743c --- /dev/null +++ b/autotests/webviewtest.h @@ -0,0 +1,31 @@ +/* ============================================================ +* Falkon - Qt web browser +* Copyright (C) 2018 David Rosca +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* ============================================================ */ +#pragma once + +#include + +class WebViewTest : public QObject +{ + Q_OBJECT + +private slots: + void initTestCase(); + void cleanupTestCase(); + + void loadSignalsChangePageTest(); +};