back-forward-cache-with-open-websocket-connection-and-close-it-in-pagehide.window.js (1269B)
1 // META: title=Testing BFCache support for a page with an open WebSocket connection, but close it in pagehide. 2 // META: script=/common/dispatcher/dispatcher.js 3 // META: script=/common/utils.js 4 // META: script=/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js 5 // META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js 6 // META: script=/websockets/constants.sub.js 7 // META: script=resources/websockets-test-helpers.sub.js 8 9 'use strict'; 10 11 promise_test(async t => { 12 const rcHelper = new RemoteContextHelper(); 13 // Open a window with noopener so that BFCache will work. 14 const rc1 = await rcHelper.addWindow( 15 /*config=*/ null, /*options=*/ { features: 'noopener' }); 16 17 await openWebSocketAndCloseItInPageHide(rc1); 18 19 // The page should be eligible for BFCache because the WebSocket connection will be closed in `pagehide`. 20 // `pagehide` is dispatched before BFCache 21 await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ true); 22 23 // Read WebSocket event flags 24 const { wsError, wsClose } = await readWebSocketCloseAndErrorFlags(rc1); 25 26 assert_false(wsError, 'WebSocket should not have error'); 27 assert_true(wsClose, 'WebSocket should have been closed via pagehide'); 28 });