mirror of
https://github.com/servo/servo.git
synced 2025-08-20 12:55:33 +01:00
Update web-platform-tests and CSS tests.
- Update CSS tests to revision e05bfd5e30ed662c2f8a353577003f8eed230180. - Update web-platform-tests to revision a052787dd5c069a340031011196b73affbd68cd9.
This commit is contained in:
parent
fb4f421c8b
commit
296fa2512b
21852 changed files with 2080936 additions and 892894 deletions
BIN
tests/wpt/web-platform-tests/notifications/resources/icon.png
Normal file
BIN
tests/wpt/web-platform-tests/notifications/resources/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
|
@ -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)
|
||||
});
|
||||
});
|
||||
})
|
||||
);
|
||||
};
|
|
@ -0,0 +1,52 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<body>
|
||||
<script>
|
||||
const worker = 'resources/shownotification-sw.js';
|
||||
|
||||
function reset() {
|
||||
return navigator.serviceWorker.getRegistrations().then(registrations => {
|
||||
return Promise.all(registrations.map(r => r.unregister()));
|
||||
});
|
||||
}
|
||||
|
||||
function getNewestWorker(reg) {
|
||||
return reg.installing || reg.waiting || reg.active;
|
||||
}
|
||||
|
||||
function registerSwAndGetWorker() {
|
||||
return reset()
|
||||
.then(() => navigator.serviceWorker.register(worker))
|
||||
.then(getNewestWorker);
|
||||
}
|
||||
|
||||
promise_test(() => {
|
||||
// Get notification permission
|
||||
return Notification.requestPermission().then(permission => {
|
||||
if (permission != "granted") {
|
||||
throw Error('You must allow notifications for this origin before running this test.');
|
||||
}
|
||||
return registerSwAndGetWorker();
|
||||
}).then(worker => {
|
||||
return new Promise(resolve => {
|
||||
// Wait for the service worker to post a message with type 'notification-data'.
|
||||
navigator.serviceWorker.onmessage = event => {
|
||||
if (event.data && event.data.type == 'notification-data') {
|
||||
resolve(event.data);
|
||||
navigator.serviceWorker.onmessage = null;
|
||||
}
|
||||
};
|
||||
|
||||
// Ask the service worker to run the test.
|
||||
worker.postMessage('test-shownotification');
|
||||
})
|
||||
}).then(result => {
|
||||
assert_true(result.notificationReturned, `Notification appeared in getNotifications`);
|
||||
// The icon is delayed by 2000ms, so showNotification should have taken at least 1900 to resolve.
|
||||
assert_greater_than(result.resolveDuration, 1900, `showNotification appeared to wait for icon load`);
|
||||
});
|
||||
}, 'showNotification resolves after icon fetch');
|
||||
|
||||
</script>
|
||||
</body>
|
Loading…
Add table
Add a link
Reference in a new issue