diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-01-31 12:01:22 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-03-09 17:01:53 +0100 |
commit | 1baf16274b7d12dc575f4d5f157ff0e72abac107 (patch) | |
tree | 0f91a0da5dd6f97c4e215bbe59eadb507092f468 /tests | |
parent | 67d874b53d3d32ad8af23a1947f81fb40c63c203 (diff) |
Add test for blocking of remote content
Task-number: QTBUG-50686
Change-Id: Ie176bece1a44a6df608646e91171d02ceeea7e8f
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
(cherry picked from commit b8603c148c6cd53bdd82d0b712971cfc1b747780)
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/core/origins/resources/media.html | 15 | ||||
-rw-r--r-- | tests/auto/core/origins/tst_origins.cpp | 32 |
2 files changed, 47 insertions, 0 deletions
diff --git a/tests/auto/core/origins/resources/media.html b/tests/auto/core/origins/resources/media.html new file mode 100644 index 000000000..091485b61 --- /dev/null +++ b/tests/auto/core/origins/resources/media.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html> + <head> + <title>Media</title> + <script> + function addAudio(src) { + let aud = document.createElement('audio') + aud.src = src + document.getElementsByTagName("body")[0].appendChild(aud) + } + </script> + </head> + <body> + </body> +</html> diff --git a/tests/auto/core/origins/tst_origins.cpp b/tests/auto/core/origins/tst_origins.cpp index ce670991a..b958290f3 100644 --- a/tests/auto/core/origins/tst_origins.cpp +++ b/tests/auto/core/origins/tst_origins.cpp @@ -266,6 +266,8 @@ private Q_SLOTS: void mixedXHR(); void mixedContent_data(); void mixedContent(); + void localMediaBlock_data(); + void localMediaBlock(); #if defined(WEBSOCKETS) void webSocket(); #endif @@ -1239,5 +1241,35 @@ void tst_Origins::redirect() QCOMPARE(m_handler->requests()[6], QUrl(QStringLiteral("redirect2:/resources/Akronim-Regular.woff2"))); } +void tst_Origins::localMediaBlock_data() +{ + QTest::addColumn<bool>("enableAccess"); + QTest::addRow("enabled") << true; + QTest::addRow("disabled") << false; +} + +void tst_Origins::localMediaBlock() +{ + QFETCH(bool, enableAccess); + + std::atomic<bool> accessed = false; + HttpServer server; + server.setResourceDirs({ QDir(QT_TESTCASE_SOURCEDIR).canonicalPath() + "/resources" }); + connect(&server, &HttpServer::newRequest, [&](HttpReqRep *) { accessed.store(true); }); + QVERIFY(server.start()); + + ScopedAttribute sa1(m_page->settings(), QWebEngineSettings::LocalContentCanAccessRemoteUrls, enableAccess); + + QVERIFY(verifyLoad("file:" + QDir(QT_TESTCASE_SOURCEDIR).canonicalPath() + + "/resources/media.html")); + eval("addAudio('" + server.url("/mixedXHR.txt").toString() + "')"); + + // Give it a chance to avoid a false positive on the default value of accessed. + if (!enableAccess) + QTest::qSleep(500); + QTRY_COMPARE(accessed.load(), enableAccess); + +} + QTEST_MAIN(tst_Origins) #include "tst_origins.moc" |