summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/cookie-store/serviceworker_cookiechange_eventhandler_mismatched_subscription.https.any.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/cookie-store/serviceworker_cookiechange_eventhandler_mismatched_subscription.https.any.js')
-rw-r--r--testing/web-platform/tests/cookie-store/serviceworker_cookiechange_eventhandler_mismatched_subscription.https.any.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/testing/web-platform/tests/cookie-store/serviceworker_cookiechange_eventhandler_mismatched_subscription.https.any.js b/testing/web-platform/tests/cookie-store/serviceworker_cookiechange_eventhandler_mismatched_subscription.https.any.js
new file mode 100644
index 0000000000..30d8d70940
--- /dev/null
+++ b/testing/web-platform/tests/cookie-store/serviceworker_cookiechange_eventhandler_mismatched_subscription.https.any.js
@@ -0,0 +1,44 @@
+// META: title=Cookie Store API: cookiechange event in ServiceWorker with mismatched subscription
+// META: global=serviceworker
+
+'use strict';
+
+const kScope = '/cookie-store/does/not/exist';
+
+// Resolves when the service worker receives the 'activate' event.
+const kServiceWorkerActivatedPromise = new Promise((resolve) => {
+ self.addEventListener('activate', event => { resolve(); });
+});
+
+// Resolves when a cookiechange event is received.
+const kCookieChangeReceivedPromise = new Promise((resolve) => {
+ self.addEventListener('cookiechange', (event) => {
+ resolve(event);
+ });
+});
+
+promise_test(async testCase => {
+ await kServiceWorkerActivatedPromise;
+
+ const subscriptions = [{ name: 'cookie-name', url: `${kScope}/path` }];
+ await registration.cookies.subscribe(subscriptions);
+ testCase.add_cleanup(() => registration.cookies.unsubscribe(subscriptions));
+
+ await cookieStore.set('another-cookie-name', 'cookie-value');
+ testCase.add_cleanup(async () => {
+ await cookieStore.delete('another-cookie-name');
+ });
+ await cookieStore.set('cookie-name', 'cookie-value');
+ testCase.add_cleanup(async () => {
+ await cookieStore.delete('cookie-name');
+ });
+
+ const event = await kCookieChangeReceivedPromise;
+ assert_equals(event.type, 'cookiechange');
+ assert_equals(event.changed.length, 1);
+ assert_equals(event.changed[0].name, 'cookie-name');
+ assert_equals(event.changed[0].value, 'cookie-value');
+ assert_equals(event.deleted.length, 0);
+ assert_true(event instanceof ExtendableCookieChangeEvent);
+ assert_true(event instanceof ExtendableEvent);
+}, 'cookiechange not dispatched for change that does not match subscription');