<!doctype html>
<head>
  <script src="./resizeTestHelper.js"></script>
</head>
<p>iframe test</p>
<div id="itarget1" style="width:100px;height:100px;">t1</div>
<script>
'use strict';
let t1 = document.querySelector('#itarget1');
function test0() {
  let timeoutId = window.setTimeout( () => {
    window.parent.postMessage('fail', '*');
  }, ResizeTestHelper.TIMEOUT);
  let ro = new ResizeObserver(function(entries) {
    window.clearTimeout(timeoutId);
    window.parent.postMessage('success', '*');
  });
  ro.observe(t1);
}
let testStarted = false;
window.addEventListener('message', function(ev) {
    switch(ev.data) {
        case 'startTest':
          testStarted = true;
          test0();
        break;
    }
});
// How does parent know we've loaded problem is solved by
// broadcasting readyToTest message repeatedly until test starts.
function broadcastReady() {
  if (!testStarted) {
    window.parent.postMessage('readyToTest', '*');
    window.requestAnimationFrame(broadcastReady);
  }
}
broadcastReady();
</script>
