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) |