const getControlledFrameClientHintsUserAgent =
async function(controlledFrame) {
const checkScript = `
(() => {
return navigator.userAgentData.brands.map((brand_version) => {
return brand_version.brand;
});
})()
`;
return await executeAsyncScript(controlledFrame, checkScript);
}
const setClientHintsUABrandEnabledAndAwaitReload =
async function(controlledframe, enable) {
await new Promise((resolve, reject) => {
if (!('src' in controlledframe)) {
reject('FAIL');
return;
}
controlledframe.addEventListener('loadstop', resolve);
controlledframe.addEventListener('loadabort', reject);
controlledframe.setClientHintsUABrandEnabled(enable);
});
}
promise_test(async (test) => {
const controlledFrame = await createControlledFrame('/simple.html');
let brands = await getControlledFrameClientHintsUserAgent(controlledFrame);
assert_true(brands.includes('ControlledFrame'));
await setClientHintsUABrandEnabledAndAwaitReload(controlledFrame, false);
brands = await getControlledFrameClientHintsUserAgent(controlledFrame);
assert_false(brands.includes('ControlledFrame'));
await setClientHintsUABrandEnabledAndAwaitReload(controlledFrame, true);
brands = await getControlledFrameClientHintsUserAgent(controlledFrame);
assert_true(brands.includes('ControlledFrame'));
}, 'Client Hints User Agent');