[iOS] Enable media element volume on iPad
[WebKit-https.git] / Source / WebCore / html / HTMLMediaElement.cpp
index 5e09f09..82c8be6 100644 (file)
@@ -3712,7 +3712,11 @@ ExceptionOr<void> HTMLMediaElement::setVolume(double volume)
     if (!(volume >= 0 && volume <= 1))
         return Exception { IndexSizeError };
 
-#if !PLATFORM(IOS_FAMILY)
+#if PLATFORM(IOS_FAMILY)
+    if (!processingUserGestureForMedia())
+        return { };
+#endif
+
     if (m_volume == volume)
         return { };
 
@@ -3728,7 +3732,7 @@ ExceptionOr<void> HTMLMediaElement::setVolume(double volume)
         pauseInternal();
         setAutoplayEventPlaybackState(AutoplayEventPlaybackState::PreventedAutoplay);
     }
-#endif
+
     return { };
 }
 
@@ -4919,9 +4923,9 @@ void HTMLMediaElement::mediaPlayerVolumeChanged(MediaPlayer*)
 
     beginProcessingMediaPlayerCallback();
     if (m_player) {
-        double vol = m_player->volume();
-        if (vol != m_volume) {
-            m_volume = vol;
+        double volume = m_player->volume();
+        if (volume != m_volume) {
+            m_volume = volume;
             updateVolume();
             scheduleEvent(eventNames().volumechangeEvent);
         }
@@ -5334,14 +5338,7 @@ void HTMLMediaElement::updateVolume()
 {
     if (!m_player)
         return;
-#if PLATFORM(IOS_FAMILY)
-    // Only the user can change audio volume so update the cached volume and post the changed event.
-    float volume = m_player->volume();
-    if (m_volume != volume) {
-        m_volume = volume;
-        scheduleEvent(eventNames().volumechangeEvent);
-    }
-#else
+
     // Avoid recursion when the player reports volume changes.
     if (!processingMediaPlayerCallback()) {
         Page* page = document().page();
@@ -5370,7 +5367,6 @@ void HTMLMediaElement::updateVolume()
 
     if (hasMediaControls())
         mediaControls()->changedVolume();
-#endif
 }
 
 void HTMLMediaElement::scheduleUpdatePlayState()