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

Unified Diff: media/audio/virtual_audio_input_stream_unittest.cc

Issue 11298006: Browser-wide audio mirroring for TabCapture API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review comments, some unit tests, move attach/detach into virtual audio output stream Created 8 years, 1 month 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: media/audio/virtual_audio_input_stream_unittest.cc
diff --git a/media/audio/virtual_audio_input_stream_unittest.cc b/media/audio/virtual_audio_input_stream_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..00868f78a58660fc0cce7d5f019f14d92be438ed
--- /dev/null
+++ b/media/audio/virtual_audio_input_stream_unittest.cc
@@ -0,0 +1,85 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/message_loop.h"
+#include "base/synchronization/waitable_event.h"
+#include "media/audio/audio_manager.h"
+#include "media/audio/simple_sources.h"
+#include "media/audio/virtual_audio_input_stream.h"
+#include "media/audio/virtual_audio_output_stream.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace media {
+
+// TODO(justinlin): Make these better..
Alpha Left Google 2012/11/28 01:04:47 What does it mean by better? Need to document more
justinlin 2012/11/28 14:30:31 Was left as a TODO because this wasn't quite ready
+class VirtualAudioInputStreamTest : public testing::Test {
+ public:
+ VirtualAudioInputStreamTest()
+ : audio_manager_(AudioManager::Create()),
+ params_(
+ AudioParameters::AUDIO_MIRROR_BROWSER,
+ CHANNEL_LAYOUT_MONO, 8000, 8, 128),
+ output_params_(AudioParameters::AUDIO_PCM_LINEAR,
+ CHANNEL_LAYOUT_MONO, 8000, 8, 128),
+ done_(false, false),
+ output_stream_(NULL),
+ source_(params_.channels(), 200.0, params_.sample_rate()) {
+ }
+
+ void AddStreamOnAudioThread() {
+ ASSERT_TRUE(audio_manager_->GetMessageLoop()->BelongsToCurrentThread());
+
+ output_stream_ = audio_manager_->MakeAudioOutputStream(output_params_);
+ output_stream_->Open();
+
+ EXPECT_EQ(1u, static_cast<VirtualAudioInputStream*>(stream_)->
+ converters_.size());
+
+ output_stream_->Start(&source_);
+ audio_manager_->GetMessageLoop()->PostTask(FROM_HERE, base::Bind(
+ &VirtualAudioInputStreamTest::EndTest, base::Unretained(this), 1));
+ }
+
+ void EndTest(int callbacks) {
+ if (output_stream_) {
+ output_stream_->Stop();
+ output_stream_->Close();
+ }
+
+ stream_->Stop();
+ stream_->Close();
+
+ EXPECT_EQ(callbacks, source_.callbacks());
+ EXPECT_EQ(0, source_.errors());
+
+ done_.Signal();
+ }
+
+ protected:
+ scoped_ptr<AudioManager> audio_manager_;
+ AudioParameters params_;
+ AudioParameters output_params_;
+ VirtualAudioInputStream* stream_;
+ base::WaitableEvent done_;
+ std::vector<AudioOutputStream*> output_streams_;
+ AudioOutputStream* output_stream_;
+ SineWaveAudioSource source_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(VirtualAudioInputStreamTest);
+};
+
+TEST_F(VirtualAudioInputStreamTest, AttachAndReadVirtualAudioOutputStream) {
+ stream_ = static_cast<VirtualAudioInputStream*>(
+ audio_manager_->MakeAudioInputStream(params_, "1"));
+ DCHECK(stream_);
+
+ audio_manager_->GetMessageLoop()->PostTask(FROM_HERE, base::Bind(
+ &VirtualAudioInputStreamTest::AddStreamOnAudioThread,
+ base::Unretained(this)));
+
+ done_.Wait();
+}
+
+} // namespace media

Powered by Google App Engine
This is Rietveld 408576698