Chromium Code Reviews

Unified Diff: Source/core/html/HTMLMediaElement.cpp

Issue 444173002: Let the effective media volume be 0 if the media element is muted (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Index: Source/core/html/HTMLMediaElement.cpp
diff --git a/Source/core/html/HTMLMediaElement.cpp b/Source/core/html/HTMLMediaElement.cpp
index 86ec6ffd1cbf01b7fa3a9448b3b356fe1b01e574..7ff89bfb82fe47e2cafb09ea82a12580936a4eff 100644
--- a/Source/core/html/HTMLMediaElement.cpp
+++ b/Source/core/html/HTMLMediaElement.cpp
@@ -2354,6 +2354,31 @@ void HTMLMediaElement::setMuted(bool muted)
scheduleEvent(EventTypeNames::volumechange);
}
+void HTMLMediaElement::updateVolume()
+{
+ if (webMediaPlayer())
+ webMediaPlayer()->setVolume(effectiveMediaVolume());
+
+ if (hasMediaControls())
+ mediaControls()->updateVolume();
+}
+
+double HTMLMediaElement::effectiveMediaVolume() const
+{
+ if (m_muted)
+ return 0;
+
+ if (m_mediaController && m_mediaController->muted())
+ return 0;
+
+ double volume = m_volume;
+
+ if (m_mediaController)
+ volume *= m_mediaController->volume();
+
+ return volume;
+}
+
// The spec says to fire periodic timeupdate events (those sent while playing) every
// "15 to 250ms", we choose the slowest frequency
static const double maxTimeupdateEventFrequency = 0.25;
@@ -3276,28 +3301,6 @@ bool HTMLMediaElement::stoppedDueToErrors() const
return false;
}
-void HTMLMediaElement::updateVolume()
-{
- if (webMediaPlayer())
- webMediaPlayer()->setVolume(playerVolume());
-
- if (hasMediaControls())
- mediaControls()->updateVolume();
-}
-
-double HTMLMediaElement::playerVolume() const
-{
- double volumeMultiplier = 1;
- bool shouldMute = m_muted;
-
- if (m_mediaController) {
- volumeMultiplier *= m_mediaController->volume();
- shouldMute = m_mediaController->muted();
- }
-
- return shouldMute ? 0 : m_volume * volumeMultiplier;
-}
-
void HTMLMediaElement::updatePlayState()
{
if (!m_player)

Powered by Google App Engine