-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Expand file tree
/
Copy pathapp-reject-errors.js
More file actions
48 lines (41 loc) · 1.28 KB
/
app-reject-errors.js
File metadata and controls
48 lines (41 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
* A payment handler that opens a window and allows the user to trigger
* different types of promise rejections for testing error propagation.
*/
let resolver = null;
let rejecter = null;
let activeMethodName = null;
self.addEventListener('canmakepayment', event => {
event.respondWith(true);
});
self.addEventListener('message', msgEvent => {
if (!resolver || !rejecter) return;
if (msgEvent.data === 'success') {
resolver({
methodName: activeMethodName,
details: {status: 'success'},
});
} else if (msgEvent.data === 'reject-operation-error') {
rejecter(new DOMException('Reject with OperationError', 'OperationError'));
} else if (msgEvent.data === 'reject-syntax-error') {
rejecter(new DOMException('Reject with SyntaxError', 'SyntaxError'));
} else {
return; // Message not for us.
}
resolver = null;
rejecter = null;
activeMethodName = null;
});
self.addEventListener('paymentrequest', event => {
activeMethodName = event.methodData[0].supportedMethods;
event.respondWith(new Promise((resolve, reject) => {
resolver = resolve;
rejecter = reject;
event.openWindow('payment-app/reject-errors.html').catch(err => {
resolver = null;
rejecter = null;
activeMethodName = null;
reject(err);
});
}));
});