| Index: webrtc/modules/audio_device/ios/audio_device_unittest_ios.mm
|
| diff --git a/webrtc/modules/audio_device/ios/audio_device_unittest_ios.mm b/webrtc/modules/audio_device/ios/audio_device_unittest_ios.mm
|
| index 82f4426482ad3f93ecdafe3600d1f3335a043d80..bff51aa96b4703a2fa319e479ccbdd09a7deb4b6 100644
|
| --- a/webrtc/modules/audio_device/ios/audio_device_unittest_ios.mm
|
| +++ b/webrtc/modules/audio_device/ios/audio_device_unittest_ios.mm
|
| @@ -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;
|
|
|