summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/widgets/origins/resources/createObjectURL.html11
-rw-r--r--tests/auto/widgets/origins/tst_origins.cpp18
-rw-r--r--tests/auto/widgets/origins/tst_origins.qrc1
3 files changed, 30 insertions, 0 deletions
diff --git a/tests/auto/widgets/origins/resources/createObjectURL.html b/tests/auto/widgets/origins/resources/createObjectURL.html
new file mode 100644
index 000000000..133f636bb
--- /dev/null
+++ b/tests/auto/widgets/origins/resources/createObjectURL.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>createObjectURL</title>
+ <script>
+ const blob = new Blob(['foo']);
+ const result = URL.createObjectURL(blob);
+ </script>
+ </head>
+ <body></body>
+</html>
diff --git a/tests/auto/widgets/origins/tst_origins.cpp b/tests/auto/widgets/origins/tst_origins.cpp
index 38b23f64e..a24791f6f 100644
--- a/tests/auto/widgets/origins/tst_origins.cpp
+++ b/tests/auto/widgets/origins/tst_origins.cpp
@@ -184,6 +184,7 @@ private Q_SLOTS:
void sharedWorker();
void serviceWorker();
void viewSource();
+ void createObjectURL();
private:
bool load(const QUrl &url)
@@ -682,5 +683,22 @@ void tst_Origins::viewSource()
QCOMPARE(m_page->requestedUrl().toString(), QSL("pathsyntax-viewsourceallowed:/resources/viewSource.html"));
}
+void tst_Origins::createObjectURL()
+{
+ // Legal for registered custom schemes.
+ QVERIFY(load(QSL("qrc:/resources/createObjectURL.html")));
+ QVERIFY(eval(QSL("result")).toString().startsWith(QSL("blob:qrc:")));
+
+ // Illegal for unregistered schemes (renderer gets terminated).
+ qRegisterMetaType<QWebEnginePage::RenderProcessTerminationStatus>("RenderProcessTerminationStatus");
+ QSignalSpy loadFinishedSpy(m_page, &QWebEnginePage::loadFinished);
+ QSignalSpy renderProcessTerminatedSpy(m_page, &QWebEnginePage::renderProcessTerminated);
+ m_page->load(QSL("tst:/resources/createObjectURL.html"));
+ QVERIFY(!renderProcessTerminatedSpy.empty() || renderProcessTerminatedSpy.wait(20000));
+ QVERIFY(renderProcessTerminatedSpy.front().value(0).value<QWebEnginePage::RenderProcessTerminationStatus>()
+ != QWebEnginePage::NormalTerminationStatus);
+ QVERIFY(loadFinishedSpy.empty());
+}
+
QTEST_MAIN(tst_Origins)
#include "tst_origins.moc"
diff --git a/tests/auto/widgets/origins/tst_origins.qrc b/tests/auto/widgets/origins/tst_origins.qrc
index 438fd10ee..0b1fe2d31 100644
--- a/tests/auto/widgets/origins/tst_origins.qrc
+++ b/tests/auto/widgets/origins/tst_origins.qrc
@@ -1,6 +1,7 @@
<!DOCTYPE RCC>
<RCC version="1.0">
<qresource>
+ <file>resources/createObjectURL.html</file>
<file>resources/dedicatedWorker.html</file>
<file>resources/dedicatedWorker.js</file>
<file>resources/mixedSchemes.html</file>