tor-browser

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

test_bug1490698.html (4012B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=1490698
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <title>Test for retry PaymentRequest</title>
      9  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     10  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     11  <script type="application/javascript" src="DefaultData.js"></script>
     12  <script type="application/javascript">
     13 
     14  "use strict";
     15  SimpleTest.waitForExplicitFinish();
     16 
     17  const gUrl = SimpleTest.getTestFileURL('Bug1490698ChromeScript.js');
     18  const gScript = SpecialPowers.loadChromeScript(gUrl);
     19 
     20  function testFailHandler(message) {
     21    ok(false, message);
     22  }
     23  function testPassHandler(message) {
     24    ok(true, message);
     25  }
     26  gScript.addMessageListener("test-fail", testFailHandler);
     27  gScript.addMessageListener("test-pass", testPassHandler);
     28 
     29  async function requestChromeAction(action, params) {
     30    gScript.sendAsyncMessage(action, params);
     31    await new Promise(resolve => {
     32      gScript.addMessageListener(`${action}-complete`, function completeListener() {
     33        gScript.removeMessageListener(`${action}-complete`, completeListener);
     34        resolve();
     35      });
     36    });
     37  }
     38  function unexpectedErrMsg(testName, errName, timing) {
     39    return `${testName}: Unexpected error(${errName}) when ${timing} the PaymentRequest.`;
     40  }
     41 
     42  async function testInteractWithPaymentUnderWrongState() {
     43    const testName = "testInteractWithPaymentUnderWrongState";
     44    await requestChromeAction("start-test", testName);
     45    const payRequest = new PaymentRequest(defaultMethods, defaultDetails, defaultOptions);
     46    ok(payRequest, testName + ": failed to create PaymentRequest.");
     47    if (!payRequest) {
     48      await requestChromeAction("finish-test");
     49      return;
     50    }
     51    const handler = SpecialPowers.getDOMWindowUtils(window).setHandlingUserInput(true);
     52    let payResponse;
     53    try {
     54      payResponse = await payRequest.show();
     55      info(`${testName}: Interact with payment when PaymentRequest is eClosed`);
     56      await requestChromeAction("interact-with-payment");
     57      handler.destruct();
     58    } catch(err) {
     59      ok(false, unexpectedErrMsg(testName, err.name, "showing"));
     60      handler.destruct();
     61      await requestChromeAction("finish-test");
     62      return;
     63    }
     64    try {
     65      await payResponse.complete("success");
     66      ok(true, `${testName}: complete() is successful after PaymentRequest's state is eClosed.`);
     67    } catch(err) {
     68      ok(false, unexpectedErrMsg(testName, err.name, "completing"));
     69      await requestChromeAction("finish-test");
     70      return;
     71    }
     72    try {
     73      info(`${testName}: Interact with payment when PaymentRequest is completed`);
     74      await requestChromeAction("interact-with-payment");
     75    } catch(err) {
     76      ok(false, unexpectedErrMsg(testName, err.name, "completing"));
     77      await requestChromeAction("finish-test");
     78      return;
     79    }
     80    await requestChromeAction("finish-test");
     81  }
     82 
     83  function teardown() {
     84    return new Promise((resolve, reject) => {
     85      gScript.addMessageListener("teardown-complete", function teardownCompleteHandler() {
     86        gScript.removeMessageListener("teardown-complete", teardownCompleteHandler);
     87        gScript.removeMessageListener("test-fail", testFailHandler);
     88        gScript.removeMessageListener("test-pass", testPassHandler);
     89        gScript.destroy();
     90        SimpleTest.finish();
     91        resolve();
     92      });
     93      gScript.sendAsyncMessage("teardown");
     94    });
     95  }
     96 
     97  async function runTests() {
     98    try {
     99      await testInteractWithPaymentUnderWrongState();
    100      await teardown();
    101    } catch(e) {
    102      ok(false, "Unexpected error: " + e.name);
    103      SimpleTest.finish();
    104    }
    105  }
    106 
    107  window.addEventListener('load', function() {
    108    SpecialPowers.pushPrefEnv({
    109      'set': [
    110        ['dom.payments.request.enabled', true],
    111      ]
    112    }, runTests);
    113  });
    114  </script>
    115 </head>
    116 <body>
    117 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1490698">Mozilla Bug 1490698</a>
    118 </body>
    119 </html>