requestStorageAccess-web-socket.sub.https.window.js (2332B)
1 // META: script=helpers.js 2 // META: script=/cookies/resources/cookie-helper.sub.js 3 // META: script=/resources/testdriver.js 4 // META: script=/resources/testdriver-vendor.js 5 6 'use strict'; 7 8 const altRoot = "https://{{hosts[alt][]}}:{{ports[https][0]}}"; 9 const altRootWss = "wss://{{hosts[alt][]}}:{{ports[wss][0]}}"; 10 11 const responderPath = "/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js"; 12 const altRootResponder = `${altRoot}${responderPath}`; 13 14 async function SetUpResponderFrame(t, url) { 15 const frame = await CreateFrame(url); 16 17 await SetPermissionInFrame(frame, [{ name: 'storage-access' }, 'granted']); 18 t.add_cleanup(async () => { 19 await test_driver.delete_all_cookies(); 20 await SetPermissionInFrame(frame, [{ name: 'storage-access' }, 'prompt']); 21 await MaybeSetStorageAccess("*", "*", "allowed"); 22 }); 23 24 if (await FrameHasStorageAccess(frame)) { 25 // Nothing to test here, since cookie access is not blocked. 26 // See https://github.com/privacycg/storage-access/issues/162. 27 return null; 28 } 29 30 return frame; 31 } 32 33 promise_test(async (t) => { 34 await MaybeSetStorageAccess("*", "*", "blocked"); 35 await SetFirstPartyCookie(altRoot); 36 37 const frame = await SetUpResponderFrame(t, altRootResponder); 38 if (!frame) { 39 return; 40 } 41 42 assert_true(await RequestStorageAccessInFrame(frame), "requestStorageAccess resolves without requiring a gesture."); 43 assert_true(await FrameHasStorageAccess(frame), "frame has storage access after request."); 44 assert_true(await HasUnpartitionedCookie(frame), "frame has access to cookies after request."); 45 46 assert_true(cookieStringHasCookie("cookie", "unpartitioned", 47 await ReadCookiesFromWebSocketConnection(frame, altRootWss)), 48 "WebSocket handshake should include unpartitioned cookie"); 49 }, "WebSocket inherits storage access"); 50 51 promise_test(async (t) => { 52 53 await MaybeSetStorageAccess("*", "*", "blocked"); 54 await SetFirstPartyCookie(altRoot); 55 const frame = await SetUpResponderFrame(t, altRootResponder); 56 if (!frame) { 57 return; 58 } 59 60 assert_false(cookieStringHasCookie("cookie", "unpartitioned", 61 await ReadCookiesFromWebSocketConnection(frame, altRootWss)), 62 "request should not contain cookies"); 63 }, "WebSocket omits unpartitioned cookies without storage access");