Index: chromeos/audio/cras_audio_handler_unittest.cc |
diff --git a/chromeos/audio/cras_audio_handler_unittest.cc b/chromeos/audio/cras_audio_handler_unittest.cc |
index 7ec72df18fa4354b38413884f88c771a07f803f1..e458c931c55055ec8a0259b2bdeb6005371c0397 100644 |
--- a/chromeos/audio/cras_audio_handler_unittest.cc |
+++ b/chromeos/audio/cras_audio_handler_unittest.cc |
@@ -421,6 +421,11 @@ class CrasAudioHandlerTest : public testing::Test { |
return cras_audio_handler_->hdmi_rediscovering(); |
} |
+ void AudioClientRestarted(const AudioNodeList& audio_nodes) { |
Daniel Erat
2016/08/04 00:58:19
nit: rename to RestartAudioClient()?
Qiang(Joe) Xu
2016/08/04 04:02:15
Done.
|
+ fake_cras_audio_client_->NotifyAudioClientRestartedForTesting(audio_nodes); |
+ message_loop_.RunUntilIdle(); |
+ } |
+ |
protected: |
base::MessageLoopForUI message_loop_; |
CrasAudioHandler* cras_audio_handler_; // Not owned. |
@@ -1972,12 +1977,12 @@ TEST_F(CrasAudioHandlerTest, SetOutputVolumePercent) { |
SetUpCrasAudioHandler(audio_nodes); |
EXPECT_EQ(0, test_observer_->output_volume_changed_count()); |
- cras_audio_handler_->SetOutputVolumePercent(60); |
+ const int kVolume = 60; |
+ cras_audio_handler_->SetOutputVolumePercent(kVolume); |
// Verify the output volume is changed to the designated value, |
// OnOutputNodeVolumeChanged event is fired, and the device volume value |
- // is saved the preferences. |
- const int kVolume = 60; |
+ // is saved in the preferences. |
EXPECT_EQ(kVolume, cras_audio_handler_->GetOutputVolumePercent()); |
EXPECT_EQ(1, test_observer_->output_volume_changed_count()); |
AudioDevice device; |
@@ -1986,6 +1991,60 @@ TEST_F(CrasAudioHandlerTest, SetOutputVolumePercent) { |
EXPECT_EQ(kVolume, audio_pref_handler_->GetOutputVolumeValue(&device)); |
} |
+TEST_F(CrasAudioHandlerTest, SetOutputVolumePercentWithoutNotifyingObservers) { |
+ AudioNodeList audio_nodes; |
+ audio_nodes.push_back(kInternalSpeaker); |
+ SetUpCrasAudioHandler(audio_nodes); |
+ EXPECT_EQ(0, test_observer_->output_volume_changed_count()); |
+ |
+ const int kVolume1 = 60; |
+ const int kVolume2 = 80; |
+ cras_audio_handler_->SetOutputVolumePercentWithoutNotifyingObservers( |
+ kVolume1, CrasAudioHandler::VOLUME_CHANGE_MAXIMIZE_MODE_SCREENSHOT); |
+ // Verify the output volume is changed to the designated value, |
+ // OnOutputNodeVolumeChanged event is not fired, and the device volume value |
+ // is saved in the preferences. |
+ EXPECT_EQ(kVolume1, cras_audio_handler_->GetOutputVolumePercent()); |
+ EXPECT_EQ(0, test_observer_->output_volume_changed_count()); |
+ AudioDevice device; |
+ EXPECT_TRUE(cras_audio_handler_->GetPrimaryActiveOutputDevice(&device)); |
+ EXPECT_EQ(device.id, kInternalSpeaker.id); |
+ EXPECT_EQ(kVolume1, audio_pref_handler_->GetOutputVolumeValue(&device)); |
+ |
+ // Make another SetOutputVolumePercentWithoutNotifyingObservers call to make |
+ // sure everything is right. |
+ cras_audio_handler_->SetOutputVolumePercentWithoutNotifyingObservers( |
+ kVolume2, CrasAudioHandler::VOLUME_CHANGE_MAXIMIZE_MODE_SCREENSHOT); |
+ EXPECT_EQ(kVolume2, cras_audio_handler_->GetOutputVolumePercent()); |
+ EXPECT_EQ(0, test_observer_->output_volume_changed_count()); |
+ EXPECT_TRUE(cras_audio_handler_->GetPrimaryActiveOutputDevice(&device)); |
+ EXPECT_EQ(device.id, kInternalSpeaker.id); |
+ EXPECT_EQ(kVolume2, audio_pref_handler_->GetOutputVolumeValue(&device)); |
+ |
+ // Make a final SetOutputVolumePercent call to check if |
+ // SetOutputVolumePercentWithoutNotifyingObservers may block subsequent |
+ // notifying observers. |
+ cras_audio_handler_->SetOutputVolumePercent(kVolume1); |
+ EXPECT_EQ(kVolume1, cras_audio_handler_->GetOutputVolumePercent()); |
+ EXPECT_EQ(1, test_observer_->output_volume_changed_count()); |
+ EXPECT_TRUE(cras_audio_handler_->GetPrimaryActiveOutputDevice(&device)); |
+ EXPECT_EQ(device.id, kInternalSpeaker.id); |
+ EXPECT_EQ(kVolume1, audio_pref_handler_->GetOutputVolumeValue(&device)); |
+} |
+ |
+TEST_F(CrasAudioHandlerTest, InitializingAudioState) { |
+ AudioNodeList audio_nodes; |
+ audio_nodes.push_back(kInternalSpeaker); |
+ SetUpCrasAudioHandler(audio_nodes); |
+ EXPECT_EQ(0, test_observer_->output_volume_changed_count()); |
+ |
+ AudioClientRestarted(audio_nodes); |
+ // On AudioClientRestarted, InitializingAudioState will be called, we need |
+ // to make sure the OutputNodeVolumeChanged signal returned from CRAS will |
+ // not notify UI. |
Daniel Erat
2016/08/04 00:58:19
i'm confused. it doesn't look like you're calling
Qiang(Joe) Xu
2016/08/04 04:02:15
First, AudioClientRestarted is simulating (and wil
|
+ EXPECT_EQ(0, test_observer_->output_volume_changed_count()); |
+} |
+ |
TEST_F(CrasAudioHandlerTest, SetOutputVolumeWithDelayedSignal) { |
AudioNodeList audio_nodes; |
audio_nodes.push_back(kInternalSpeaker); |