diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/quick/qmltests/BLACKLIST | 3 | ||||
-rw-r--r-- | tests/auto/quick/qquickwebengineview/tst_qquickwebengineview.cpp | 66 | ||||
-rw-r--r-- | tests/auto/widgets/qwebenginesettings/tst_qwebenginesettings.cpp | 77 | ||||
-rw-r--r-- | tests/auto/widgets/widgets.pro | 2 |
4 files changed, 147 insertions, 1 deletions
diff --git a/tests/auto/quick/qmltests/BLACKLIST b/tests/auto/quick/qmltests/BLACKLIST index 54a3185d6..b511f1a35 100644 --- a/tests/auto/quick/qmltests/BLACKLIST +++ b/tests/auto/quick/qmltests/BLACKLIST @@ -16,3 +16,6 @@ osx [WebViewFindText::test_findTextInterruptedByLoad] * + +[WebEngineViewSource::test_viewSourceURL] +* diff --git a/tests/auto/quick/qquickwebengineview/tst_qquickwebengineview.cpp b/tests/auto/quick/qquickwebengineview/tst_qquickwebengineview.cpp index a64197b1c..f8f742ae1 100644 --- a/tests/auto/quick/qquickwebengineview/tst_qquickwebengineview.cpp +++ b/tests/auto/quick/qquickwebengineview/tst_qquickwebengineview.cpp @@ -31,6 +31,8 @@ #include <QScopedPointer> #include <QtCore/qelapsedtimer.h> +#include <QtGui/qclipboard.h> +#include <QtGui/qguiapplication.h> #include <QtGui/qpa/qwindowsysteminterface.h> #include <QtQml/QQmlEngine> #include <QtTest/QtTest> @@ -84,6 +86,8 @@ private Q_SLOTS: void changeLocale(); void userScripts(); + void javascriptClipboard_data(); + void javascriptClipboard(); private: inline QQuickWebEngineView *newWebEngineView(); @@ -860,5 +864,67 @@ void tst_QQuickWebEngineView::userScripts() list.clear(); } +void tst_QQuickWebEngineView::javascriptClipboard_data() +{ + QTest::addColumn<bool>("javascriptCanAccessClipboard"); + QTest::addColumn<bool>("javascriptCanPaste"); + QTest::addColumn<bool>("copyResult"); + QTest::addColumn<bool>("pasteResult"); + + QTest::newRow("default") << false << false << false << false; + QTest::newRow("canCopy") << true << false << true << false; + // paste command requires both permissions + QTest::newRow("canPaste") << false << true << false << false; + QTest::newRow("canCopyAndPaste") << true << true << true << true; +} + +void tst_QQuickWebEngineView::javascriptClipboard() +{ + QFETCH(bool, javascriptCanAccessClipboard); + QFETCH(bool, javascriptCanPaste); + QFETCH(bool, copyResult); + QFETCH(bool, pasteResult); + + // check defaults + QCOMPARE(webEngineView()->settings()->javascriptCanAccessClipboard(), false); + QCOMPARE(webEngineView()->settings()->javascriptCanPaste(), false); + + // check accessors + webEngineView()->settings()->setJavascriptCanAccessClipboard(javascriptCanAccessClipboard); + webEngineView()->settings()->setJavascriptCanPaste(javascriptCanPaste); + QCOMPARE(webEngineView()->settings()->javascriptCanAccessClipboard(), + javascriptCanAccessClipboard); + QCOMPARE(webEngineView()->settings()->javascriptCanPaste(), javascriptCanPaste); + + QQuickWebEngineView *view = webEngineView(); + view->loadHtml("<html><body>" + "<input type='text' value='OriginalText' id='myInput'/>" + "</body></html>"); + QVERIFY(waitForLoadSucceeded(view)); + + // make sure that 'OriginalText' is selected + evaluateJavaScriptSync(view, "document.getElementById('myInput').select()"); + QCOMPARE(evaluateJavaScriptSync(view, "window.getSelection().toString()").toString(), + "OriginalText"); + + // Check that the actual settings work by the + // - return value of queryCommandEnabled and + // - return value of execCommand + // - comparing the clipboard / input field + QGuiApplication::clipboard()->clear(); + QCOMPARE(evaluateJavaScriptSync(view, "document.queryCommandEnabled('copy')").toBool(), + copyResult); + QCOMPARE(evaluateJavaScriptSync(view, "document.execCommand('copy')").toBool(), copyResult); + QCOMPARE(QGuiApplication::clipboard()->text(), + (copyResult ? QString("OriginalText") : QString())); + + QGuiApplication::clipboard()->setText("AnotherText"); + QCOMPARE(evaluateJavaScriptSync(view, "document.queryCommandEnabled('paste')").toBool(), + pasteResult); + QCOMPARE(evaluateJavaScriptSync(view, "document.execCommand('paste')").toBool(), pasteResult); + QCOMPARE(evaluateJavaScriptSync(view, "document.getElementById('myInput').value").toString(), + (pasteResult ? QString("AnotherText") : QString("OriginalText"))); +} + QTEST_MAIN(tst_QQuickWebEngineView) #include "tst_qquickwebengineview.moc" diff --git a/tests/auto/widgets/qwebenginesettings/tst_qwebenginesettings.cpp b/tests/auto/widgets/qwebenginesettings/tst_qwebenginesettings.cpp index 5cbcf4ec0..9c008cb90 100644 --- a/tests/auto/widgets/qwebenginesettings/tst_qwebenginesettings.cpp +++ b/tests/auto/widgets/qwebenginesettings/tst_qwebenginesettings.cpp @@ -17,11 +17,17 @@ Boston, MA 02110-1301, USA. */ +#include "../util.h" + #include <QtTest/QtTest> +#include <qwebenginepage.h> #include <qwebengineprofile.h> #include <qwebenginesettings.h> +#include <QtGui/qclipboard.h> +#include <QtGui/qguiapplication.h> + class tst_QWebEngineSettings: public QObject { Q_OBJECT @@ -29,6 +35,8 @@ private Q_SLOTS: void resetAttributes(); void defaultFontFamily_data(); void defaultFontFamily(); + void javascriptClipboard_data(); + void javascriptClipboard(); }; void tst_QWebEngineSettings::resetAttributes() @@ -85,6 +93,75 @@ void tst_QWebEngineSettings::defaultFontFamily() QVERIFY(!settings->fontFamily(static_cast<QWebEngineSettings::FontFamily>(fontFamily)).isEmpty()); } +void tst_QWebEngineSettings::javascriptClipboard_data() +{ + QTest::addColumn<bool>("javascriptCanAccessClipboard"); + QTest::addColumn<bool>("javascriptCanPaste"); + QTest::addColumn<bool>("copyResult"); + QTest::addColumn<bool>("pasteResult"); + + QTest::newRow("default") << false << false << false << false; + QTest::newRow("canCopy") << true << false << true << false; + // paste command requires both permissions + QTest::newRow("canPaste") << false << true << false << false; + QTest::newRow("canCopyAndPaste") << true << true << true << true; +} + +void tst_QWebEngineSettings::javascriptClipboard() +{ + QFETCH(bool, javascriptCanAccessClipboard); + QFETCH(bool, javascriptCanPaste); + QFETCH(bool, copyResult); + QFETCH(bool, pasteResult); + + QWebEnginePage page; + + // check defaults + QCOMPARE(page.settings()->testAttribute(QWebEngineSettings::JavascriptCanAccessClipboard), + false); + QCOMPARE(page.settings()->testAttribute(QWebEngineSettings::JavascriptCanPaste), false); + + // check accessors + page.settings()->setAttribute(QWebEngineSettings::JavascriptCanAccessClipboard, + javascriptCanAccessClipboard); + page.settings()->setAttribute(QWebEngineSettings::JavascriptCanPaste, + javascriptCanPaste); + QCOMPARE(page.settings()->testAttribute(QWebEngineSettings::JavascriptCanAccessClipboard), + javascriptCanAccessClipboard); + QCOMPARE(page.settings()->testAttribute(QWebEngineSettings::JavascriptCanPaste), + javascriptCanPaste); + + QSignalSpy loadFinishedSpy(&page, SIGNAL(loadFinished(bool))); + page.setHtml("<html><body>" + "<input type='text' value='OriginalText' id='myInput'/>" + "</body></html>"); + QVERIFY(loadFinishedSpy.wait()); + + // make sure that 'OriginalText' is selected + evaluateJavaScriptSync(&page, "document.getElementById('myInput').select()"); + QCOMPARE(evaluateJavaScriptSync(&page, "window.getSelection().toString()").toString(), + "OriginalText"); + + // Check that the actual settings work by the + // - return value of queryCommandEnabled and + // - return value of execCommand + // - comparing the clipboard / input field + QGuiApplication::clipboard()->clear(); + QCOMPARE(evaluateJavaScriptSync(&page, "document.queryCommandEnabled('copy')").toBool(), + copyResult); + QCOMPARE(evaluateJavaScriptSync(&page, "document.execCommand('copy')").toBool(), copyResult); + QCOMPARE(QApplication::clipboard()->text(), + (copyResult ? QString("OriginalText") : QString())); + + + QGuiApplication::clipboard()->setText("AnotherText"); + QCOMPARE(evaluateJavaScriptSync(&page, "document.queryCommandEnabled('paste')").toBool(), + pasteResult); + QCOMPARE(evaluateJavaScriptSync(&page, "document.execCommand('paste')").toBool(), pasteResult); + QCOMPARE(evaluateJavaScriptSync(&page, "document.getElementById('myInput').value").toString(), + (pasteResult ? QString("AnotherText") : QString("OriginalText"))); +} + QTEST_MAIN(tst_QWebEngineSettings) #include "tst_qwebenginesettings.moc" diff --git a/tests/auto/widgets/widgets.pro b/tests/auto/widgets/widgets.pro index ba1b254f4..36dfaba9f 100644 --- a/tests/auto/widgets/widgets.pro +++ b/tests/auto/widgets/widgets.pro @@ -32,5 +32,5 @@ qtConfig(webengine-spellchecker):!cross_compile { boot2qt: SUBDIRS -= qwebengineaccessibility qwebenginedefaultsurfaceformat \ qwebenginefaviconmanager qwebenginepage qwebenginehistory \ qwebengineprofile qwebengineschemes qwebenginescript \ - qwebengineview qwebenginedownloads + qwebengineview qwebenginedownloads qwebenginesettings |