diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2019-10-23 11:54:23 +0200 |
---|---|---|
committer | Jüri Valdmann <juri.valdmann@qt.io> | 2019-10-23 14:09:52 +0200 |
commit | 73a8a53f6a98f24044f18f403b13dff2fb2645b6 (patch) | |
tree | db75aa6750ea16647960be18f3a6395d427b0d64 | |
parent | fc0dbde7345c37207a54eea04c67ee9160c86134 (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.cpp | 18 |
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) |