<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[204304] trunk/LayoutTests</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/204304">204304</a></dd>
<dt>Author</dt> <dd>adachan@apple.com</dd>
<dt>Date</dt> <dd>2016-08-09 14:54:58 -0700 (Tue, 09 Aug 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[macOS Sierra] Fix flaky test: media/controls/picture-in-picture.html
https://bugs.webkit.org/show_bug.cgi?id=160707

Reviewed by Eric Carlson.

This test became flaky after <a href="http://trac.webkit.org/projects/webkit/changeset/201474">r201474</a> when we started to delay showing
the inline placeholder until we are sure the video layer has been moved
into the video fullscreen layer. This means we can't guarantee that the
placeholder is visible right away after the video's presentation mode
changes to &quot;picture-in-picture&quot;.

To fix this, we'll update the test so that we'll wait until the placeholder
becomes visible before testing its visibility without the &quot;controls&quot; attribute.

* media/controls/picture-in-picture.html:
* platform/mac-wk2/TestExpectations:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsmediacontrolspictureinpicturehtml">trunk/LayoutTests/media/controls/picture-in-picture.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2TestExpectations">trunk/LayoutTests/platform/mac-wk2/TestExpectations</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (204303 => 204304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-08-09 21:50:54 UTC (rev 204303)
+++ trunk/LayoutTests/ChangeLog        2016-08-09 21:54:58 UTC (rev 204304)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2016-08-09  Ada Chan  &lt;adachan@apple.com&gt;
+
+        [macOS Sierra] Fix flaky test: media/controls/picture-in-picture.html
+        https://bugs.webkit.org/show_bug.cgi?id=160707
+
+        Reviewed by Eric Carlson.
+
+        This test became flaky after r201474 when we started to delay showing
+        the inline placeholder until we are sure the video layer has been moved
+        into the video fullscreen layer. This means we can't guarantee that the
+        placeholder is visible right away after the video's presentation mode
+        changes to &quot;picture-in-picture&quot;.
+
+        To fix this, we'll update the test so that we'll wait until the placeholder
+        becomes visible before testing its visibility without the &quot;controls&quot; attribute.
+
+        * media/controls/picture-in-picture.html:
+        * platform/mac-wk2/TestExpectations:
+
</ins><span class="cx"> 2016-08-09  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         It should be possible to re-initialize a CustomEvent after it's been dispatched
</span></span></pre></div>
<a id="trunkLayoutTestsmediacontrolspictureinpicturehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/controls/picture-in-picture.html (204303 => 204304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/controls/picture-in-picture.html        2016-08-09 21:50:54 UTC (rev 204303)
+++ trunk/LayoutTests/media/controls/picture-in-picture.html        2016-08-09 21:54:58 UTC (rev 204304)
</span><span class="lines">@@ -4,6 +4,9 @@
</span><span class="cx">         &lt;script src=&quot;../media-file.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;script src=&quot;controls-test-helpers.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;script&gt;
</span><ins>+            var maxAttemptsToTestPlaceholderVisibility = 10;
+            var attemptsToTestPlaceholderVisibility = 0;
+
</ins><span class="cx">             if (window.internals)
</span><span class="cx">                 window.internals.settings.setAllowsPictureInPictureMediaPlayback(true);
</span><span class="cx"> 
</span><span class="lines">@@ -62,7 +65,25 @@
</span><span class="cx">                     .value(tester.media.webkitPresentationMode)
</span><span class="cx">                     .isEqualTo(&quot;picture-in-picture&quot;);
</span><span class="cx"> 
</span><ins>+                pollPIPPlaceholderVisibilityChange();
+            }
+
+            function pollPIPPlaceholderVisibilityChange()
+            {
</ins><span class="cx">                 const stateForPlaceholder = tester.stateForControlsElement(&quot;Inline playback placeholder&quot;, true);
</span><ins>+                if (stateForPlaceholder.className.indexOf(&quot;hidden&quot;) &gt;= 0) {
+                    if (attemptsToTestPlaceholderVisibility &gt; maxAttemptsToTestPlaceholderVisibility) {
+                        tester.logFailure(&quot;Inline placeholder did not become visible after video enters picture-in-picture.&quot;);
+                        tester.end();
+                        return;
+                    }
+
+                    // Use 33 to match PlaceholderPollingDelay in mediaControlsApple.js.
+                    setTimeout(pollPIPPlaceholderVisibilityChange, 33);
+                    attemptsToTestPlaceholderVisibility++;
+                    return;
+                }
+
</ins><span class="cx">                 tester.test(&quot;Inline placeholder should be visible at this point&quot;)
</span><span class="cx">                     .value(stateForPlaceholder.className)
</span><span class="cx">                     .doesNotContain(&quot;hidden&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2TestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-wk2/TestExpectations (204303 => 204304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/TestExpectations        2016-08-09 21:50:54 UTC (rev 204303)
+++ trunk/LayoutTests/platform/mac-wk2/TestExpectations        2016-08-09 21:54:58 UTC (rev 204304)
</span><span class="lines">@@ -472,7 +472,7 @@
</span><span class="cx"> 
</span><span class="cx"> # PiP tests are only enabled for Sierra WebKit2.
</span><span class="cx"> # rdar://problem/27574303
</span><del>-[ Sierra+ ] media/controls/picture-in-picture.html [ Pass Failure ]
</del><ins>+[ Sierra+ ] media/controls/picture-in-picture.html [ Pass ]
</ins><span class="cx"> [ Sierra+ ] media/element-containing-pip-video-going-into-fullscreen.html [ Pass ]
</span><span class="cx"> [ Sierra+ ] media/fullscreen-api-enabled-media-with-presentation-mode.html [ Pass ]
</span><span class="cx"> [ Sierra+ ] media/fullscreen-video-going-into-pip.html [ Pass ]
</span></span></pre>
</div>
</div>

</body>
</html>