| <!DOCTYPE html> | |
| <title>Test cases when fenced frame size shouldn't be restricted..</title> | |
| <meta name="timeout" content="long"> | |
| <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 runTest(api1, | |
| expected_initial_size, | |
| expected_size_after_resize, | |
| api2, | |
| expected_size_after_renavigation, | |
| expected_size_after_reresize) { | |
| const initial_width = 321; | |
| const initial_height = 51; | |
| const resized_width = 729; | |
| const resized_height = 91; | |
| const reresized_width = 971; | |
| const reresized_height = 251; | |
| var frame = await attachFencedFrameContext({ | |
| generator_api: api1, resolve_to_config: true, | |
| attributes: [['width', initial_width], ['height', initial_height]]}); | |
| const assert_dimensions = | |
| (expected_width, expected_height) => { | |
| getComputedStyle(document.documentElement).width; // Force layout. | |
| assert_equals(window.innerWidth, expected_width, "width"); | |
| assert_equals(window.innerHeight, expected_height, "height"); | |
| } | |
| // Check that the initial size of the fenced frame is what we expect. | |
| await frame.execute(assert_dimensions, expected_initial_size); | |
| // Resize the frame, and check that the size is now what we expect. | |
| frame.element.width = resized_width; | |
| frame.element.height = resized_height; | |
| await frame.execute(assert_dimensions, expected_size_after_resize); | |
| // Perform an embedder-initiated navigation, and check that the size is now | |
| // what we expect (it should be based on the new context, rather than the old | |
| // context). | |
| frame = await replaceFrameContext(frame, {generator_api: api2, | |
| resolve_to_config: true}); | |
| await frame.execute(assert_dimensions, expected_size_after_renavigation); | |
| // Resize the newly navigated frame, and check the size. | |
| frame.element.width = reresized_width; | |
| frame.element.height = reresized_height; | |
| await frame.execute(assert_dimensions, expected_size_after_reresize); | |
| } | |
| promise_test(async () => { | |
| return runTest('fledge', [320, 50], [320, 50], | |
| 'fledge', [728, 90], [728, 90]); }, | |
| "FLEDGE->FLEDGE"); | |
| promise_test(async () => { | |
| return runTest('sharedstorage', [321, 51], [729, 91], | |
| 'sharedstorage', [729, 91], [971, 251]); }, | |
| "sharedStorage->sharedStorage"); | |
| promise_test(async () => { | |
| return runTest('default', [321, 51], [729, 91], | |
| 'default', [729, 91], [971, 251]); }, | |
| "default->default"); | |
| promise_test(async () => { | |
| return runTest('default', [321, 51], [729, 91], | |
| 'fledge', [728, 90], [728, 90]); }, | |
| "default->FLEDGE"); | |
| promise_test(async () => { | |
| return runTest('default', [321, 51], [729, 91], | |
| 'sharedStorage', [729, 91], [971, 251]); }, | |
| "default->sharedStorage"); | |
| promise_test(async () => { | |
| return runTest('fledge', [320, 50], [320, 50], | |
| 'default', [729, 91], [971, 251]); }, | |
| "FLEDGE->default"); | |
| promise_test(async () => { | |
| return runTest('sharedstorage', [321, 51], [729, 91], | |
| 'default', [729, 91], [971, 251]); }, | |
| "sharedStorage->default"); | |
| promise_test(async () => { | |
| return runTest('sharedstorage', [321, 51], [729, 91], | |
| 'fledge', [728, 90], [728, 90]); }, | |
| "sharedStorage->FLEDGE"); | |
| promise_test(async () => { | |
| return runTest('fledge', [320, 50], [320, 50], | |
| 'sharedstorage', [729, 91], [971, 251]); }, | |
| "FLEDGE->sharedStorage"); | |
| </script> | |
| </body> |