Diff
Modified: trunk/LayoutTests/ChangeLog (136294 => 136295)
--- trunk/LayoutTests/ChangeLog 2012-11-30 23:59:55 UTC (rev 136294)
+++ trunk/LayoutTests/ChangeLog 2012-12-01 00:13:34 UTC (rev 136295)
@@ -1,3 +1,17 @@
+2012-11-30 Jer Noble <[email protected]>
+
+ Add support for the 'unpause()' method on MediaController.
+ https://bugs.webkit.org/show_bug.cgi?id=103751
+
+ Reviewed by Eric Carlson.
+
+ Add new test for unpause() and playbackState() methods.
+
+ * media/media-controller-unpause.html:
+ * media/media-controller-unpause-expected.txt:
+ * media/media-controller-playback.html:
+ * media/media-controller-playback-expected.txt:
+
2012-11-30 Zhenyao Mo <[email protected]>
Unreviewed, webkit gardening, fix webkit lint.
Modified: trunk/LayoutTests/media/media-controller-playback-expected.txt (136294 => 136295)
--- trunk/LayoutTests/media/media-controller-playback-expected.txt 2012-11-30 23:59:55 UTC (rev 136294)
+++ trunk/LayoutTests/media/media-controller-playback-expected.txt 2012-12-01 00:13:34 UTC (rev 136295)
@@ -1,8 +1,6 @@
RUN(controller = video.controller)
EVENT(canplaythrough)
-RUN(video.play())
-RUN(video2.play())
RUN(controller.play())
EVENT(playing)
EXPECTED (controller.paused == 'false') OK
Modified: trunk/LayoutTests/media/media-controller-playback.html (136294 => 136295)
--- trunk/LayoutTests/media/media-controller-playback.html 2012-11-30 23:59:55 UTC (rev 136294)
+++ trunk/LayoutTests/media/media-controller-playback.html 2012-12-01 00:13:34 UTC (rev 136295)
@@ -22,8 +22,6 @@
function canplaythrough() {
consoleWrite("EVENT(canplaythrough)");
controller.removeEventListener('canplaythrough', canplaythrough, true);
- run('video.play()');
- run('video2.play()');
controller.addEventListener('playing', playing, true);
run('controller.play()');
}
@@ -49,4 +47,4 @@
<video mediaGroup="group" controls></video>
<video mediaGroup="group" controls></video>
</body>
-</html>
\ No newline at end of file
+</html>
Added: trunk/LayoutTests/media/media-controller-unpause-expected.txt (0 => 136295)
--- trunk/LayoutTests/media/media-controller-unpause-expected.txt (rev 0)
+++ trunk/LayoutTests/media/media-controller-unpause-expected.txt 2012-12-01 00:13:34 UTC (rev 136295)
@@ -0,0 +1,12 @@
+
+RUN(controller = video.controller)
+EVENT(canplaythrough)
+RUN(controller.pause())
+EVENT(pause)
+RUN(controller.unpause())
+EVENT(play)
+EXPECTED (controller.playbackState == 'waiting') OK
+RUN(controller.play())
+EVENT(playing)
+END OF TEST
+
Copied: trunk/LayoutTests/media/media-controller-unpause.html (from rev 136294, trunk/LayoutTests/media/media-controller-playback.html) (0 => 136295)
--- trunk/LayoutTests/media/media-controller-unpause.html (rev 0)
+++ trunk/LayoutTests/media/media-controller-unpause.html 2012-12-01 00:13:34 UTC (rev 136295)
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src=""
+ <script src=""
+
+ <script>
+ var controller;
+ var video2;
+
+ function start()
+ {
+ var videos = document.getElementsByTagName('video');
+ video = videos[0];
+ video2 = videos[1];
+ run('controller = video.controller');
+ controller.addEventListener('canplaythrough', canplaythrough, true);
+ var src = "" 'content/test');
+ video.src = ""
+ video2.src = ""
+ }
+
+ function canplaythrough()
+ {
+ consoleWrite("EVENT(canplaythrough)");
+ controller.removeEventListener('canplaythrough', canplaythrough, true);
+ controller.addEventListener('pause', pause, true);
+ run('controller.pause()');
+ }
+
+ function pause() {
+ consoleWrite("EVENT(pause)");
+ controller.removeEventListener('pause', pause, true);
+ controller.addEventListener('play', play, true);
+ run('controller.unpause()');
+ }
+
+ function play()
+ {
+ consoleWrite('EVENT(play)');
+ controller.removeEventListener('play', play, true);
+ testExpected('controller.playbackState', 'waiting');
+ controller.addEventListener('playing', playing, true);
+ run('controller.play()');
+ }
+
+ function playing()
+ {
+ consoleWrite("EVENT(playing)");
+ controller.removeEventListener('playing', playing, true);
+ endTest();
+ }
+ </script>
+ </head>
+ <body _onload_="start()">
+ <video mediaGroup="group" controls></video>
+ <video mediaGroup="group" controls></video>
+ </body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (136294 => 136295)
--- trunk/Source/WebCore/ChangeLog 2012-11-30 23:59:55 UTC (rev 136294)
+++ trunk/Source/WebCore/ChangeLog 2012-12-01 00:13:34 UTC (rev 136295)
@@ -1,3 +1,30 @@
+2012-11-30 Jer Noble <[email protected]>
+
+ Add support for the 'unpause()' method on MediaController.
+ https://bugs.webkit.org/show_bug.cgi?id=103751
+
+ Reviewed by Eric Carlson.
+
+ The MediaController spec has been updated to add an unpause() method
+ which is functionally identical to the old play() method, and changes
+ the semantics of play() to call play() on the underlying slaved media
+ elements. The spec also added a playbackState() method, returning a
+ string representing the last calculated playback state.
+
+ Test: media/media-controller-unpause.html
+
+ * html/MediaController.cpp:
+ (MediaController::unpause): Renamed from play().
+ (MediaController::play): Added. Same as unpause(), but also call
+ play() on slaved media elements.
+ (playbackStateWaiting): Static string accessor.
+ (playbackStatePlaying): Ditto.
+ (playbackStateEnded): Ditto.
+ (MediaController::playbackState): Added. Returns string value of
+ m_playbackState.
+ * html/MediaController.h:
+ * html/MediaController.idl:
+
2012-11-30 Julien Chaffraix <[email protected]>
[CSS Grid Layout] Align the grid track code with the specification's production rules
Modified: trunk/Source/WebCore/html/MediaController.cpp (136294 => 136295)
--- trunk/Source/WebCore/html/MediaController.cpp 2012-11-30 23:59:55 UTC (rev 136294)
+++ trunk/Source/WebCore/html/MediaController.cpp 2012-12-01 00:13:34 UTC (rev 136295)
@@ -178,9 +178,9 @@
scheduleTimeupdateEvent();
}
-void MediaController::play()
+void MediaController::unpause()
{
- // When the play() method is invoked, if the MediaController is a paused media controller,
+ // When the unpause() method is invoked, if the MediaController is a paused media controller,
if (!m_paused)
return;
@@ -192,6 +192,17 @@
reportControllerState();
}
+void MediaController::play()
+{
+ // When the play() method is invoked, the user agent must invoke the play method of each
+ // slaved media element in turn,
+ for (size_t index = 0; index < m_mediaElements.size(); ++index)
+ m_mediaElements[index]->play();
+
+ // and then invoke the unpause method of the MediaController.
+ unpause();
+}
+
void MediaController::pause()
{
// When the pause() method is invoked, if the MediaController is a playing media controller,
@@ -279,6 +290,36 @@
m_mediaElements[index]->updateVolume();
}
+static const AtomicString& playbackStateWaiting()
+{
+ DEFINE_STATIC_LOCAL(AtomicString, waiting, ("waiting", AtomicString::ConstructFromLiteral));
+ return waiting;
+}
+
+static const AtomicString& playbackStatePlaying()
+{
+ DEFINE_STATIC_LOCAL(AtomicString, playing, ("playing", AtomicString::ConstructFromLiteral));
+ return playing;
+}
+
+static const AtomicString& playbackStateEnded()
+{
+ DEFINE_STATIC_LOCAL(AtomicString, ended, ("ended", AtomicString::ConstructFromLiteral));
+ return ended;
+}
+
+const AtomicString& MediaController::playbackState() const
+{
+ switch (m_playbackState) {
+ case WAITING:
+ return playbackStateWaiting();
+ case PLAYING:
+ return playbackStatePlaying();
+ case ENDED:
+ return playbackStateEnded();
+ }
+}
+
void MediaController::reportControllerState()
{
updateReadyState();
Modified: trunk/Source/WebCore/html/MediaController.h (136294 => 136295)
--- trunk/Source/WebCore/html/MediaController.h 2012-11-30 23:59:55 UTC (rev 136294)
+++ trunk/Source/WebCore/html/MediaController.h 2012-12-01 00:13:34 UTC (rev 136295)
@@ -67,6 +67,7 @@
virtual bool paused() const { return m_paused; }
virtual void play();
virtual void pause();
+ void unpause();
virtual float defaultPlaybackRate() const { return m_defaultPlaybackRate; }
virtual void setDefaultPlaybackRate(float);
@@ -83,7 +84,7 @@
virtual ReadyState readyState() const { return m_readyState; }
enum PlaybackState { WAITING, PLAYING, ENDED };
- virtual PlaybackState playbackState() const { return m_playbackState; }
+ const AtomicString& playbackState() const;
virtual bool supportsFullscreen() const { return false; }
virtual bool isFullscreen() const { return false; }
Modified: trunk/Source/WebCore/html/MediaController.idl (136294 => 136295)
--- trunk/Source/WebCore/html/MediaController.idl 2012-11-30 23:59:55 UTC (rev 136294)
+++ trunk/Source/WebCore/html/MediaController.idl 2012-12-01 00:13:34 UTC (rev 136295)
@@ -39,8 +39,10 @@
readonly attribute boolean paused;
readonly attribute TimeRanges played;
+ readonly attribute DOMString playbackState;
void play();
void pause();
+ void unpause();
attribute double defaultPlaybackRate;
attribute double playbackRate;