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