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

Side by Side Diff: media/audio/audio_input_device_unittest.cc

Issue 2626533002: Revert of Fix getUserMedia so that failure is reported for invalid audio sources. (Closed)
Patch Set: 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 unified diff | 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2017 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/memory/ptr_util.h" 5 #include "base/memory/ptr_util.h"
6 #include "base/memory/shared_memory.h"
7 #include "base/message_loop/message_loop.h" 6 #include "base/message_loop/message_loop.h"
8 #include "base/process/process_handle.h"
9 #include "base/run_loop.h" 7 #include "base/run_loop.h"
10 #include "base/single_thread_task_runner.h" 8 #include "base/single_thread_task_runner.h"
11 #include "base/sync_socket.h"
12 #include "media/audio/audio_input_device.h" 9 #include "media/audio/audio_input_device.h"
13 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gmock_mutant.h" 11 #include "testing/gmock_mutant.h"
15 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
16 13
17 using base::CancelableSyncSocket;
18 using base::SharedMemory;
19 using base::SyncSocket;
20 using testing::_; 14 using testing::_;
21 using testing::DoAll; 15 using testing::DoAll;
22 using testing::Invoke;
23 16
24 namespace media { 17 namespace media {
25 18
26 namespace { 19 namespace {
27 20
28 class MockAudioInputIPC : public AudioInputIPC { 21 class MockAudioInputIPC : public AudioInputIPC {
29 public: 22 public:
30 MockAudioInputIPC() {} 23 MockAudioInputIPC() {}
31 ~MockAudioInputIPC() override {} 24 ~MockAudioInputIPC() override {}
32 25
33 MOCK_METHOD5(CreateStream, 26 MOCK_METHOD5(CreateStream,
34 void(AudioInputIPCDelegate* delegate, 27 void(AudioInputIPCDelegate* delegate,
35 int session_id, 28 int session_id,
36 const AudioParameters& params, 29 const AudioParameters& params,
37 bool automatic_gain_control, 30 bool automatic_gain_control,
38 uint32_t total_segments)); 31 uint32_t total_segments));
39 MOCK_METHOD0(RecordStream, void()); 32 MOCK_METHOD0(RecordStream, void());
40 MOCK_METHOD1(SetVolume, void(double volume)); 33 MOCK_METHOD1(SetVolume, void(double volume));
41 MOCK_METHOD0(CloseStream, void()); 34 MOCK_METHOD0(CloseStream, void());
42 }; 35 };
43 36
44 class MockCaptureCallback : public AudioCapturerSource::CaptureCallback { 37 class MockCaptureCallback : public AudioCapturerSource::CaptureCallback {
45 public: 38 public:
46 MockCaptureCallback() {} 39 MockCaptureCallback() {}
47 ~MockCaptureCallback() override {} 40 ~MockCaptureCallback() override {}
48 41
49 MOCK_METHOD0(OnCaptureStarted, void());
50 MOCK_METHOD4(Capture, 42 MOCK_METHOD4(Capture,
51 void(const AudioBus* audio_source, 43 void(const AudioBus* audio_source,
52 int audio_delay_milliseconds, 44 int audio_delay_milliseconds,
53 double volume, 45 double volume,
54 bool key_pressed)); 46 bool key_pressed));
55 47
56 MOCK_METHOD1(OnCaptureError, void(const std::string& message)); 48 MOCK_METHOD1(OnCaptureError, void(const std::string& message));
57 }; 49 };
58 50
59 // Used to terminate a loop from a different thread than the loop belongs to. 51 // Used to terminate a loop from a different thread than the loop belongs to.
(...skipping 29 matching lines...) Expand all
89 device->Initialize(params, &callback, 1); 81 device->Initialize(params, &callback, 1);
90 device->Start(); 82 device->Start();
91 EXPECT_CALL(*input_ipc, CreateStream(_, _, _, _, _)) 83 EXPECT_CALL(*input_ipc, CreateStream(_, _, _, _, _))
92 .WillOnce(ReportStateChange(device.get(), 84 .WillOnce(ReportStateChange(device.get(),
93 AUDIO_INPUT_IPC_DELEGATE_STATE_ERROR)); 85 AUDIO_INPUT_IPC_DELEGATE_STATE_ERROR));
94 EXPECT_CALL(callback, OnCaptureError(_)) 86 EXPECT_CALL(callback, OnCaptureError(_))
95 .WillOnce(QuitLoop(io_loop.task_runner())); 87 .WillOnce(QuitLoop(io_loop.task_runner()));
96 base::RunLoop().Run(); 88 base::RunLoop().Run();
97 } 89 }
98 90
99 ACTION_P5(ReportOnStreamCreated, device, handle, socket, length, segments) {
100 static_cast<AudioInputIPCDelegate*>(device)->OnStreamCreated(
101 handle, socket, length, segments);
102 }
103
104 TEST(AudioInputDeviceTest, CreateStream) {
105 AudioParameters params(AudioParameters::AUDIO_PCM_LOW_LATENCY,
106 CHANNEL_LAYOUT_STEREO, 48000, 16, 480);
107 SharedMemory shared_memory;
108 CancelableSyncSocket browser_socket;
109 CancelableSyncSocket renderer_socket;
110
111 const int memory_size = sizeof(AudioInputBufferParameters) +
112 AudioBus::CalculateMemorySize(params);
113
114 ASSERT_TRUE(shared_memory.CreateAndMapAnonymous(memory_size));
115 memset(shared_memory.memory(), 0xff, memory_size);
116
117 ASSERT_TRUE(
118 CancelableSyncSocket::CreatePair(&browser_socket, &renderer_socket));
119 SyncSocket::TransitDescriptor audio_device_socket_descriptor;
120 ASSERT_TRUE(renderer_socket.PrepareTransitDescriptor(
121 base::GetCurrentProcessHandle(), &audio_device_socket_descriptor));
122 base::SharedMemoryHandle duplicated_memory_handle;
123 ASSERT_TRUE(shared_memory.ShareToProcess(base::GetCurrentProcessHandle(),
124 &duplicated_memory_handle));
125
126 base::MessageLoopForIO io_loop;
127 MockCaptureCallback callback;
128 MockAudioInputIPC* input_ipc = new MockAudioInputIPC();
129 scoped_refptr<AudioInputDevice> device(
130 new AudioInputDevice(base::WrapUnique(input_ipc), io_loop.task_runner()));
131 device->Initialize(params, &callback, 1);
132 device->Start();
133
134 EXPECT_CALL(*input_ipc, CreateStream(_, _, _, _, _))
135 .WillOnce(ReportOnStreamCreated(
136 device.get(), duplicated_memory_handle,
137 SyncSocket::UnwrapHandle(audio_device_socket_descriptor), memory_size,
138 1));
139 EXPECT_CALL(*input_ipc, RecordStream());
140 EXPECT_CALL(callback, OnCaptureStarted())
141 .WillOnce(QuitLoop(io_loop.task_runner()));
142 base::RunLoop().Run();
143 }
144 } // namespace media. 91 } // namespace media.
OLDNEW
« 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