tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

app-can-make-payment.js (1560B)


      1 let responseType = 'canMakePayment-true';
      2 
      3 self.addEventListener('canmakepayment', event => {
      4  if (event.methodData) {
      5    const msg = 'Expected no method data.';
      6    event.respondWith(Promise.reject(new Error(msg)));
      7    return;
      8  }
      9 
     10  if (event.modifiers) {
     11    const msg = 'Expected no modifiers';
     12    event.respondWith(Promise.reject(new Error(msg)));
     13    return;
     14  }
     15 
     16  if (event.topOrigin) {
     17    const msg = `Unexpected topOrigin.`;
     18    event.respondWith(Promise.reject(new Error(msg)));
     19    return;
     20  }
     21 
     22  if (event.paymentRequestOrigin) {
     23    const msg = `Unexpected iframe origin.`;
     24    event.respondWith(Promise.reject(new Error(msg)));
     25    return;
     26  }
     27 
     28  switch (responseType) {
     29    case 'canMakePayment-true':
     30      event.respondWith(true);
     31      break;
     32    case 'canMakePayment-false':
     33      event.respondWith(false);
     34      break;
     35    case 'canMakePayment-promise-true':
     36      event.respondWith(Promise.resolve(true));
     37      break;
     38    case 'canMakePayment-promise-false':
     39      event.respondWith(Promise.resolve(false));
     40      break;
     41    case 'canMakePayment-custom-error':
     42      event.respondWith(Promise.reject(new Error('Custom error')));
     43      break;
     44    default:
     45      const msg = `Unrecognized payment method name "${methodName}".`;
     46      event.respondWith(Promise.reject(new Error(msg)));
     47      break;
     48  }
     49 });
     50 
     51 self.addEventListener('paymentrequest', event => {
     52  responseType = event.methodData[0].data.responseType;
     53  event.respondWith({
     54    methodName: event.methodData[0].supportedMethods,
     55    details: {status: 'success'},
     56  });
     57 });