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:
jtteh
2017-05-17 12:37:17 -07:00
committed by Commit bot
parent 8c96a148a8
commit 855aeead57

View File

@ -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;