summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2022-01-31 12:01:22 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2022-03-09 17:01:53 +0100
commit1baf16274b7d12dc575f4d5f157ff0e72abac107 (patch)
tree0f91a0da5dd6f97c4e215bbe59eadb507092f468 /tests
parent67d874b53d3d32ad8af23a1947f81fb40c63c203 (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.html15
-rw-r--r--tests/auto/core/origins/tst_origins.cpp32
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"