request-format.sub.https.html (2782B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <meta name=timeout content=long> 4 <meta name=variant content="?method=a&expected-eligible=navigation-source"> 5 <meta name=variant content="?method=area&expected-eligible=navigation-source"> 6 <meta name=variant content="?method=img&expected-eligible=event-source, trigger"> 7 <meta name=variant content="?method=img&eligible&expected-eligible=event-source, trigger"> 8 <meta name=variant content="?method=open&expected-eligible=navigation-source"> 9 <meta name=variant content="?method=script&expected-eligible=event-source, trigger"> 10 <meta name=variant content="?method=script&eligible&expected-eligible=event-source, trigger"> 11 <meta name=variant content="?method=fetch"> 12 <meta name=variant content='?method=fetch&eligible={"eventSourceEligible":true,"triggerEligible":false}&expected-eligible=event-source'> 13 <meta name=variant content="?method=xhr"> 14 <meta name=variant content='?method=xhr&eligible={"eventSourceEligible":true,"triggerEligible":false}&expected-eligible=event-source'> 15 <script src="/resources/testdriver.js"></script> 16 <script src="/resources/testdriver-vendor.js"></script> 17 <script src="/resources/testharness.js"></script> 18 <script src="/resources/testharnessreport.js"></script> 19 <script src="resources/helpers.js"></script> 20 <body> 21 <script> 22 const waitForRequest = async () => { 23 const url = blankURL(); 24 url.searchParams.set('get-requests', 'true'); 25 26 for (let i = 0; i < 20; i++) { 27 const resp = await fetch(url); 28 const payload = await resp.json(); 29 if (payload !== null && payload.length > 0) { 30 return payload; 31 } 32 await delay(100); 33 } 34 throw new Error('Timeout polling requests'); 35 }; 36 37 const searchParams = new URLSearchParams(location.search); 38 const expected_eligible = 39 searchParams.get('expected-eligible') === null ? undefined : searchParams.get('expected-eligible'); 40 41 promise_test(async t => { 42 // Set mixed-case query params to ensure that they are propagated correctly. 43 registerAttributionSrc({ 44 method: 'variant', 45 extraQueryParams: {'aB': 'Cd', 'store-request': 'true'}, 46 }); 47 48 const requests = await waitForRequest(); 49 assert_equals(requests.length, 1); 50 assert_equals(requests[0].method, 'GET'); 51 // TODO(apaseltiner): Check header values once WPT can parse structured dictionaries. 52 if (expected_eligible) { 53 assert_own_property(requests[0], 'attribution-reporting-eligible'); 54 } else { 55 assert_not_own_property(requests[0], 'attribution-reporting-eligible'); 56 } 57 58 // TODO(apaseltiner): Test cookie propagation. 59 60 const expectedURL = blankURL(); 61 expectedURL.searchParams.set('aB', 'Cd'); 62 expectedURL.searchParams.set('store-request', 'true'); 63 assert_equals(requests[0].url, expectedURL.toString()); 64 }, 'attributionsrc request has the proper format.'); 65 </script>