| // META: script=/resources/testdriver.js |
| // META: script=/resources/testdriver-vendor.js |
| 'use strict'; |
| |
| const okayAdRequest = { |
| adRequestUrl: "https://{{host}}:{{ports[https][0]}}", |
| adProperties: [ |
| { width: "42", height: "32", slot: "first", lang: "en-ca", adType: "test-ad1", bidFloor: 42.0 }, |
| { width: "24", height: "48", slot: "first", lang: "en-us", adType: "test-ad2", bidFloor: 42.0 }], |
| publisherCode: "pubCode123", |
| targeting: { interests: ["interest1", "interest2"] }, |
| anonymizedProxiedSignals: [], |
| fallbackSource: "https://{{domains[www2]}}:{{ports[https][0]}}" |
| }; |
| |
| test(() => { |
| assert_not_equals(navigator.createAdRequest, undefined); |
| }, "createAdRequest() should be supported on the navigator interface."); |
| |
| promise_test(async t => { |
| const createPromise = navigator.createAdRequest(okayAdRequest); |
| |
| await promise_rejects_dom(t, "NotSupportedError", createPromise); |
| }, "createAdRequest() should reject with NotSupported initially."); |
| |
| promise_test(async t => { |
| const createPromise = navigator.createAdRequest(); |
| |
| await promise_rejects_js(t, TypeError, createPromise); |
| }, "createAdRequest() should reject missing parameters."); |
| |
| promise_test(async t => { |
| const adRequest = Object.assign({}, okayAdRequest); |
| delete adRequest.adRequestUrl; |
| |
| const createPromise = navigator.createAdRequest(adRequest); |
| |
| await promise_rejects_js(t, TypeError, createPromise); |
| }, "createAdRequest() should reject a missing adRequestUrl."); |
| |
| promise_test(async t => { |
| const adRequest = Object.assign({}, okayAdRequest); |
| adRequest.adRequestUrl = "http://{{host}}:{{ports[https][0]}}"; |
| |
| const createPromise = navigator.createAdRequest(adRequest); |
| |
| await promise_rejects_js(t, TypeError, createPromise); |
| }, "createAdRequest() should reject a HTTP adRequestUrl."); |
| |
| promise_test(async t => { |
| const adRequest = Object.assign({}, okayAdRequest); |
| delete adRequest.adProperties; |
| |
| const createPromise = navigator.createAdRequest(adRequest); |
| |
| await promise_rejects_js(t, TypeError, createPromise); |
| }, "createAdRequest() should reject missing adProperties."); |
| |
| promise_test(async t => { |
| const adRequest = Object.assign({}, okayAdRequest); |
| adRequest.adProperties = []; |
| |
| const createPromise = navigator.createAdRequest(adRequest); |
| |
| await promise_rejects_js(t, TypeError, createPromise); |
| }, "createAdRequest() should reject empty adProperties."); |
| |
| promise_test(async t => { |
| const adRequest = Object.assign({}, okayAdRequest); |
| adRequest.fallbackSource = "http://{{host}}:{{ports[https][0]}}"; |
| |
| const createPromise = navigator.createAdRequest(adRequest); |
| |
| await promise_rejects_js(t, TypeError, createPromise); |
| }, "createAdRequest() should reject a HTTP fallbackSource."); |
| |
| promise_test(async t => { |
| const adRequest = Object.assign({}, okayAdRequest); |
| |
| // delete all optional params and the request should still be okay. |
| delete adRequest.anonymizedProxiedSignals; |
| delete adRequest.fallbackSource; |
| delete adRequest.publisherCode; |
| delete adRequest.targeting; |
| |
| const createPromise = navigator.createAdRequest(adRequest); |
| |
| // Until fully implemented we expect a NotSupportedError instead of success. |
| await promise_rejects_dom(t, "NotSupportedError", createPromise); |
| }, "createAdRequest() should have optional params."); |
| |
| promise_test(async t => { |
| const adRequest = Object.assign({}, okayAdRequest); |
| // A single adProperties object should be accepted as well as a sequence. |
| adRequest.adProperties = { width: "24", height: "48", slot: "first", lang: "en-us", adType: "test-ad2", bidFloor: 42.0 }; |
| |
| const createPromise = navigator.createAdRequest(adRequest); |
| |
| // Until fully implemented we expect a NotSupportedError instead of success. |
| await promise_rejects_dom(t, "NotSupportedError", createPromise); |
| }, "createAdRequest() should accept a single adProperties."); |
| |
| promise_test(async t => { |
| const adRequest = Object.assign({}, okayAdRequest); |
| adRequest.anonymizedProxiedSignals = ["coarse-geolocation", "coarse-ua", "targeting", "user-ad-interests"]; |
| |
| const createPromise = navigator.createAdRequest(adRequest); |
| |
| // Until fully implemented we expect a NotSupportedError instead of success. |
| await promise_rejects_dom(t, "NotSupportedError", createPromise); |
| }, "createAdRequest() should accept valid anonymizedProxiedSignals."); |
| |
| promise_test(async t => { |
| const adRequest = Object.assign({}, okayAdRequest); |
| adRequest.anonymizedProxiedSignals = ["coarse-geolocation", "unknown-type"]; |
| |
| const createPromise = navigator.createAdRequest(adRequest); |
| |
| await promise_rejects_js(t, TypeError, createPromise); |
| }, "createAdRequest() should reject unknown anonymizedPRoxiedSignals."); |