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

Unified Diff: media/audio/audio_input_device_unittest.cc

Issue 2623443002: Fix getUserMedia so that failure is reported for invalid audio sources. (Closed)
Patch Set: Address comments Created 3 years, 11 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
« no previous file with comments | « media/audio/audio_input_device.cc ('k') | media/base/audio_capturer_source.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/audio_input_device_unittest.cc
diff --git a/media/audio/audio_input_device_unittest.cc b/media/audio/audio_input_device_unittest.cc
index 046d2eb888c533385ea1903e322838be96d43b48..1b27d862fadc0664799c3cd868cf1e061af381e0 100644
--- a/media/audio/audio_input_device_unittest.cc
+++ b/media/audio/audio_input_device_unittest.cc
@@ -3,16 +3,23 @@
// found in the LICENSE file.
#include "base/memory/ptr_util.h"
+#include "base/memory/shared_memory.h"
#include "base/message_loop/message_loop.h"
+#include "base/process/process_handle.h"
#include "base/run_loop.h"
#include "base/single_thread_task_runner.h"
+#include "base/sync_socket.h"
#include "media/audio/audio_input_device.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gmock_mutant.h"
#include "testing/gtest/include/gtest/gtest.h"
+using base::CancelableSyncSocket;
+using base::SharedMemory;
+using base::SyncSocket;
using testing::_;
using testing::DoAll;
+using testing::Invoke;
namespace media {
@@ -39,6 +46,7 @@ class MockCaptureCallback : public AudioCapturerSource::CaptureCallback {
MockCaptureCallback() {}
~MockCaptureCallback() override {}
+ MOCK_METHOD0(OnCaptureStarted, void());
MOCK_METHOD4(Capture,
void(const AudioBus* audio_source,
int audio_delay_milliseconds,
@@ -88,4 +96,49 @@ TEST(AudioInputDeviceTest, FailToCreateStream) {
base::RunLoop().Run();
}
+ACTION_P5(ReportOnStreamCreated, device, handle, socket, length, segments) {
+ static_cast<AudioInputIPCDelegate*>(device)->OnStreamCreated(
+ handle, socket, length, segments);
+}
+
+TEST(AudioInputDeviceTest, CreateStream) {
+ AudioParameters params(AudioParameters::AUDIO_PCM_LOW_LATENCY,
+ CHANNEL_LAYOUT_STEREO, 48000, 16, 480);
+ SharedMemory shared_memory;
+ CancelableSyncSocket browser_socket;
+ CancelableSyncSocket renderer_socket;
+
+ const int memory_size = sizeof(AudioInputBufferParameters) +
+ AudioBus::CalculateMemorySize(params);
+
+ ASSERT_TRUE(shared_memory.CreateAndMapAnonymous(memory_size));
+ memset(shared_memory.memory(), 0xff, memory_size);
+
+ ASSERT_TRUE(
+ CancelableSyncSocket::CreatePair(&browser_socket, &renderer_socket));
+ SyncSocket::TransitDescriptor audio_device_socket_descriptor;
+ ASSERT_TRUE(renderer_socket.PrepareTransitDescriptor(
+ base::GetCurrentProcessHandle(), &audio_device_socket_descriptor));
+ base::SharedMemoryHandle duplicated_memory_handle;
+ ASSERT_TRUE(shared_memory.ShareToProcess(base::GetCurrentProcessHandle(),
+ &duplicated_memory_handle));
+
+ base::MessageLoopForIO io_loop;
+ MockCaptureCallback callback;
+ MockAudioInputIPC* input_ipc = new MockAudioInputIPC();
+ scoped_refptr<AudioInputDevice> device(
+ new AudioInputDevice(base::WrapUnique(input_ipc), io_loop.task_runner()));
+ device->Initialize(params, &callback, 1);
+ device->Start();
+
+ EXPECT_CALL(*input_ipc, CreateStream(_, _, _, _, _))
+ .WillOnce(ReportOnStreamCreated(
+ device.get(), duplicated_memory_handle,
+ SyncSocket::UnwrapHandle(audio_device_socket_descriptor), memory_size,
+ 1));
+ EXPECT_CALL(*input_ipc, RecordStream());
+ EXPECT_CALL(callback, OnCaptureStarted())
+ .WillOnce(QuitLoop(io_loop.task_runner()));
+ base::RunLoop().Run();
+}
} // namespace media.
« no previous file with comments | « media/audio/audio_input_device.cc ('k') | media/base/audio_capturer_source.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698