Title: [154944] trunk
Revision
154944
Author
calva...@igalia.com
Date
2013-09-01 10:12:16 -0700 (Sun, 01 Sep 2013)

Log Message

Volume slider value should be 0 when audio is muted
https://bugs.webkit.org/show_bug.cgi?id=120553

Reviewed by Eric Carlson.

Source/WebCore:

Fixed the problem of showing a non empty slider when audio is
muted.

Test: media/volume-bar-empty-when-muted.html.

* html/shadow/MediaControls.cpp:
(WebCore::MediaControls::reset): Use setSliderVolume.
(WebCore::MediaControls::changedVolume): Use setSliderVolume.
(WebCore::MediaControls::setSliderVolume): Added to set the volume
to 0 when muted and to its value otherwise.
* html/shadow/MediaControls.h: Added setSliderVolume.
* html/shadow/MediaControlsApple.cpp:
(WebCore::MediaControlsApple::reset): Used setSliderVolume and
setFullscreenSliderVolume.
(WebCore::MediaControlsApple::changedVolume): Used
setFullscreenSliderVolume.
(WebCore::MediaControlsApple::setFullscreenSliderVolume): Added to
set the volume to 0 when muted and to its value otherwise.
* html/shadow/MediaControlsApple.h: Added setFullscreenSliderVolume
* html/shadow/MediaControlsBlackBerry.cpp:
(WebCore::MediaControlsBlackBerry::reset): Used setSliderVolume.

LayoutTests:

Added test to check if the volume slider value is 0 when the
element is muted even if volume is set to something else.

* media/volume-bar-empty-when-muted-expected.txt: Added.
* media/volume-bar-empty-when-muted.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (154943 => 154944)


--- trunk/LayoutTests/ChangeLog	2013-09-01 14:57:23 UTC (rev 154943)
+++ trunk/LayoutTests/ChangeLog	2013-09-01 17:12:16 UTC (rev 154944)
@@ -1,3 +1,16 @@
+2013-09-01  Xabier Rodriguez Calvar  <calva...@igalia.com>
+
+        Volume slider value should be 0 when audio is muted
+        https://bugs.webkit.org/show_bug.cgi?id=120553
+
+        Reviewed by Eric Carlson.
+
+        Added test to check if the volume slider value is 0 when the
+        element is muted even if volume is set to something else.
+
+        * media/volume-bar-empty-when-muted-expected.txt: Added.
+        * media/volume-bar-empty-when-muted.html: Added.
+
 2013-09-01  Joseph Pecoraro  <pecor...@apple.com>
 
         Web Inspector: A little more test cleanup

Added: trunk/LayoutTests/media/volume-bar-empty-when-muted-expected.txt (0 => 154944)


--- trunk/LayoutTests/media/volume-bar-empty-when-muted-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/volume-bar-empty-when-muted-expected.txt	2013-09-01 17:12:16 UTC (rev 154944)
@@ -0,0 +1,7 @@
+Tests if the volume slider thumb is rendered properly when the volume is uninitialized but media is muted.
+
+EXPECTED (video.volume == '1') OK
+EXPECTED (video.muted == 'true') OK
+EXPECTED (volumeSlider.value == '0') OK
+END OF TEST
+

Added: trunk/LayoutTests/media/volume-bar-empty-when-muted.html (0 => 154944)


--- trunk/LayoutTests/media/volume-bar-empty-when-muted.html	                        (rev 0)
+++ trunk/LayoutTests/media/volume-bar-empty-when-muted.html	2013-09-01 17:12:16 UTC (rev 154944)
@@ -0,0 +1,50 @@
+<html>
+<head>
+    <title>Test rendering of volume slider of video tag</title>
+    <script src=""
+    <script src=""
+    <script src=""
+    <script>
+        var video;
+        var volumeSliderTrackDimensions;
+
+        function init()
+        {
+            if (window.testRunner)
+                testRunner.waitUntilDone();
+
+            video = document.getElementsByTagName("video")[0];
+            video.src = "" "content/test");
+        }
+
+        function test()
+        {
+            if (!window.eventSender) {
+                consoleWrite("ERROR: no event sender.");
+                failTest();
+            }
+
+            var muteButtonCoordinates;
+
+            muteButtonCoordinates = mediaControlsButtonCoordinates(video, "mute-button");
+            eventSender.mouseMoveTo(muteButtonCoordinates[0], muteButtonCoordinates[1]);
+
+            // Forcing relayout calculations to say that you are
+            // triggering the volume slider to show up for
+            // controls that work that way.
+            document.body.offsetTop;
+
+            volumeSlider = mediaControlsElement(internals.shadowRoot(video).firstChild, "-webkit-media-controls-volume-slider");
+            testExpected("video.volume", 1);
+            testExpected("video.muted", true);
+            testExpected("volumeSlider.value", 0);
+            endTest();
+        }
+    </script>
+</head>
+<body _onload_="init()">
+    <p>Tests if the volume slider thumb is rendered properly when the
+    volume is uninitialized but media is muted.</p>
+    <video _oncanplaythrough_="test()" controls muted></video>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (154943 => 154944)


--- trunk/Source/WebCore/ChangeLog	2013-09-01 14:57:23 UTC (rev 154943)
+++ trunk/Source/WebCore/ChangeLog	2013-09-01 17:12:16 UTC (rev 154944)
@@ -1,3 +1,32 @@
+2013-09-01  Xabier Rodriguez Calvar  <calva...@igalia.com>
+
+        Volume slider value should be 0 when audio is muted
+        https://bugs.webkit.org/show_bug.cgi?id=120553
+
+        Reviewed by Eric Carlson.
+
+        Fixed the problem of showing a non empty slider when audio is
+        muted.
+
+        Test: media/volume-bar-empty-when-muted.html.
+
+        * html/shadow/MediaControls.cpp:
+        (WebCore::MediaControls::reset): Use setSliderVolume.
+        (WebCore::MediaControls::changedVolume): Use setSliderVolume.
+        (WebCore::MediaControls::setSliderVolume): Added to set the volume
+        to 0 when muted and to its value otherwise.
+        * html/shadow/MediaControls.h: Added setSliderVolume.
+        * html/shadow/MediaControlsApple.cpp:
+        (WebCore::MediaControlsApple::reset): Used setSliderVolume and
+        setFullscreenSliderVolume.
+        (WebCore::MediaControlsApple::changedVolume): Used
+        setFullscreenSliderVolume.
+        (WebCore::MediaControlsApple::setFullscreenSliderVolume): Added to
+        set the volume to 0 when muted and to its value otherwise.
+        * html/shadow/MediaControlsApple.h: Added setFullscreenSliderVolume
+        * html/shadow/MediaControlsBlackBerry.cpp:
+        (WebCore::MediaControlsBlackBerry::reset): Used setSliderVolume.
+
 2013-09-01  Andreas Kling  <akl...@apple.com>
 
         Give EditCommand a protected Frame& getter.

Modified: trunk/Source/WebCore/html/shadow/MediaControls.cpp (154943 => 154944)


--- trunk/Source/WebCore/html/shadow/MediaControls.cpp	2013-09-01 14:57:23 UTC (rev 154943)
+++ trunk/Source/WebCore/html/shadow/MediaControls.cpp	2013-09-01 17:12:16 UTC (rev 154944)
@@ -108,7 +108,7 @@
             m_volumeSlider->hide();
         else {
             m_volumeSlider->show();
-            m_volumeSlider->setVolume(m_mediaController->volume());
+            setSliderVolume();
         }
     }
 
@@ -240,7 +240,7 @@
 void MediaControls::changedVolume()
 {
     if (m_volumeSlider)
-        m_volumeSlider->setVolume(m_mediaController->volume());
+        setSliderVolume();
     if (m_panelMuteButton && m_panelMuteButton->renderer())
         m_panelMuteButton->renderer()->repaint();
 }
@@ -425,6 +425,11 @@
 }
 #endif
 
+void MediaControls::setSliderVolume()
+{
+    m_volumeSlider->setVolume(m_mediaController->muted() ? 0.0 : m_mediaController->volume());
 }
 
+}
+
 #endif

Modified: trunk/Source/WebCore/html/shadow/MediaControls.h (154943 => 154944)


--- trunk/Source/WebCore/html/shadow/MediaControls.h	2013-09-01 14:57:23 UTC (rev 154943)
+++ trunk/Source/WebCore/html/shadow/MediaControls.h	2013-09-01 17:12:16 UTC (rev 154944)
@@ -114,6 +114,8 @@
 
     virtual bool containsRelatedTarget(Event*);
 
+    void setSliderVolume();
+
     MediaControllerInterface* m_mediaController;
 
     // Container for the media control elements.

Modified: trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp (154943 => 154944)


--- trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp	2013-09-01 14:57:23 UTC (rev 154943)
+++ trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp	2013-09-01 17:12:16 UTC (rev 154944)
@@ -340,7 +340,7 @@
         m_panelMuteButton->hide();
 
     if (m_volumeSlider)
-        m_volumeSlider->setVolume(m_mediaController->volume());
+        setSliderVolume();
 
     if (m_toggleClosedCaptionsButton) {
         if (m_mediaController->hasClosedCaptions())
@@ -354,7 +354,7 @@
 
 #if ENABLE(FULLSCREEN_API)
     if (m_fullScreenVolumeSlider)
-        m_fullScreenVolumeSlider->setVolume(m_mediaController->volume());
+        setFullscreenSliderVolume();
 
     if (m_isFullscreen) {
         if (m_mediaController->isLiveStream()) {
@@ -446,7 +446,7 @@
     MediaControls::changedVolume();
 
     if (m_fullScreenVolumeSlider)
-        m_fullScreenVolumeSlider->setVolume(m_mediaController->volume());
+        setFullscreenSliderVolume();
 }
 
 void MediaControlsApple::enteredFullscreen()
@@ -549,6 +549,11 @@
     removeEventListener(eventNames().clickEvent, listener, true);
 }
 
+void MediaControlsApple::setFullscreenSliderVolume()
+{
+    m_fullScreenVolumeSlider->setVolume(m_mediaController->muted() ? 0.0 : m_mediaController->volume());
+}
+
 bool MediaControlsApple::shouldClosedCaptionsContainerPreventPageScrolling(int wheelDeltaY)
 {
     int scrollTop = m_closedCaptionsContainer->scrollTop();

Modified: trunk/Source/WebCore/html/shadow/MediaControlsApple.h (154943 => 154944)


--- trunk/Source/WebCore/html/shadow/MediaControlsApple.h	2013-09-01 14:57:23 UTC (rev 154943)
+++ trunk/Source/WebCore/html/shadow/MediaControlsApple.h	2013-09-01 17:12:16 UTC (rev 154944)
@@ -99,6 +99,7 @@
 
     void showClosedCaptionTrackList();
     void hideClosedCaptionTrackList();
+    void setFullscreenSliderVolume();
 
     MediaControlRewindButtonElement* m_rewindButton;
     MediaControlReturnToRealtimeButtonElement* m_returnToRealTimeButton;

Modified: trunk/Source/WebCore/html/shadow/MediaControlsBlackBerry.cpp (154943 => 154944)


--- trunk/Source/WebCore/html/shadow/MediaControlsBlackBerry.cpp	2013-09-01 14:57:23 UTC (rev 154943)
+++ trunk/Source/WebCore/html/shadow/MediaControlsBlackBerry.cpp	2013-09-01 17:12:16 UTC (rev 154944)
@@ -931,7 +931,7 @@
         m_muteButton->hide();
 
     if (m_volumeSlider)
-        m_volumeSlider->setVolume(m_mediaController->volume());
+        setSliderVolume();
 
     if (m_toggleClosedCaptionsButton) {
         if (m_mediaController->hasClosedCaptions())
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to