summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/fenced-frame/resolve-to-config-promise.https.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/fenced-frame/resolve-to-config-promise.https.html')
-rw-r--r--testing/web-platform/tests/fenced-frame/resolve-to-config-promise.https.html80
1 files changed, 80 insertions, 0 deletions
diff --git a/testing/web-platform/tests/fenced-frame/resolve-to-config-promise.https.html b/testing/web-platform/tests/fenced-frame/resolve-to-config-promise.https.html
new file mode 100644
index 0000000000..97df37ef2b
--- /dev/null
+++ b/testing/web-platform/tests/fenced-frame/resolve-to-config-promise.https.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<title>Test setting auction config's resolveToConfig to a promise</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/dispatcher/dispatcher.js"></script>
+<script src="resources/utils.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/default-enabled-features-helper.js"></script>
+
+<body>
+<script>
+// To simulate the time it takes for a promise to resolve, we use a simple
+// timeout that eventually resolves to a boolean.
+function delayValue(value, timeout) {
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ resolve(value);
+ }, timeout);
+ });
+}
+
+promise_test(async(t) => {
+ const key = token();
+
+ const urn = await generateURNFromFledge("resources/embeddee.html", [key],
+ [], delayValue(true, 500));
+ assert_true(urn instanceof FencedFrameConfig);
+ const fencedframe = attachFencedFrame(urn);
+
+ const page1_resp = await nextValueFromServer(key);
+ assert_equals(page1_resp, "PASS",
+ "The page should have loaded.");
+}, 'resolveToConfig set to a promise that resolves to true');
+
+promise_test(async(t) => {
+ const key = token();
+
+ const urn = await generateURNFromFledge("resources/embeddee.html", [key],
+ [], delayValue(false, 500));
+ assert_false(urn instanceof FencedFrameConfig);
+ const fencedframe = attachFencedFrame(urn);
+
+ const page1_resp = await nextValueFromServer(key);
+ assert_equals(page1_resp, "PASS",
+ "The page should have loaded.");
+}, 'resolveToConfig set to a promise that resolves to false');
+
+promise_test(async(t) => {
+ // This tests the case where the resolveToConfig promise resolves before
+ // the auction finishes
+ const key = token();
+
+ const urn = await generateURNFromFledge("resources/embeddee.html", [key],
+ [], delayValue(true, 0));
+ assert_true(urn instanceof FencedFrameConfig);
+ const fencedframe = attachFencedFrame(urn);
+
+ const page1_resp = await nextValueFromServer(key);
+ assert_equals(page1_resp, "PASS",
+ "The page should have loaded.");
+}, 'resolveToConfig set to a promise that immediately resolves');
+
+promise_test(async(t) => {
+ const key = token();
+
+ // This should still resolve, but resolve to a URN.
+ const urn = await generateURNFromFledge("resources/embeddee.html", [key],
+ [], delayValue("invalid", 0));
+ assert_false(urn instanceof FencedFrameConfig);
+ const fencedframe = attachFencedFrame(urn);
+
+ const page1_resp = await nextValueFromServer(key);
+ assert_equals(page1_resp, "PASS",
+ "The page should have loaded.");
+}, 'resolveToConfig set to a promise that resolves to an invalid value');
+
+</script>
+</body>
+</html>