| <!DOCTYPE html> |
| <html> |
| <head> |
| <style> |
| .host { |
| position: relative; |
| width: 300px; |
| height: 32px; |
| } |
| |
| .menu-container { |
| position: absolute; |
| top: 32px; |
| left: 0; |
| } |
| |
| .calendar-wrapper { |
| position: relative; |
| will-change: transform; |
| } |
| |
| .date-picker { |
| position: absolute; |
| top: 0; |
| left: 0; |
| } |
| </style> |
| </head> |
| <body> |
| <div class="host"> |
| <div class="menu-container" popover="manual" id="menu" style="display: block;"> |
| <div class="calendar-wrapper"> |
| <div class="date-picker" id="picker"></div> |
| </div> |
| </div> |
| </div> |
| <script> |
| window.testRunner?.dumpAsText(); |
| |
| // Renderer exists in host's OOF list before entering top layer. |
| document.body.offsetHeight; |
| |
| document.getElementById('menu').showPopover(); |
| |
| // Add content after entering the top layer. The new content needs |
| // a full layout pass through the correct containing block (RenderView). |
| document.getElementById('picker').innerHTML = '<div style="width: 200px; height: 200px; background: green;">content</div>'; |
| document.body.offsetHeight; |
| |
| const picker = document.getElementById('picker'); |
| if (picker.offsetWidth === 200 && picker.offsetHeight === 200) |
| document.body.innerText = 'PASS'; |
| else |
| document.body.innerText = 'FAIL: picker size is ' + picker.offsetWidth + 'x' + picker.offsetHeight; |
| </script> |
| </body> |
| </html> |