summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJüri Valdmann <juri.valdmann@qt.io>2019-10-23 11:54:23 +0200
committerJüri Valdmann <juri.valdmann@qt.io>2019-10-23 14:09:52 +0200
commit73a8a53f6a98f24044f18f403b13dff2fb2645b6 (patch)
treedb75aa6750ea16647960be18f3a6395d427b0d64
parentfc0dbde7345c37207a54eea04c67ee9160c86134 (diff)
Test XMLHttpRequests to CorsEnabled custom schemes
Previously cross-origin XMLHttpRequests could only be made to the builtin CORS-enabled schemes, http, https, data, and chrome. Now we also support extending this set with new custom schemes using the CorsEnabled flag. Fixes: QTBUG-79322 Change-Id: I8628aad2be62013e32708308797712de82ff185b Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-rw-r--r--tests/auto/widgets/origins/tst_origins.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/tests/auto/widgets/origins/tst_origins.cpp b/tests/auto/widgets/origins/tst_origins.cpp
index 02d5bfba3..990ca70a7 100644
--- a/tests/auto/widgets/origins/tst_origins.cpp
+++ b/tests/auto/widgets/origins/tst_origins.cpp
@@ -134,6 +134,13 @@ void registerSchemes()
scheme.setFlags(QWebEngineUrlScheme::CorsEnabled);
QWebEngineUrlScheme::registerScheme(scheme);
}
+
+ {
+ QWebEngineUrlScheme scheme(QBAL("cors"));
+ scheme.setFlags(QWebEngineUrlScheme::CorsEnabled);
+ QWebEngineUrlScheme::registerScheme(scheme);
+ }
+
}
Q_CONSTRUCTOR_FUNCTION(registerSchemes)
@@ -159,6 +166,7 @@ public:
profile->installUrlSchemeHandler(QBAL("HostPortAndUserInformationSyntax"), this);
profile->installUrlSchemeHandler(QBAL("redirect1"), this);
profile->installUrlSchemeHandler(QBAL("redirect2"), this);
+ profile->installUrlSchemeHandler(QBAL("cors"), this);
}
QVector<QUrl> &requests() { return m_requests; }
@@ -569,7 +577,9 @@ void tst_Origins::mixedSchemesWithCsp()
// Load the main page over one scheme, then make an XMLHttpRequest to a
// different scheme.
//
-// XMLHttpRequests can only be made to http, https, data, and chrome.
+// Cross-origin XMLHttpRequests can only be made to CORS-enabled schemes. These
+// include the builtin schemes http, https, data, and chrome, as well as custom
+// schemes with the CorsEnabled flag.
void tst_Origins::mixedXHR()
{
QVERIFY(load(QSL("file:" THIS_DIR "resources/mixedXHR.html")));
@@ -581,6 +591,8 @@ void tst_Origins::mixedXHR()
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
eval(QSL("sendXHR('data:,ok')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+ eval(QSL("sendXHR('cors:/resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
QVERIFY(load(QSL("qrc:/resources/mixedXHR.html")));
eval(QSL("sendXHR('file:" THIS_DIR "resources/mixedXHR.txt')"));
@@ -591,6 +603,8 @@ void tst_Origins::mixedXHR()
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
eval(QSL("sendXHR('data:,ok')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+ eval(QSL("sendXHR('cors:/resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
QVERIFY(load(QSL("tst:/resources/mixedXHR.html")));
eval(QSL("sendXHR('file:" THIS_DIR "resources/mixedXHR.txt')"));
@@ -601,6 +615,8 @@ void tst_Origins::mixedXHR()
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
eval(QSL("sendXHR('data:,ok')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+ eval(QSL("sendXHR('cors:/resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
}
#if defined(WEBSOCKETS)