| // META: title=Ensure that navigation failure blocks bfcache and gets recorded. |
| // META: script=./test-helper.js |
| // META: script=/common/dispatcher/dispatcher.js |
| // META: script=/common/get-host-info.sub.js |
| // META: script=/common/utils.js |
| // META: script=/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js |
| // META: script=/html/browsers/browsing-the-web/back-forward-cache/resources/404.py |
| // META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js |
| // META: timeout=long |
| |
| 'use strict'; |
| const {ORIGIN} = get_host_info(); |
| |
| promise_test(async t => { |
| const rcHelper = new RemoteContextHelper(); |
| // Open a window with noopener so that BFCache will work. |
| const rc1 = await rcHelper.addWindow( |
| /*config=*/ {status: 404}, /*options=*/ {features: 'noopener'}); |
| const rc1_url = await rc1.executeScript(() => { |
| return location.href; |
| }); |
| |
| // Check the BFCache result and the reported reasons. |
| await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ false); |
| await assertNotRestoredFromBFCache(rc1, ['response-status-not-ok']); |
| }); |