diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-02-02 14:22:12 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-02-02 14:22:12 +0100 |
commit | bd605cd2bae8a6c555bb1688573c892831b3ba9d (patch) | |
tree | 67beeb63cf353e0dffea0fc6d8cf2bd861877a6b /tests/auto/quick | |
parent | c8bb939e7e45214f17daf8f576582e5bff2527ea (diff) | |
parent | 0cc07329495a05fc5f8532c4420bd23db662fdb6 (diff) |
Merge remote-tracking branch 'origin/5.11' into dev
Change-Id: I454bb7216b013cc9aa9ee660893fe37034fd50e1
Diffstat (limited to 'tests/auto/quick')
-rw-r--r-- | tests/auto/quick/qmltests/BLACKLIST | 3 | ||||
-rw-r--r-- | tests/auto/quick/qquickwebengineview/tst_qquickwebengineview.cpp | 66 |
2 files changed, 69 insertions, 0 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" |