Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2011)

Unified Diff: extensions/browser/api/audio/audio_apitest.cc

Issue 945103002: Add a new audio extension event OnLevelChanged. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: extensions/browser/api/audio/audio_apitest.cc
diff --git a/extensions/browser/api/audio/audio_apitest.cc b/extensions/browser/api/audio/audio_apitest.cc
index 7194802a73d2317c6bf8bdfdf1ed55df57da5e13..2e22b4571e1e9c7625a2113e16580761b1279732 100644
--- a/extensions/browser/api/audio/audio_apitest.cc
+++ b/extensions/browser/api/audio/audio_apitest.cc
@@ -2,16 +2,139 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/message_loop/message_loop.h"
#include "extensions/shell/test/shell_apitest.h"
+#if defined(OS_CHROMEOS)
+#include "chromeos/audio/audio_devices_pref_handler_stub.h"
+#include "chromeos/audio/cras_audio_handler.h"
+#include "chromeos/dbus/dbus_thread_manager.h"
+#include "chromeos/dbus/fake_cras_audio_client.h"
+#endif
+#include "extensions/test/extension_test_message_listener.h"
namespace extensions {
-using AudioApiTest = ShellApiTest;
-
#if defined(OS_CHROMEOS)
+using chromeos::AudioDevice;
+using chromeos::AudioDeviceList;
+using chromeos::AudioNode;
+using chromeos::AudioNodeList;
+
+const uint64 kJabraSpeaker1Id = 30001;
+const uint64 kJabraSpeaker2Id = 30002;
+const uint64 kHDMIOutputId = 30003;
+const uint64 kJabraMic1Id = 40001;
+const uint64 kJabraMic2Id = 40002;
+const uint64 kWebcamMicId = 40003;
+
+const AudioNode kJabraSpeaker1(false,
+ kJabraSpeaker1Id,
+ "Jabra Speaker",
+ "USB",
+ "Jabra Speaker 1",
+ false,
+ 0);
+
+const AudioNode kJabraSpeaker2(false,
+ kJabraSpeaker2Id,
+ "Jabra Speaker",
+ "USB",
+ "Jabra Speaker 2",
+ false,
+ 0);
+
+const AudioNode kHDMIOutput(false,
+ kHDMIOutputId,
+ "HDMI output",
+ "HDMI",
+ "HDA Intel MID",
+ false,
+ 0);
+
+const AudioNode
+ kJabraMic1(true, kJabraMic1Id, "Jabra Mic", "USB", "Jabra Mic 1", false, 0);
+
+const AudioNode
+ kJabraMic2(true, kJabraMic2Id, "Jabra Mic", "USB", "Jabra Mic 2", false, 0);
+
+const AudioNode kUSBCameraMic(true,
+ kWebcamMicId,
+ "Webcam Mic",
+ "USB",
+ "Logitech Webcam",
+ false,
+ 0);
+
+class AudioApiTest : public ShellApiTest {
+ public:
+ AudioApiTest() : cras_audio_handler_(NULL) {}
+ ~AudioApiTest() override {}
+
+ void SetUpCrasAudioHandlerWithTestingNodes(const AudioNodeList& audio_nodes) {
+ chromeos::DBusThreadManager* dbus_manager =
+ chromeos::DBusThreadManager::Get();
+ DCHECK(dbus_manager);
+ chromeos::FakeCrasAudioClient* fake_cras_audio_client =
+ static_cast<chromeos::FakeCrasAudioClient*>(
+ dbus_manager->GetCrasAudioClient());
+ fake_cras_audio_client->SetAudioNodesAndNotifyObserversForTesting(
+ audio_nodes);
+ cras_audio_handler_ = chromeos::CrasAudioHandler::Get();
+ DCHECK(cras_audio_handler_);
+ message_loop_.RunUntilIdle();
+ }
+
+ protected:
+ base::MessageLoopForUI message_loop_;
+ chromeos::CrasAudioHandler* cras_audio_handler_; // Not owned.
+};
+
IN_PROC_BROWSER_TEST_F(AudioApiTest, Audio) {
+ // Set up the audio nodes for testing.
+ AudioNodeList audio_nodes;
+ audio_nodes.push_back(kJabraSpeaker1);
+ audio_nodes.push_back(kJabraSpeaker2);
+ audio_nodes.push_back(kHDMIOutput);
+ audio_nodes.push_back(kJabraMic1);
+ audio_nodes.push_back(kJabraMic2);
+ audio_nodes.push_back(kUSBCameraMic);
+ SetUpCrasAudioHandlerWithTestingNodes(audio_nodes);
+
EXPECT_TRUE(RunAppTest("api_test/audio")) << message_;
}
-#endif
+
+IN_PROC_BROWSER_TEST_F(AudioApiTest, OnOutputNodeVolumeChanged) {
+ AudioNodeList audio_nodes;
+ audio_nodes.push_back(kJabraSpeaker1);
+ audio_nodes.push_back(kHDMIOutput);
+ SetUpCrasAudioHandlerWithTestingNodes(audio_nodes);
+
+ // Verify the jabra speaker is the active output device.
+ AudioDevice device;
+ EXPECT_TRUE(cras_audio_handler_->GetPrimaryActiveOutputDevice(&device));
+ EXPECT_EQ(device.id, kJabraSpeaker1.id);
+
+ // Loads background app.
+ ExtensionTestMessageListener load_listener("loaded", false);
+ ExtensionTestMessageListener result_listener("success", false);
+ result_listener.set_failure_message("failure");
+ ASSERT_TRUE(LoadApp("api_test/audio/volume_change"));
+ ASSERT_TRUE(load_listener.WaitUntilSatisfied());
+
+ // Change output device volume.
+ const int kVolume = 60;
+ cras_audio_handler_->SetOutputVolumePercent(kVolume);
+
+ // Verify the output volume is changed to the designated value.
+ EXPECT_EQ(kVolume, cras_audio_handler_->GetOutputVolumePercent());
+ EXPECT_EQ(kVolume,
+ cras_audio_handler_->GetOutputVolumePercentForDevice(device.id));
+
+ // Verify the background app got the OnOutputNodeVolumeChanged event
+ // with the expected node id and volume value.
+ ASSERT_TRUE(result_listener.WaitUntilSatisfied());
+ EXPECT_EQ("success", result_listener.message());
+}
+#endif // OS_CHROMEOS
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698