| <!DOCTYPE html> |
| <title>Test scrollIntoView() inside a fenced frame</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> |
| <!-- This spacer is used to ensure that the fenced frame will be out of view |
| unless a scroll is performed. --> |
| <div style="height: 2000px;"></div> |
| <script> |
| promise_test(async(t) => { |
| const fencedframe = await attachFencedFrameContext(); |
| |
| const start_y_offset = window.pageYOffset; |
| |
| await fencedframe.execute(() => { |
| // Ensure that any elements created are out of view until a scroll is |
| // performed. |
| const spacer = document.createElement("div"); |
| spacer.style = "height: 2000px;"; |
| document.body.appendChild(spacer); |
| |
| const start_fenced_y_offset = window.pageYOffset; |
| |
| const button = document.createElement("button"); |
| document.body.appendChild(button); |
| button.scrollIntoView(); |
| |
| const end_fenced_y_offset = window.pageYOffset; |
| assert_not_equals(start_fenced_y_offset, end_fenced_y_offset, |
| "The inner page should have scrolled."); |
| }, []); |
| |
| const end_y_offset = window.pageYOffset; |
| assert_equals(start_y_offset, end_y_offset, |
| "The outer page should not have scrolled."); |
| |
| }, 'scrollIntoView() inside a fenced frame should not scroll ancestors'); |
| |
| </script> |
| </body> |