Updated comments for unit tests to validate iOS audio session isInterrupted flag does not get reset correctly.
BUG=webrtc:7605 Review-Url: https://codereview.webrtc.org/2886183002 Cr-Commit-Position: refs/heads/master@{#18188}
This commit is contained in:
@ -825,6 +825,24 @@ TEST_F(AudioDeviceTest, DISABLED_MeasureLoopbackLatency) {
|
||||
latency_audio_stream->PrintResults();
|
||||
}
|
||||
|
||||
// Verifies that the AudioDeviceIOS is_interrupted_ flag is reset correctly
|
||||
// after an iOS AVAudioSessionInterruptionTypeEnded notification event.
|
||||
// AudioDeviceIOS listens to RTCAudioSession interrupted notifications by:
|
||||
// - In AudioDeviceIOS.InitPlayOrRecord registers its audio_session_observer_
|
||||
// callback with RTCAudioSession's delegate list.
|
||||
// - When RTCAudioSession receives an iOS audio interrupted notification, it
|
||||
// passes the notification to callbacks in its delegate list which sets
|
||||
// AudioDeviceIOS's is_interrupted_ flag to true.
|
||||
// - When AudioDeviceIOS.ShutdownPlayOrRecord is called, its
|
||||
// audio_session_observer_ callback is removed from RTCAudioSessions's
|
||||
// delegate list.
|
||||
// So if RTCAudioSession receives an iOS end audio interruption notification,
|
||||
// AudioDeviceIOS is not notified as its callback is not in RTCAudioSession's
|
||||
// delegate list. This causes AudioDeviceIOS's is_interrupted_ flag to be in
|
||||
// the wrong (true) state and the audio session will ignore audio changes.
|
||||
// As RTCAudioSession keeps its own interrupted state, the fix is to initialize
|
||||
// AudioDeviceIOS's is_interrupted_ flag to RTCAudioSession's isInterrupted
|
||||
// flag in AudioDeviceIOS.InitPlayOrRecord.
|
||||
TEST_F(AudioDeviceTest, testInterruptedAudioSession) {
|
||||
RTCAudioSession *session = [RTCAudioSession sharedInstance];
|
||||
std::unique_ptr<webrtc::AudioDeviceIOS> audio_device;
|
||||
|
||||
Reference in New Issue
Block a user