[iOS] HTMLMediaSession should set AudioSession category
[WebKit-https.git] / Source / WebCore / html / HTMLMediaSession.cpp
index 36c21b1136e401b64c56c899440e496bbfe12363..2fd037fdf913cbd0048195d9fdf0cc7fd15f89ab 100644 (file)
 #include "ScriptController.h"
 
 #if PLATFORM(IOS)
 #include "ScriptController.h"
 
 #if PLATFORM(IOS)
+#include "AudioSession.h"
 #include "RuntimeApplicationChecksIOS.h"
 #endif
 
 namespace WebCore {
 
 #include "RuntimeApplicationChecksIOS.h"
 #endif
 
 namespace WebCore {
 
+static void initializeAudioSession()
+{
+#if PLATFORM(IOS)
+    static bool wasAudioSessionInitialized;
+    if (wasAudioSessionInitialized)
+        return;
+
+    wasAudioSessionInitialized = true;
+    if (!WebCore::applicationIsMobileSafari())
+        return;
+
+    AudioSession::sharedSession().setCategory(AudioSession::MediaPlayback);
+#endif
+}
+
 std::unique_ptr<HTMLMediaSession> HTMLMediaSession::create(MediaSessionClient& client)
 {
     return std::make_unique<HTMLMediaSession>(client);
 std::unique_ptr<HTMLMediaSession> HTMLMediaSession::create(MediaSessionClient& client)
 {
     return std::make_unique<HTMLMediaSession>(client);
@@ -50,6 +66,7 @@ HTMLMediaSession::HTMLMediaSession(MediaSessionClient& client)
     : MediaSession(client)
     , m_restrictions(NoRestrictions)
 {
     : MediaSession(client)
     , m_restrictions(NoRestrictions)
 {
+    initializeAudioSession();
 }
 
 void HTMLMediaSession::addBehaviorRestriction(BehaviorRestrictions restriction)
 }
 
 void HTMLMediaSession::addBehaviorRestriction(BehaviorRestrictions restriction)
@@ -99,7 +116,7 @@ bool HTMLMediaSession::pageAllowsDataLoading(const HTMLMediaElement& element) co
         LOG(Media, "HTMLMediaSession::pageAllowsDataLoading - returning FALSE");
         return false;
     }
         LOG(Media, "HTMLMediaSession::pageAllowsDataLoading - returning FALSE");
         return false;
     }
-    
+
     return true;
 }
 
     return true;
 }
 
@@ -110,7 +127,7 @@ bool HTMLMediaSession::pageAllowsPlaybackAfterResuming(const HTMLMediaElement& e
         LOG(Media, "HTMLMediaSession::pageAllowsPlaybackAfterResuming - returning FALSE");
         return false;
     }
         LOG(Media, "HTMLMediaSession::pageAllowsPlaybackAfterResuming - returning FALSE");
         return false;
     }
-    
+
     return true;
 }
 
     return true;
 }
 
@@ -121,7 +138,7 @@ bool HTMLMediaSession::showingPlaybackTargetPickerPermitted(const HTMLMediaEleme
         LOG(Media, "HTMLMediaSession::showingPlaybackTargetPickerPermitted - returning FALSE");
         return false;
     }
         LOG(Media, "HTMLMediaSession::showingPlaybackTargetPickerPermitted - returning FALSE");
         return false;
     }
-    
+
     return true;
 }
 #endif
     return true;
 }
 #endif