chromium/third_party/blink/web_tests/media/controls/overlay-play-button-document-move.html

<!DOCTYPE html>
<title>media controls overlay play button document move</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../../resources/run-after-layout-and-paint.js"></script>
<script src="../media-controls.js"></script>
<script src="overlay-play-button.js"></script>
<body>
<script>
async_test(function(t) {
  // Make sure the overlay play button is turned on, as it's typically off
  // unless we're dealing with Android.
  enableOverlayPlayButtonForTest(t);

  var video = createAndMoveVideo();

  video.onloadedmetadata = t.step_func(function() {
    // Large-enough video should have an overlay play button.
    assertOverlayPlayButtonVisible(video);

    // If the width goes under the minimum, the button should be hidden.
    video.width = NARROW_VIDEO_WIDTH;
    runAfterLayoutAndPaint(t.step_func(function() {
      assertOverlayPlayButtonNotVisible(video);

      // Re-widening the video should display the button.
      video.width = NORMAL_VIDEO_WIDTH;
      runAfterLayoutAndPaint(t.step_func(function() {
        assertOverlayPlayButtonVisible(video);

        // If the height goes under the minimum, the button should be hidden.
        video.height = NARROW_VIDEO_HEIGHT;
        runAfterLayoutAndPaint(t.step_func(function() {
          assertOverlayPlayButtonNotVisible(video);

          // Re-heightening the video should display the button.
          video.height = NORMAL_VIDEO_HEIGHT;
          runAfterLayoutAndPaint(t.step_func_done(function() {
            assertOverlayPlayButtonVisible(video);
          }));
        }));
      }));
    }));
  });

  function createAndMoveVideo() {
    var doc = document.implementation.createHTMLDocument();
    var v = doc.createElement('video');
    v.src = '../content/test.ogv';
    v.width = NORMAL_VIDEO_WIDTH;
    v.height = NORMAL_VIDEO_HEIGHT;
    v.controls = true;
    doc.body.appendChild(v);
    doc.body.removeChild(v);
    document.body.appendChild(v);
    return v;
  }
});
</script>
</body>