[webkit-changes] [WebKit/WebKit] 130f20: REGRESSSION (iOS 17 Beta): Outgoing video and inco...

youennf noreply at github.com
Thu Oct 26 05:53:56 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 130f20449a4b9edfb76e6b51b93aedecb1bb3f0a
      https://github.com/WebKit/WebKit/commit/130f20449a4b9edfb76e6b51b93aedecb1bb3f0a
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2023-10-26 (Thu, 26 Oct 2023)

  Changed paths:
    A LayoutTests/fast/mediastream/microphone-interruption-and-audio-session-expected.txt
    A LayoutTests/fast/mediastream/microphone-interruption-and-audio-session.html
    M LayoutTests/platform/glib/TestExpectations
    M Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
    M Source/WebCore/Modules/mediastream/MediaStreamTrack.h
    M Source/WebCore/platform/audio/PlatformMediaSession.h
    M Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp
    M Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp
    M Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h

  Log Message:
  -----------
  REGRESSSION (iOS 17 Beta): Outgoing video and incoming audio do not recover if iOS User receives PSTN/FaceTime call in the middle of the WebRTC call and decline/accepts it from the notification
https://bugs.webkit.org/show_bug.cgi?id=259884
rdar://113534779

Reviewed by Eric Carlson.

When we are interrupted by a phone call, we were sometimes changing the AudioSession Category from PlayAndRecord to Media.
In that case, we might try to activate the AudioSession with Media category and it will succeed given category is Media.
Capture will still fail as setting the category to PlayAndRecord before restarting capture will fail.
In that case, we stay muted but we will not be able to recover properly when getting uninterrupted.

To fix this, we are now sticking to PlayAndRecord when a process has microphone sources which are muted due to interruption.
When we will try to activate the audio session while being interrupted, activation will fail as it is lower priority compared to a phone call,
and we will wait for end of interruption signal.

Covered by added test.

* LayoutTests/fast/mediastream/microphone-interruption-and-audio-session-expected.txt: Added.
* LayoutTests/fast/mediastream/microphone-interruption-and-audio-session.html: Added.
* Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::wantsToCaptureAudio const):
* Source/WebCore/Modules/mediastream/MediaStreamTrack.h:
* Source/WebCore/platform/audio/PlatformMediaSession.h:
* Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::countActiveAudioCaptureSources):
* Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::interrupted const):
* Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h:

Canonical link: https://commits.webkit.org/269809@main




More information about the webkit-changes mailing list