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

Side by Side Diff: content/renderer/media/webrtc_audio_renderer_unittest.cc

Issue 1323403005: Allow AudioOutputDevice objects to be initialized with a specific hardware output device and store … (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Palmer's comments Created 5 years, 3 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/single_thread_task_runner.h" 8 #include "base/single_thread_task_runner.h"
9 #include "content/public/renderer/media_stream_audio_renderer.h" 9 #include "content/public/renderer/media_stream_audio_renderer.h"
10 #include "content/renderer/media/audio_device_factory.h" 10 #include "content/renderer/media/audio_device_factory.h"
11 #include "content/renderer/media/audio_message_filter.h" 11 #include "content/renderer/media/audio_message_filter.h"
12 #include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory. h" 12 #include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory. h"
13 #include "content/renderer/media/webrtc_audio_device_impl.h" 13 #include "content/renderer/media/webrtc_audio_device_impl.h"
14 #include "content/renderer/media/webrtc_audio_renderer.h" 14 #include "content/renderer/media/webrtc_audio_renderer.h"
15 #include "media/audio/audio_output_device.h" 15 #include "media/audio/audio_output_device.h"
16 #include "media/audio/audio_output_ipc.h" 16 #include "media/audio/audio_output_ipc.h"
17 #include "media/base/audio_bus.h" 17 #include "media/base/audio_bus.h"
18 #include "media/base/mock_audio_renderer_sink.h" 18 #include "media/base/mock_audio_renderer_sink.h"
19 #include "testing/gmock/include/gmock/gmock.h" 19 #include "testing/gmock/include/gmock/gmock.h"
20 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
21 #include "third_party/libjingle/source/talk/app/webrtc/mediastreaminterface.h" 21 #include "third_party/libjingle/source/talk/app/webrtc/mediastreaminterface.h"
22 22
23 using testing::Return; 23 using testing::Return;
24 using testing::_;
24 25
25 namespace content { 26 namespace content {
26 27
27 namespace { 28 namespace {
28 29
29 const int kHardwareSampleRate = 44100; 30 const int kHardwareSampleRate = 44100;
30 const int kHardwareBufferSize = 512; 31 const int kHardwareBufferSize = 512;
31 32
32 class MockAudioOutputIPC : public media::AudioOutputIPC { 33 class MockAudioOutputIPC : public media::AudioOutputIPC {
33 public: 34 public:
34 MockAudioOutputIPC() {} 35 MockAudioOutputIPC() {}
35 virtual ~MockAudioOutputIPC() {} 36 virtual ~MockAudioOutputIPC() {}
36 37
37 MOCK_METHOD3(CreateStream, void(media::AudioOutputIPCDelegate* delegate, 38 MOCK_METHOD4(RequestDeviceAuthorization,
38 const media::AudioParameters& params, 39 void(media::AudioOutputIPCDelegate* delegate,
39 int session_id)); 40 int session_id,
41 const std::string& device_id,
42 const url::Origin& security_origin));
43 MOCK_METHOD2(CreateStream,
44 void(media::AudioOutputIPCDelegate* delegate,
45 const media::AudioParameters& params));
40 MOCK_METHOD0(PlayStream, void()); 46 MOCK_METHOD0(PlayStream, void());
41 MOCK_METHOD0(PauseStream, void()); 47 MOCK_METHOD0(PauseStream, void());
42 MOCK_METHOD0(CloseStream, void()); 48 MOCK_METHOD0(CloseStream, void());
43 MOCK_METHOD1(SetVolume, void(double volume)); 49 MOCK_METHOD1(SetVolume, void(double volume));
44 MOCK_METHOD3(SwitchOutputDevice, 50 MOCK_METHOD2(SwitchOutputDevice,
45 void(const std::string& device_id, 51 void(const std::string& device_id,
46 const GURL& security_origin, 52 const url::Origin& security_origin));
47 int request_id));
48 }; 53 };
49 54
50 class FakeAudioOutputDevice 55 class FakeAudioOutputDevice
51 : NON_EXPORTED_BASE(public media::AudioOutputDevice) { 56 : NON_EXPORTED_BASE(public media::AudioOutputDevice) {
52 public: 57 public:
53 FakeAudioOutputDevice( 58 FakeAudioOutputDevice(
54 scoped_ptr<media::AudioOutputIPC> ipc, 59 scoped_ptr<media::AudioOutputIPC> ipc,
55 const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner) 60 const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner)
56 : AudioOutputDevice(ipc.Pass(), 61 : AudioOutputDevice(ipc.Pass(),
57 io_task_runner) {} 62 io_task_runner,
63 0,
64 std::string(),
65 url::Origin()) {}
58 MOCK_METHOD0(Start, void()); 66 MOCK_METHOD0(Start, void());
59 MOCK_METHOD0(Stop, void()); 67 MOCK_METHOD0(Stop, void());
60 MOCK_METHOD0(Pause, void()); 68 MOCK_METHOD0(Pause, void());
61 MOCK_METHOD0(Play, void()); 69 MOCK_METHOD0(Play, void());
62 MOCK_METHOD1(SetVolume, bool(double volume)); 70 MOCK_METHOD1(SetVolume, bool(double volume));
63 MOCK_METHOD0(GetOutputDevice, media::OutputDevice*()); 71 MOCK_METHOD0(GetOutputDevice, media::OutputDevice*());
64 72
65 protected: 73 protected:
66 virtual ~FakeAudioOutputDevice() {} 74 virtual ~FakeAudioOutputDevice() {}
67 }; 75 };
68 76
69 class MockAudioDeviceFactory : public AudioDeviceFactory { 77 class MockAudioDeviceFactory : public AudioDeviceFactory {
70 public: 78 public:
71 MockAudioDeviceFactory() {} 79 MockAudioDeviceFactory() {}
72 virtual ~MockAudioDeviceFactory() {} 80 virtual ~MockAudioDeviceFactory() {}
73 MOCK_METHOD1(CreateOutputDevice, media::AudioOutputDevice*(int)); 81 MOCK_METHOD4(CreateOutputDevice,
82 media::AudioOutputDevice*(int,
83 int,
84 const std::string&,
85 const url::Origin&));
74 MOCK_METHOD1(CreateInputDevice, media::AudioInputDevice*(int)); 86 MOCK_METHOD1(CreateInputDevice, media::AudioInputDevice*(int));
75 }; 87 };
76 88
77 class MockAudioRendererSource : public WebRtcAudioRendererSource { 89 class MockAudioRendererSource : public WebRtcAudioRendererSource {
78 public: 90 public:
79 MockAudioRendererSource() {} 91 MockAudioRendererSource() {}
80 virtual ~MockAudioRendererSource() {} 92 virtual ~MockAudioRendererSource() {}
81 MOCK_METHOD4(RenderData, void(media::AudioBus* audio_bus, 93 MOCK_METHOD4(RenderData, void(media::AudioBus* audio_bus,
82 int sample_rate, 94 int sample_rate,
83 int audio_delay_milliseconds, 95 int audio_delay_milliseconds,
(...skipping 13 matching lines...) Expand all
97 message_loop_->task_runner())), 109 message_loop_->task_runner())),
98 factory_(new MockAudioDeviceFactory()), 110 factory_(new MockAudioDeviceFactory()),
99 source_(new MockAudioRendererSource()), 111 source_(new MockAudioRendererSource()),
100 stream_(new rtc::RefCountedObject<MockMediaStream>("label")), 112 stream_(new rtc::RefCountedObject<MockMediaStream>("label")),
101 renderer_(new WebRtcAudioRenderer(message_loop_->task_runner(), 113 renderer_(new WebRtcAudioRenderer(message_loop_->task_runner(),
102 stream_, 114 stream_,
103 1, 115 1,
104 1, 116 1,
105 44100, 117 44100,
106 kHardwareBufferSize)) { 118 kHardwareBufferSize)) {
107 EXPECT_CALL(*factory_.get(), CreateOutputDevice(1)) 119 EXPECT_CALL(*factory_.get(), CreateOutputDevice(1, _, _, _))
108 .WillOnce(Return(mock_output_device_.get())); 120 .WillOnce(Return(mock_output_device_.get()));
109 EXPECT_CALL(*mock_output_device_.get(), Start()); 121 EXPECT_CALL(*mock_output_device_.get(), Start());
110 EXPECT_TRUE(renderer_->Initialize(source_.get())); 122 EXPECT_TRUE(renderer_->Initialize(source_.get()));
111 renderer_proxy_ = renderer_->CreateSharedAudioRendererProxy(stream_); 123 renderer_proxy_ = renderer_->CreateSharedAudioRendererProxy(stream_);
112 } 124 }
113 125
114 // Used to construct |mock_output_device_|. 126 // Used to construct |mock_output_device_|.
115 scoped_ptr<base::MessageLoopForIO> message_loop_; 127 scoped_ptr<base::MessageLoopForIO> message_loop_;
116 MockAudioOutputIPC* mock_ipc_; // Owned by AudioOuputDevice. 128 MockAudioOutputIPC* mock_ipc_; // Owned by AudioOuputDevice.
117 129
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 EXPECT_EQ(kExpectedBufferSize, renderer_->frames_per_buffer()); 193 EXPECT_EQ(kExpectedBufferSize, renderer_->frames_per_buffer());
182 EXPECT_EQ(kHardwareSampleRate, renderer_->sample_rate()); 194 EXPECT_EQ(kHardwareSampleRate, renderer_->sample_rate());
183 EXPECT_EQ(2, renderer_->channels()); 195 EXPECT_EQ(2, renderer_->channels());
184 196
185 EXPECT_CALL(*mock_output_device_.get(), Stop()); 197 EXPECT_CALL(*mock_output_device_.get(), Stop());
186 EXPECT_CALL(*source_.get(), RemoveAudioRenderer(renderer_.get())); 198 EXPECT_CALL(*source_.get(), RemoveAudioRenderer(renderer_.get()));
187 renderer_proxy_->Stop(); 199 renderer_proxy_->Stop();
188 } 200 }
189 201
190 } // namespace content 202 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698