From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../tests/notifications/resources/custom-data.js | 66 +++++++++++++++++++++ .../tests/notifications/resources/helpers.js | 20 +++++++ .../tests/notifications/resources/icon.png | Bin 0 -> 1540 bytes .../notifications/resources/shownotification-sw.js | 27 +++++++++ 4 files changed, 113 insertions(+) create mode 100644 testing/web-platform/tests/notifications/resources/custom-data.js create mode 100644 testing/web-platform/tests/notifications/resources/helpers.js create mode 100644 testing/web-platform/tests/notifications/resources/icon.png create mode 100644 testing/web-platform/tests/notifications/resources/shownotification-sw.js (limited to 'testing/web-platform/tests/notifications/resources') diff --git a/testing/web-platform/tests/notifications/resources/custom-data.js b/testing/web-platform/tests/notifications/resources/custom-data.js new file mode 100644 index 0000000000..b21d28a1bb --- /dev/null +++ b/testing/web-platform/tests/notifications/resources/custom-data.js @@ -0,0 +1,66 @@ +var fakeCustomData = (function() { + var buffer = new ArrayBuffer(2); + new DataView(buffer).setInt16(0, 42, true); + var canvas = document.createElement("canvas"); + canvas.width = canvas.height = 100; + var context = canvas.getContext("2d"); + + var map = new Map(); + var set = new Set(); + map.set("test", 42); + set.add(4); + set.add(2); + + return { + primitives: { + a: 123, + b: "test", + c: true, + d: [1, 2, 3], + }, + date: new Date(2013, 2, 1, 1, 10), + regexp: new RegExp("[^.]+"), + arrayBuffer: buffer, + imageData: context.createImageData(100, 100), + map, + set, + }; +})(); + +function assert_custom_data(dataObj) { + assert_equals(typeof dataObj, "object", "data should be a JS object"); + assert_equals( + JSON.stringify(dataObj.primitives), + JSON.stringify(fakeCustomData.primitives), + "data.primitives should be preserved" + ); + assert_equals( + dataObj.date.toDateString(), + fakeCustomData.date.toDateString(), + "data.date should be preserved" + ); + assert_equals( + dataObj.regexp.exec("http://www.domain.com")[0].substr(7), + "www", + "data.regexp should be preserved" + ); + assert_equals( + new Int16Array(dataObj.arrayBuffer)[0], + 42, + "data.arrayBuffer should be preserved" + ); + assert_equals( + JSON.stringify(dataObj.imageData.data), + JSON.stringify(fakeCustomData.imageData.data), + "data.imageData should be preserved" + ) + assert_equals( + dataObj.map.get("test"), + 42, + "data.map should be preserved" + ); + assert_true( + dataObj.set.has(4) && dataObj.set.has(2), + "data.set should be preserved" + ); +} diff --git a/testing/web-platform/tests/notifications/resources/helpers.js b/testing/web-platform/tests/notifications/resources/helpers.js new file mode 100644 index 0000000000..8c30173336 --- /dev/null +++ b/testing/web-platform/tests/notifications/resources/helpers.js @@ -0,0 +1,20 @@ +function unregisterAllServiceWorker() { + return navigator.serviceWorker.getRegistrations().then(registrations => { + return Promise.all(registrations.map(r => r.unregister())); + }); +} + +async function getActiveServiceWorker(script) { + await unregisterAllServiceWorker(); + const reg = await navigator.serviceWorker.register(script); + add_completion_callback(() => reg.unregister()); + await navigator.serviceWorker.ready; + return reg; +} + + +async function closeAllNotifications() { + for (const n of await registration.getNotifications()) { + n.close(); + } +} diff --git a/testing/web-platform/tests/notifications/resources/icon.png b/testing/web-platform/tests/notifications/resources/icon.png new file mode 100644 index 0000000000..ee919cd512 Binary files /dev/null and b/testing/web-platform/tests/notifications/resources/icon.png differ diff --git a/testing/web-platform/tests/notifications/resources/shownotification-sw.js b/testing/web-platform/tests/notifications/resources/shownotification-sw.js new file mode 100644 index 0000000000..63a1569460 --- /dev/null +++ b/testing/web-platform/tests/notifications/resources/shownotification-sw.js @@ -0,0 +1,27 @@ +self.onmessage = event => { + // Checking for a particular value, so more tests can be added in future. + if (event.data !== 'test-shownotification') return; + + // Random number, so we can identify the notification we create. + const random = Math.random().toString(); + const start = Date.now(); + + event.waitUntil( + self.registration.showNotification('test', { + tag: random, + // ?pipe=trickle(d2) delays the icon request by two seconds + icon: 'icon.png?pipe=trickle(d2)' + }).then(() => { + const resolveDuration = Date.now() - start; + + return self.registration.getNotifications().then(notifications => { + event.source.postMessage({ + type: 'notification-data', + resolveDuration, + // Check if our notification is in notifications + notificationReturned: notifications.some(n => n.tag == random) + }); + }); + }) + ); +}; \ No newline at end of file -- cgit v1.2.3