| <!-- 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 PaymentRequest in the Interactive 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 the promise returned by show() was rejected with "AbortError".'); | |
| await shouldRejectWithErrorName('responsePromise', 'AbortError'); | |
| debug('Testing that PaymentRequest is now in the Closed state.'); | |
| await shouldRejectWithErrorName('request.abort()', '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 PaymentRequest in the Interactive state.'); | |
| request = new PaymentRequest([validPaymentMethod()], validPaymentDetails()); | |
| responsePromise = request.show(); | |
| }); | |
| setTimeout(function() { | |
| window.location.href = '/navigation/resources/page-cache-helper.html'; | |
| }, 0); | |
| }, false); | |
| </script> | |
| </body> | |
| </html> |