createAdRequest.tentative.https.sub.window.js (4653B)
1 // META: script=/resources/testdriver.js 2 // META: script=/resources/testdriver-vendor.js 3 'use strict'; 4 5 const okayAdRequest = { 6 adRequestUrl: "https://{{host}}:{{ports[https][0]}}", 7 adProperties: [ 8 { width: "42", height: "32", slot: "first", lang: "en-ca", adType: "test-ad1", bidFloor: 42.0 }, 9 { width: "24", height: "48", slot: "first", lang: "en-us", adType: "test-ad2", bidFloor: 42.0 }], 10 publisherCode: "pubCode123", 11 targeting: { interests: ["interest1", "interest2"] }, 12 anonymizedProxiedSignals: [], 13 fallbackSource: "https://{{domains[www2]}}:{{ports[https][0]}}" 14 }; 15 16 test(() => { 17 assert_not_equals(navigator.createAdRequest, undefined); 18 }, "createAdRequest() should be supported on the navigator interface."); 19 20 promise_test(async t => { 21 const createPromise = navigator.createAdRequest(okayAdRequest); 22 23 await promise_rejects_dom(t, "NotSupportedError", createPromise); 24 }, "createAdRequest() should reject with NotSupported initially."); 25 26 promise_test(async t => { 27 const createPromise = navigator.createAdRequest(); 28 29 await promise_rejects_js(t, TypeError, createPromise); 30 }, "createAdRequest() should reject missing parameters."); 31 32 promise_test(async t => { 33 const adRequest = Object.assign({}, okayAdRequest); 34 delete adRequest.adRequestUrl; 35 36 const createPromise = navigator.createAdRequest(adRequest); 37 38 await promise_rejects_js(t, TypeError, createPromise); 39 }, "createAdRequest() should reject a missing adRequestUrl."); 40 41 promise_test(async t => { 42 const adRequest = Object.assign({}, okayAdRequest); 43 adRequest.adRequestUrl = "http://{{host}}:{{ports[https][0]}}"; 44 45 const createPromise = navigator.createAdRequest(adRequest); 46 47 await promise_rejects_js(t, TypeError, createPromise); 48 }, "createAdRequest() should reject a HTTP adRequestUrl."); 49 50 promise_test(async t => { 51 const adRequest = Object.assign({}, okayAdRequest); 52 delete adRequest.adProperties; 53 54 const createPromise = navigator.createAdRequest(adRequest); 55 56 await promise_rejects_js(t, TypeError, createPromise); 57 }, "createAdRequest() should reject missing adProperties."); 58 59 promise_test(async t => { 60 const adRequest = Object.assign({}, okayAdRequest); 61 adRequest.adProperties = []; 62 63 const createPromise = navigator.createAdRequest(adRequest); 64 65 await promise_rejects_js(t, TypeError, createPromise); 66 }, "createAdRequest() should reject empty adProperties."); 67 68 promise_test(async t => { 69 const adRequest = Object.assign({}, okayAdRequest); 70 adRequest.fallbackSource = "http://{{host}}:{{ports[https][0]}}"; 71 72 const createPromise = navigator.createAdRequest(adRequest); 73 74 await promise_rejects_js(t, TypeError, createPromise); 75 }, "createAdRequest() should reject a HTTP fallbackSource."); 76 77 promise_test(async t => { 78 const adRequest = Object.assign({}, okayAdRequest); 79 80 // delete all optional params and the request should still be okay. 81 delete adRequest.anonymizedProxiedSignals; 82 delete adRequest.fallbackSource; 83 delete adRequest.publisherCode; 84 delete adRequest.targeting; 85 86 const createPromise = navigator.createAdRequest(adRequest); 87 88 // Until fully implemented we expect a NotSupportedError instead of success. 89 await promise_rejects_dom(t, "NotSupportedError", createPromise); 90 }, "createAdRequest() should have optional params."); 91 92 promise_test(async t => { 93 const adRequest = Object.assign({}, okayAdRequest); 94 // A single adProperties object should be accepted as well as a sequence. 95 adRequest.adProperties = { width: "24", height: "48", slot: "first", lang: "en-us", adType: "test-ad2", bidFloor: 42.0 }; 96 97 const createPromise = navigator.createAdRequest(adRequest); 98 99 // Until fully implemented we expect a NotSupportedError instead of success. 100 await promise_rejects_dom(t, "NotSupportedError", createPromise); 101 }, "createAdRequest() should accept a single adProperties."); 102 103 promise_test(async t => { 104 const adRequest = Object.assign({}, okayAdRequest); 105 adRequest.anonymizedProxiedSignals = ["coarse-geolocation", "coarse-ua", "targeting", "user-ad-interests"]; 106 107 const createPromise = navigator.createAdRequest(adRequest); 108 109 // Until fully implemented we expect a NotSupportedError instead of success. 110 await promise_rejects_dom(t, "NotSupportedError", createPromise); 111 }, "createAdRequest() should accept valid anonymizedProxiedSignals."); 112 113 promise_test(async t => { 114 const adRequest = Object.assign({}, okayAdRequest); 115 adRequest.anonymizedProxiedSignals = ["coarse-geolocation", "unknown-type"]; 116 117 const createPromise = navigator.createAdRequest(adRequest); 118 119 await promise_rejects_js(t, TypeError, createPromise); 120 }, "createAdRequest() should reject unknown anonymizedPRoxiedSignals.");