102 lines
4.5 KiB
HTML
102 lines
4.5 KiB
HTML
<!DOCTYPE html>
|
|
<title>Test container size in FLEDGE fenced frames.</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/common/utils.js"></script>
|
|
<script src="/common/dispatcher/dispatcher.js"></script>
|
|
<script src="resources/utils.js"></script>
|
|
|
|
<body>
|
|
<script>
|
|
async function checkSyntaxError(requested_width, requested_height) {
|
|
try {
|
|
const frame = await attachFencedFrameContext({
|
|
generator_api: "fledge", resolve_to_config: true, ad_with_size: true,
|
|
requested_size: [requested_width, requested_height]});
|
|
} catch(e) {
|
|
assert_equals(e.name, 'TypeError');
|
|
return;
|
|
}
|
|
assert_unreached('Missing expected type error');
|
|
}
|
|
|
|
async function checkSuccess() {
|
|
const assert_outer_dimensions =
|
|
(frame, label, expected_width, expected_height) => {
|
|
assert_equals(frame.element.width, expected_width,
|
|
label + ' outer attribute width');
|
|
assert_equals(frame.element.height, expected_height,
|
|
label + ' outer attribute height');
|
|
assert_equals(getComputedStyle(frame.element).width, expected_width,
|
|
label + ' outer computed width');
|
|
assert_equals(getComputedStyle(frame.element).height, expected_height,
|
|
label + ' outer computed height');
|
|
}
|
|
|
|
const assert_inner_dimensions =
|
|
(label, expected_width, expected_height) => {
|
|
assert_equals(getComputedStyle(document.documentElement).width, expected_width+'px',
|
|
label + ' inner computed width');
|
|
assert_equals(window.innerWidth, expected_width,
|
|
label + ' inner width');
|
|
assert_equals(window.innerHeight, expected_height,
|
|
label + ' inner height');
|
|
}
|
|
|
|
// `ad_with_size` is hardcoded to use '100px' by '50px'.
|
|
const content_width = 100;
|
|
const content_height = 50;
|
|
|
|
// Create a FLEDGE FF with a constant content size and given container size.
|
|
const requested_width_1 = '299px';
|
|
const requested_height_1 = '72px';
|
|
const frame = await attachFencedFrameContext({
|
|
generator_api: 'fledge', resolve_to_config: true, ad_with_size: true,
|
|
requested_size: [requested_width_1, requested_height_1]});
|
|
|
|
// The outer size should reflect the container size, and the inner size should reflect the content size.
|
|
await frame.execute(assert_inner_dimensions, ['First config', content_width, content_height]);
|
|
assert_outer_dimensions(frame, 'First config', requested_width_1, requested_height_1);
|
|
|
|
// Modify the container size manually.
|
|
const modified_width = '121px';
|
|
const modified_height = '444px';
|
|
frame.element.width = modified_width;
|
|
frame.element.height = modified_height;
|
|
|
|
// The outer size should reflect the new size, and the inner size should be unchanged.
|
|
await frame.execute(assert_inner_dimensions, ['Modified container size', content_width, content_height]);
|
|
assert_outer_dimensions(frame, 'Modified container size', modified_width, modified_height);
|
|
|
|
// Navigate to a new FLEDGE FF config with a different container size.
|
|
const requested_width_2 = '321px';
|
|
const requested_height_2 = '49px';
|
|
const replaced_frame = await replaceFrameContext(frame, {
|
|
generator_api: 'fledge', resolve_to_config: true, ad_with_size: true,
|
|
requested_size: [requested_width_2, requested_height_2]});
|
|
|
|
// The outer size should reflect the new size, and the inner size should be unchanged.
|
|
await replaced_frame.execute(assert_inner_dimensions, ['Second config', content_width, content_height]);
|
|
assert_outer_dimensions(replaced_frame, 'Second config', requested_width_2, requested_height_2);
|
|
|
|
// Navigate to a new FLEDGE FF config with no container size.
|
|
const replaced_frame_2 = await replaceFrameContext(frame, {
|
|
generator_api: 'fledge', resolve_to_config: true, ad_with_size: true});
|
|
|
|
// The dimensions should be unchanged.
|
|
await replaced_frame_2.execute(assert_inner_dimensions, ['Third config', content_width, content_height]);
|
|
assert_outer_dimensions(replaced_frame_2, 'Third config', requested_width_2, requested_height_2);
|
|
}
|
|
|
|
// Type error cases.
|
|
promise_test(async () => { return checkSyntaxError('-299px', '72px'); }, '-299px x 72px');
|
|
promise_test(async () => { return checkSyntaxError('299px', '-72px'); }, '299px x -72px');
|
|
promise_test(async () => { return checkSyntaxError('0px', '0px'); }, '0px x 0px');
|
|
promise_test(async () => { return checkSyntaxError('299px', '72ab'); }, '299px x 72ab');
|
|
promise_test(async () => { return checkSyntaxError('299bc', '72px'); }, '299bc x 72px');
|
|
|
|
// Success cases.
|
|
promise_test(async () => { return checkSuccess(); }, 'FLEDGE successful container size');
|
|
|
|
</script>
|
|
</body>
|