<!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>[190053] trunk</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/190053">190053</a></dd>
<dt>Author</dt> <dd>changseok.oh@collabora.com</dd>
<dt>Date</dt> <dd>2015-09-21 01:37:25 -0700 (Mon, 21 Sep 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>[GTK] timeline is not updated after few seconds when mouse hovers on controls
https://bugs.webkit.org/show_bug.cgi?id=149111

Reviewed by Philippe Normand.

Source/WebCore:

Timeline is not updated if controlsAreHidden is true. The problem here is that
the function does not mean actually 'hidden' since it only checkes 'show' and 'hidden'
class existences. The panel's visibility are not only controlled by the two classes,
but also by video::-webkit-media-controls-panel:hover. The panel could be visible
by setting the pseudo hover class. So we need to check if panel is hovered as well in controlsAreHidden().

Test: media/media-controls-timeline-updates-when-hovered.html

* Modules/mediacontrols/mediaControlsBase.js:
(Controller.prototype.controlsAreHidden):

LayoutTests:

* media/media-controls-timeline-updates-when-hovered-expected.txt: Added.
* media/media-controls-timeline-updates-when-hovered.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesmediacontrolsmediaControlsBasejs">trunk/Source/WebCore/Modules/mediacontrols/mediaControlsBase.js</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsmediamediacontrolstimelineupdateswhenhoveredexpectedtxt">trunk/LayoutTests/media/media-controls-timeline-updates-when-hovered-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediamediacontrolstimelineupdateswhenhoveredhtml">trunk/LayoutTests/media/media-controls-timeline-updates-when-hovered.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (190052 => 190053)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-09-21 08:36:44 UTC (rev 190052)
+++ trunk/LayoutTests/ChangeLog        2015-09-21 08:37:25 UTC (rev 190053)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2015-09-21  ChangSeok Oh  &lt;changseok.oh@collabora.com&gt;
+
+        [GTK] timeline is not updated after few seconds when mouse hovers on controls
+        https://bugs.webkit.org/show_bug.cgi?id=149111
+
+        Reviewed by Philippe Normand.
+
+        * media/media-controls-timeline-updates-when-hovered-expected.txt: Added.
+        * media/media-controls-timeline-updates-when-hovered.html: Added.
+
</ins><span class="cx"> 2015-09-20  Andy Estes  &lt;aestes@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         http/tests/contentfiltering/load-substitute-data-from-appcache.html crashes sometimes
</span></span></pre></div>
<a id="trunkLayoutTestsmediamediacontrolstimelineupdateswhenhoveredexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/media/media-controls-timeline-updates-when-hovered-expected.txt (0 => 190053)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/media-controls-timeline-updates-when-hovered-expected.txt                                (rev 0)
+++ trunk/LayoutTests/media/media-controls-timeline-updates-when-hovered-expected.txt        2015-09-21 08:37:25 UTC (rev 190053)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+This tests if media controls timeline is properly updated when a cursor hovers the controls during playback.
+
+
+EVENT(canplaythrough)
+EXPECTED (timeLineValue() == '0') OK
+RUN(video.play())
+EVENT(play)
+EVENT(timeupdate)
+TEST(timeLineValue() &gt;= 1) OK
+END OF TEST
+
</ins></span></pre></div>
<a id="trunkLayoutTestsmediamediacontrolstimelineupdateswhenhoveredhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/media/media-controls-timeline-updates-when-hovered.html (0 => 190053)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/media-controls-timeline-updates-when-hovered.html                                (rev 0)
+++ trunk/LayoutTests/media/media-controls-timeline-updates-when-hovered.html        2015-09-21 08:37:25 UTC (rev 190053)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;p&gt;This tests if media controls timeline is properly updated when a cursor hovers the controls during playback.&lt;/p&gt;
+&lt;video controls&gt;&lt;/video&gt;
+&lt;script src=media-file.js&gt;&lt;/script&gt;
+&lt;script src=video-test.js&gt;&lt;/script&gt;
+&lt;script src=media-controls.js&gt;&lt;/script&gt;
+&lt;script&gt;
+function timeLineValue()
+{
+    var timeline = mediaControlsElement(internals.shadowRoot(video).firstChild.firstChild, '-webkit-media-controls-timeline');
+    if (!timeline)
+        throw &quot;Failed to find -webkit-media-controls-timeline&quot;;
+
+    return timeline.value;
+}
+
+function canplaythrough()
+{
+    if (!window.testRunner) {
+        endTest();
+        return;
+    }
+
+    testExpected(&quot;timeLineValue()&quot;, 0);
+
+    var playButtonCoords;
+    try {
+        playButtonCoords = mediaControlsButtonCoordinates(video, &quot;play-button&quot;);
+    } catch (exception) {
+        endTest();
+        return;
+    }
+    eventSender.mouseMoveTo(playButtonCoords[0], playButtonCoords[1]);
+
+    video.addEventListener(&quot;timeupdate&quot;, function() {
+         if (video.currentTime &gt;= 1) {
+            consoleWrite(&quot;EVENT(timeupdate)&quot;);
+            test(&quot;timeLineValue() &gt;= 1&quot;);
+            endTest();
+         }
+    });
+
+    run(&quot;video.play()&quot;);
+}
+
+var video;
+findMediaElement();
+video.src = findMediaFile(&quot;video&quot;, &quot;content/test&quot;);
+
+waitForEvent(&quot;canplaythrough&quot;, canplaythrough);
+waitForEvent(&quot;play&quot;);
+waitForEventAndFail(&quot;error&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (190052 => 190053)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-09-21 08:36:44 UTC (rev 190052)
+++ trunk/Source/WebCore/ChangeLog        2015-09-21 08:37:25 UTC (rev 190053)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2015-09-21  ChangSeok Oh  &lt;changseok.oh@collabora.com&gt;
+
+        [GTK] timeline is not updated after few seconds when mouse hovers on controls
+        https://bugs.webkit.org/show_bug.cgi?id=149111
+
+        Reviewed by Philippe Normand.
+
+        Timeline is not updated if controlsAreHidden is true. The problem here is that
+        the function does not mean actually 'hidden' since it only checkes 'show' and 'hidden'
+        class existences. The panel's visibility are not only controlled by the two classes,
+        but also by video::-webkit-media-controls-panel:hover. The panel could be visible
+        by setting the pseudo hover class. So we need to check if panel is hovered as well in controlsAreHidden().
+
+        Test: media/media-controls-timeline-updates-when-hovered.html
+
+        * Modules/mediacontrols/mediaControlsBase.js:
+        (Controller.prototype.controlsAreHidden):
+
</ins><span class="cx"> 2015-09-21  Michael Catanzaro  &lt;mcatanzaro@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] REGRESSION(188031): ASSERTION FAILED: menu
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediacontrolsmediaControlsBasejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediacontrols/mediaControlsBase.js (190052 => 190053)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediacontrols/mediaControlsBase.js        2015-09-21 08:36:44 UTC (rev 190052)
+++ trunk/Source/WebCore/Modules/mediacontrols/mediaControlsBase.js        2015-09-21 08:37:25 UTC (rev 190053)
</span><span class="lines">@@ -1023,7 +1023,9 @@
</span><span class="cx"> 
</span><span class="cx">     controlsAreHidden: function()
</span><span class="cx">     {
</span><del>-        return !this.controls.panel.classList.contains(this.ClassNames.show) || this.controls.panel.classList.contains(this.ClassNames.hidden);
</del><ins>+        var panel = this.controls.panel;
+        return (!panel.classList.contains(this.ClassNames.show) || panel.classList.contains(this.ClassNames.hidden))
+            &amp;&amp; (panel.parentElement.querySelector(':hover') !== panel);
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     removeControls: function()
</span></span></pre>
</div>
</div>

</body>
</html>