| <!-- webkit-test-runner [ UsesBackForwardCache=true ] --> | |
| <!DOCTYPE html> | |
| <html> | |
| <body> | |
| <script src='/js-test-resources/js-test.js'></script> | |
| <script src='/js-test-resources/ui-helper.js'></script> | |
| <script src='/resources/payment-request.js'></script> | |
| <script> | |
| description('Tests that a page with a PaymentResponse in the Created state goes into the back/forward cache.'); | |
| window.jsTestIsAsync = true; | |
| window.addEventListener('pageshow', async function(event) { | |
| debug('pageshow - ' + (event.persisted ? '' : 'not ') + 'from cache'); | |
| if (!event.persisted) | |
| return; | |
| testPassed('Page did enter and was restored from the back/forward cache'); | |
| debug('Testing that PaymentResponse is now in the Closed state.'); | |
| await shouldRejectWithErrorName('response.complete()', 'InvalidStateError'); | |
| await shouldRejectWithErrorName('response.retry()', 'InvalidStateError'); | |
| finishJSTest(); | |
| }, false); | |
| window.addEventListener('pagehide', function(event) { | |
| debug('pagehide - ' + (event.persisted ? '' : 'not ') + 'entering cache'); | |
| if (event.persisted) | |
| return; | |
| testFailed('Page failed to enter the back/forward cache.'); | |
| finishJSTest(); | |
| }, false); | |
| window.addEventListener('load', function() { | |
| UIHelper.withUserGesture(async function() { | |
| debug('Creating a PaymentResponse in the Created state.'); | |
| const request = new PaymentRequest([validPaymentMethod()], validPaymentDetails()); | |
| const responsePromise = request.show(); | |
| internals.mockPaymentCoordinator.acceptPayment(); | |
| response = await responsePromise; | |
| setTimeout(function() { | |
| window.location.href = '/navigation/resources/page-cache-helper.html'; | |
| }, 0); | |
| }); | |
| }, false); | |
| </script> | |
| </body> | |
| </html> |