multiple-observers-with-mutation-crash.html (1863B)
1 <!doctype html> 2 <html class="test-wait"> 3 <!-- 4 This test is for crbug.com/1368458 which is a crash where we expected 5 up-to-date style&layout when delivering resize observations. We would crash 6 if a resize observer in one frame caused a modification in the presence of a 7 resize observer in another frame. 8 --> 9 <iframe id="iframe" style="border: none;" srcdoc=" 10 <!doctype html> 11 <style>body { margin: 0; }</style> 12 <div id='inner_element'>hello</div> 13 <script> 14 const resizeObserver = new ResizeObserver((entries) => { 15 const size = entries[0].borderBoxSize[0].inlineSize; 16 const event = new CustomEvent('onIframeResizeObserved', {detail: size}); 17 parent.document.dispatchEvent(event); 18 }); 19 resizeObserver.observe(inner_element); 20 </script> 21 "></iframe> 22 <div id="outer_element" style="width: 200px;">world</div> 23 24 <script> 25 const onInnerElementInitialResize = (event) => { 26 // `inner_element` should result in an initial observation of width 300px. 27 window.document.removeEventListener( 28 'onIframeResizeObserved', onInnerElementInitialResize, false); 29 30 const resizeObserver = new ResizeObserver((entries) => { 31 // `outer_element` should result in an initial observation of width 200px. 32 33 // Modify styles so that inner_element is resized. 34 iframe.contentDocument.body.style.width = "200px"; 35 }); 36 resizeObserver.observe(outer_element); 37 38 const onInnerElementSecondResize = (event) => { 39 // `inner_element` should result in a second observation of width 100px. 40 41 // Finish the test. 42 document.documentElement.classList.remove('test-wait'); 43 }; 44 window.document.addEventListener( 45 'onIframeResizeObserved', onInnerElementSecondResize, false); 46 }; 47 window.document.addEventListener( 48 'onIframeResizeObserved', onInnerElementInitialResize, false); 49 </script>