Title: [232650] trunk
Revision
232650
Author
[email protected]
Date
2018-06-08 16:30:57 -0700 (Fri, 08 Jun 2018)

Log Message

REGRESSION:  Cannot listen to audio on Google Translate with side switch set to "vibrate"
https://bugs.webkit.org/show_bug.cgi?id=186415
<rdar://problem/40584651>

Reviewed by Eric Carlson.

Source/WebCore:

Test: platform/mac/media/audio-session-category-audio-autoplay.html

Make sure that the PlatformMediaSession's state has already been set when calling updateSessionStates().

* platform/audio/PlatformMediaSession.cpp:
(WebCore::PlatformMediaSession::setState):
* platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::sessionWillBeginPlayback):
(WebCore::PlatformMediaSessionManager::sessionStateChanged):

LayoutTests:

* platform/mac/media/audio-session-category-audio-autoplay-expected.txt: Added.
* platform/mac/media/audio-session-category-audio-autoplay.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (232649 => 232650)


--- trunk/LayoutTests/ChangeLog	2018-06-08 23:26:21 UTC (rev 232649)
+++ trunk/LayoutTests/ChangeLog	2018-06-08 23:30:57 UTC (rev 232650)
@@ -1,3 +1,14 @@
+2018-06-07  Jer Noble  <[email protected]>
+
+        REGRESSION:  Cannot listen to audio on Google Translate with side switch set to "vibrate"
+        https://bugs.webkit.org/show_bug.cgi?id=186415
+        <rdar://problem/40584651>
+
+        Reviewed by Eric Carlson.
+
+        * platform/mac/media/audio-session-category-audio-autoplay-expected.txt: Added.
+        * platform/mac/media/audio-session-category-audio-autoplay.html: Added.
+
 2018-06-08  Brendan McLoughlin  <[email protected]>
 
         Sync web-platform-tests repo to 197cdad

Added: trunk/LayoutTests/platform/mac/media/audio-session-category-audio-autoplay-expected.txt (0 => 232650)


--- trunk/LayoutTests/platform/mac/media/audio-session-category-audio-autoplay-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/mac/media/audio-session-category-audio-autoplay-expected.txt	2018-06-08 23:30:57 UTC (rev 232650)
@@ -0,0 +1,8 @@
+
+RUN(internals.settings.setShouldManageAudioSessionCategory(true))
+RUN(audio.autoplay = true)
+RUN(audio.src = "" "../../../media/content/test"))
+EVENT(playing)
+EXPECTED (internals.audioSessionCategory() == 'MediaPlayback') OK
+END OF TEST
+

Added: trunk/LayoutTests/platform/mac/media/audio-session-category-audio-autoplay.html (0 => 232650)


--- trunk/LayoutTests/platform/mac/media/audio-session-category-audio-autoplay.html	                        (rev 0)
+++ trunk/LayoutTests/platform/mac/media/audio-session-category-audio-autoplay.html	2018-06-08 23:30:57 UTC (rev 232650)
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>audio-session-category-track-change</title>
+    <script src=""
+    <script src=""
+    <script>
+    function go() {
+        audio = video = mediaElement = document.querySelector('audio');
+        run('internals.settings.setShouldManageAudioSessionCategory(true)');
+        run('audio.autoplay = true');
+        run('audio.src = "" "../../../media/content/test")');
+        waitForEvent('playing', playing);
+    }
+
+    function playing() {
+        testExpected('internals.audioSessionCategory()', 'MediaPlayback');
+        endTest();
+    }
+    </script>
+</head>
+<body _onload_="go()">
+    <audio controls></video>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (232649 => 232650)


--- trunk/Source/WebCore/ChangeLog	2018-06-08 23:26:21 UTC (rev 232649)
+++ trunk/Source/WebCore/ChangeLog	2018-06-08 23:30:57 UTC (rev 232650)
@@ -1,3 +1,21 @@
+2018-06-07  Jer Noble  <[email protected]>
+
+        REGRESSION:  Cannot listen to audio on Google Translate with side switch set to "vibrate"
+        https://bugs.webkit.org/show_bug.cgi?id=186415
+        <rdar://problem/40584651>
+
+        Reviewed by Eric Carlson.
+
+        Test: platform/mac/media/audio-session-category-audio-autoplay.html
+
+        Make sure that the PlatformMediaSession's state has already been set when calling updateSessionStates().
+
+        * platform/audio/PlatformMediaSession.cpp:
+        (WebCore::PlatformMediaSession::setState):
+        * platform/audio/PlatformMediaSessionManager.cpp:
+        (WebCore::PlatformMediaSessionManager::sessionWillBeginPlayback):
+        (WebCore::PlatformMediaSessionManager::sessionStateChanged):
+
 2018-06-08  Dean Jackson  <[email protected]>
 
         'setRenderPipelineState:' is unavailable: not available on iOS

Modified: trunk/Source/WebCore/platform/audio/PlatformMediaSession.cpp (232649 => 232650)


--- trunk/Source/WebCore/platform/audio/PlatformMediaSession.cpp	2018-06-08 23:26:21 UTC (rev 232649)
+++ trunk/Source/WebCore/platform/audio/PlatformMediaSession.cpp	2018-06-08 23:30:57 UTC (rev 232650)
@@ -112,8 +112,12 @@
 
 void PlatformMediaSession::setState(State state)
 {
+    if (state == m_state)
+        return;
+
     INFO_LOG(LOGIDENTIFIER, state);
     m_state = state;
+    PlatformMediaSessionManager::sharedManager().sessionStateChanged(*this);
 }
 
 void PlatformMediaSession::beginInterruption(InterruptionType type)

Modified: trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp (232649 => 232650)


--- trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp	2018-06-08 23:26:21 UTC (rev 232649)
+++ trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp	2018-06-08 23:30:57 UTC (rev 232650)
@@ -213,7 +213,6 @@
             oneSession.pauseSession();
     });
 
-    updateSessionState();
     return true;
 }
     
@@ -249,6 +248,11 @@
     LOG(Media, "PlatformMediaSessionManager::sessionWillEndPlayback - session moved from index %zu to %zu", pausingSessionIndex, lastPlayingSessionIndex);
 }
 
+void PlatformMediaSessionManager::sessionStateChanged(PlatformMediaSession&)
+{
+    updateSessionState();
+}
+
 void PlatformMediaSessionManager::setCurrentSession(PlatformMediaSession& session)
 {
     LOG(Media, "PlatformMediaSessionManager::setCurrentSession - %p", &session);

Modified: trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h (232649 => 232650)


--- trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h	2018-06-08 23:26:21 UTC (rev 232649)
+++ trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h	2018-06-08 23:30:57 UTC (rev 232650)
@@ -94,6 +94,7 @@
 
     virtual bool sessionWillBeginPlayback(PlatformMediaSession&);
     virtual void sessionWillEndPlayback(PlatformMediaSession&);
+    virtual void sessionStateChanged(PlatformMediaSession&);
     virtual void sessionDidEndRemoteScrubbing(const PlatformMediaSession&) { };
     virtual void clientCharacteristicsChanged(PlatformMediaSession&) { }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to