Changeset 271488 in webkit
- Timestamp:
- Jan 14, 2021, 9:19:00 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/mediastream/audio-track-enabled-expected.txt (modified) (1 diff)
-
LayoutTests/fast/mediastream/audio-track-enabled.html (modified) (2 diffs)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (modified) (2 diffs)
-
Source/WebCore/platform/audio/PlatformMediaSessionManager.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r271480 r271488 1 2021-01-14 Youenn Fablet <youenn@apple.com> 2 3 MediaSessionManager should update its state as soon as an audio capture track is ended 4 https://bugs.webkit.org/show_bug.cgi?id=220619 5 6 Reviewed by Eric Carlson. 7 8 * fast/mediastream/audio-track-enabled-expected.txt: 9 * fast/mediastream/audio-track-enabled.html: 10 1 11 2021-01-14 Martin Robinson <mrobinson@igalia.com> 2 12 -
trunk/LayoutTests/fast/mediastream/audio-track-enabled-expected.txt
r267644 r271488 1 1 2 2 3 PASS Check audio session state in case of disabled a udio tracks3 PASS Check audio session state in case of disabled and stopped audio tracks 4 4 -
trunk/LayoutTests/fast/mediastream/audio-track-enabled.html
r250853 r271488 14 14 internals.settings.setShouldManageAudioSessionCategory(true); 15 15 16 const defaultCategory = internals.audioSessionCategory(); 17 16 18 let stream = await navigator.mediaDevices.getUserMedia({audio : true}); 17 19 … … 25 27 assert_equals(internals.audioSessionCategory(), "PlayAndRecord"); 26 28 27 stream.removeTrack(stream.getAudioTracks()[0]); 29 const audioTrack = stream.getAudioTracks()[0]; 30 stream.removeTrack(audioTrack); 28 31 await new Promise(resolve => setTimeout(resolve, 10)); 29 32 assert_equals(internals.audioSessionCategory(), "PlayAndRecord"); 30 }, "Check audio session state in case of disabled audio tracks"); 33 34 audioTrack.stop(); 35 const maxTries = 100; 36 let counter = 0; 37 while (++counter < maxTries) { 38 if (internals.audioSessionCategory() != "PlayAndRecord") 39 break; 40 await new Promise(resolve => setTimeout(resolve, 10)); 41 } 42 assert_less_than(counter, maxTries); 43 assert_equals(internals.audioSessionCategory(), defaultCategory); 44 }, "Check audio session state in case of disabled and stopped audio tracks"); 31 45 </script> 32 46 </body> -
trunk/Source/WebCore/ChangeLog
r271487 r271488 1 2021-01-14 Youenn Fablet <youenn@apple.com> 2 3 MediaSessionManager should update its state as soon as an audio capture track is ended 4 https://bugs.webkit.org/show_bug.cgi?id=220619 5 6 Reviewed by Eric Carlson. 7 8 We were updating the audio session category on track destruction. 9 It should be done as soon as track is ended (either by web page or underlying) 10 instead of when GC might happen. 11 12 Covered by updated test. 13 14 * Modules/mediastream/MediaStreamTrack.cpp: 15 (WebCore::MediaStreamTrack::~MediaStreamTrack): 16 (WebCore::MediaStreamTrack::trackEnded): 17 * platform/audio/PlatformMediaSessionManager.h: 18 (WebCore::PlatformMediaSessionManager::hasAudioCaptureSource const): 19 1 20 2021-01-14 Youenn Fablet <youenn@apple.com> 2 21 -
trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
r271440 r271488 106 106 allCaptureTracks().remove(this); 107 107 108 if (m_private->type() == RealtimeMediaSource::Type::Audio) 109 PlatformMediaSessionManager::sharedManager().removeAudioCaptureSource(*this); 108 ASSERT(m_private->type() != RealtimeMediaSource::Type::Audio || !PlatformMediaSessionManager::sharedManager().hasAudioCaptureSource(*this)); 110 109 } 111 110 … … 539 538 void MediaStreamTrack::trackEnded(MediaStreamTrackPrivate&) 540 539 { 540 if (m_isCaptureTrack && m_private->type() == RealtimeMediaSource::Type::Audio) 541 PlatformMediaSessionManager::sharedManager().removeAudioCaptureSource(*this); 542 541 543 // http://w3c.github.io/mediacapture-main/#life-cycle 542 544 // When a MediaStreamTrack track ends for any reason other than the stop() method being invoked, the User Agent must queue a task that runs the following steps: -
trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h
r271214 r271488 147 147 WEBCORE_EXPORT void addAudioCaptureSource(PlatformMediaSession::AudioCaptureSource&); 148 148 WEBCORE_EXPORT void removeAudioCaptureSource(PlatformMediaSession::AudioCaptureSource&); 149 bool hasAudioCaptureSource(PlatformMediaSession::AudioCaptureSource& source) const { return m_audioCaptureSources.contains(source); } 149 150 150 151 WEBCORE_EXPORT void processDidReceiveRemoteControlCommand(PlatformMediaSession::RemoteControlCommandType, const PlatformMediaSession::RemoteCommandArgument*);
Note:
See TracChangeset
for help on using the changeset viewer.