Title: [164365] trunk
Revision
164365
Author
[email protected]
Date
2014-02-19 09:24:47 -0800 (Wed, 19 Feb 2014)

Log Message

Setting playback rate on Media Controller modifies current time.
https://bugs.webkit.org/show_bug.cgi?id=129042

Patch by Piotr Grad <[email protected]> on 2014-02-19
Reviewed by Jer Noble.

Source/WebCore:

In ClockGeneric: when setting playback rate or stoping timer,clock was restarted using current real time
instead of provided time by setCurrentTime.
Changed impl. so that m_offset is updated when clock stops to remember last clock position.
When playbackRate is changed m_offset is updated in order to not use old time interval for new playback rate.

Test: media/video-controller-currentTime-rate.html

* html/MediaController.cpp:
(MediaController::updatePlaybackState):
* platform/ClockGeneric.cpp:
(ClockGeneric::setPlayRate):
(ClockGeneric::start):
(ClockGeneric::stop):

LayoutTests:

* media/video-controller-currentTime-rate-expected.txt: Added.
* media/video-controller-currentTime-rate.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (164364 => 164365)


--- trunk/LayoutTests/ChangeLog	2014-02-19 17:05:07 UTC (rev 164364)
+++ trunk/LayoutTests/ChangeLog	2014-02-19 17:24:47 UTC (rev 164365)
@@ -1,3 +1,13 @@
+2014-02-19  Piotr Grad  <[email protected]>
+
+        Setting playback rate on Media Controller modifies current time.
+        https://bugs.webkit.org/show_bug.cgi?id=129042
+
+        Reviewed by Jer Noble.
+
+        * media/video-controller-currentTime-rate-expected.txt: Added.
+        * media/video-controller-currentTime-rate.html: Added.
+
 2014-02-19  Bem Jones-Bey  <[email protected]>
 
         [CSS Shapes] shape-outside does not properly handle different writing modes

Added: trunk/LayoutTests/media/video-controller-currentTime-rate-expected.txt (0 => 164365)


--- trunk/LayoutTests/media/video-controller-currentTime-rate-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/video-controller-currentTime-rate-expected.txt	2014-02-19 17:24:47 UTC (rev 164365)
@@ -0,0 +1,7 @@
+
+Test that setting playbackRate on media controller modifies current time
+
+EVENT(canplaythrough)
+EXPECTED (0 == '0') OK
+END OF TEST
+

Added: trunk/LayoutTests/media/video-controller-currentTime-rate.html (0 => 164365)


--- trunk/LayoutTests/media/video-controller-currentTime-rate.html	                        (rev 0)
+++ trunk/LayoutTests/media/video-controller-currentTime-rate.html	2014-02-19 17:24:47 UTC (rev 164365)
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <script src=""
+        <script src=""
+        <script>
+            function start()
+            {
+                findMediaElement();
+                video.src = "" "content/test");
+                waitForEventOnce('canplaythrough', canPlayThrough);
+            }
+
+            function canPlayThrough()
+            {
+                video.controller.currentTime = 0;
+                video.controller.playbackRate = 1.01;
+                testExpected(video.controller.currentTime, 0, "==");
+                endTest();
+            }
+        </script>
+    </head>
+    <body _onload_="start()">
+        <video mediaGroup="group"></video>
+        <p>Test that setting playbackRate on media controller modifies current time</p>
+    </body>
+</html>
\ No newline at end of file

Modified: trunk/Source/WebCore/ChangeLog (164364 => 164365)


--- trunk/Source/WebCore/ChangeLog	2014-02-19 17:05:07 UTC (rev 164364)
+++ trunk/Source/WebCore/ChangeLog	2014-02-19 17:24:47 UTC (rev 164365)
@@ -1,3 +1,24 @@
+2014-02-19  Piotr Grad  <[email protected]>
+
+        Setting playback rate on Media Controller modifies current time.
+        https://bugs.webkit.org/show_bug.cgi?id=129042
+
+        Reviewed by Jer Noble.
+
+        In ClockGeneric: when setting playback rate or stoping timer,clock was restarted using current real time
+        instead of provided time by setCurrentTime.
+        Changed impl. so that m_offset is updated when clock stops to remember last clock position.
+        When playbackRate is changed m_offset is updated in order to not use old time interval for new playback rate.
+
+        Test: media/video-controller-currentTime-rate.html
+
+        * html/MediaController.cpp:
+        (MediaController::updatePlaybackState):
+        * platform/ClockGeneric.cpp:
+        (ClockGeneric::setPlayRate):
+        (ClockGeneric::start):
+        (ClockGeneric::stop):
+
 2014-02-19  Brady Eidson  <[email protected]>
 
         Add settings/preferences for enabling image controls

Modified: trunk/Source/WebCore/html/MediaController.cpp (164364 => 164365)


--- trunk/Source/WebCore/html/MediaController.cpp	2014-02-19 17:05:07 UTC (rev 164364)
+++ trunk/Source/WebCore/html/MediaController.cpp	2014-02-19 17:24:47 UTC (rev 164365)
@@ -446,6 +446,7 @@
     case ENDED:
         eventName = eventNames().endedEvent;
         m_clock->stop();
+        m_clock->setCurrentTime(0);
         m_timeupdateTimer.stop();
         break;
     case PLAYING:

Modified: trunk/Source/WebCore/platform/ClockGeneric.cpp (164364 => 164365)


--- trunk/Source/WebCore/platform/ClockGeneric.cpp	2014-02-19 17:05:07 UTC (rev 164364)
+++ trunk/Source/WebCore/platform/ClockGeneric.cpp	2014-02-19 17:24:47 UTC (rev 164365)
@@ -53,7 +53,7 @@
 
 void ClockGeneric::setPlayRate(double rate)
 {
-    m_offset = now();
+    m_offset = currentTime();
     m_lastTime = m_startTime = now();
     m_rate = rate;
 }
@@ -72,7 +72,7 @@
     if (!m_running)
         return;
 
-    m_offset = now();
+    m_offset = currentTime();
     m_lastTime = m_startTime = now();
     m_running = false;
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to