summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/fetch/fetch-later/basic.tentative.https.window.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/fetch/fetch-later/basic.tentative.https.window.js')
-rw-r--r--testing/web-platform/tests/fetch/fetch-later/basic.tentative.https.window.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/testing/web-platform/tests/fetch/fetch-later/basic.tentative.https.window.js b/testing/web-platform/tests/fetch/fetch-later/basic.tentative.https.window.js
new file mode 100644
index 0000000000..37f72ab89e
--- /dev/null
+++ b/testing/web-platform/tests/fetch/fetch-later/basic.tentative.https.window.js
@@ -0,0 +1,46 @@
+'use strict';
+
+test(() => {
+ assert_throws_js(TypeError, () => fetchLater());
+}, `fetchLater() cannot be called without request.`);
+
+test(() => {
+ assert_throws_js(TypeError, () => fetchLater('http://www.google.com'));
+ assert_throws_js(TypeError, () => fetchLater('file://tmp'));
+ assert_throws_js(TypeError, () => fetchLater('ssh://example.com'));
+ assert_throws_js(TypeError, () => fetchLater('wss://example.com'));
+ assert_throws_js(TypeError, () => fetchLater('about:blank'));
+ assert_throws_js(TypeError, () => fetchLater(`javascript:alert('');`));
+}, `fetchLater() throws TypeError on non-HTTPS URL.`);
+
+test(() => {
+ assert_throws_js(
+ RangeError,
+ () => fetchLater('https://www.google.com', {activateAfter: -1}));
+}, `fetchLater() throws RangeError on negative activateAfter.`);
+
+test(() => {
+ const result = fetchLater('/');
+ assert_false(result.activated);
+}, `fetchLater()'s return tells the deferred request is not yet sent.`);
+
+test(() => {
+ const result = fetchLater('/');
+ assert_throws_js(TypeError, () => result.activated = true);
+}, `fetchLater() throws TypeError when mutating its returned state.`);
+
+test(() => {
+ const controller = new AbortController();
+ // Immediately aborts the controller.
+ controller.abort();
+ assert_throws_dom(
+ 'AbortError', () => fetchLater('/', {signal: controller.signal}));
+}, `fetchLater() throws AbortError when its initial abort signal is aborted.`);
+
+test(() => {
+ const controller = new AbortController();
+ const result = fetchLater('/', {signal: controller.signal});
+ assert_false(result.activated);
+ controller.abort();
+ assert_false(result.activated);
+}, `fetchLater() does not throw error when it is aborted before sending.`);