| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
| 9 #include "base/sync_socket.h" | 9 #include "base/sync_socket.h" |
| 10 #include "content/browser/media/capture/audio_mirroring_manager.h" | 10 #include "content/browser/media/capture/audio_mirroring_manager.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 | 36 |
| 37 namespace content { | 37 namespace content { |
| 38 | 38 |
| 39 class MockAudioMirroringManager : public AudioMirroringManager { | 39 class MockAudioMirroringManager : public AudioMirroringManager { |
| 40 public: | 40 public: |
| 41 MockAudioMirroringManager() {} | 41 MockAudioMirroringManager() {} |
| 42 virtual ~MockAudioMirroringManager() {} | 42 virtual ~MockAudioMirroringManager() {} |
| 43 | 43 |
| 44 MOCK_METHOD3(AddDiverter, | 44 MOCK_METHOD3(AddDiverter, |
| 45 void(int render_process_id, | 45 void(int render_process_id, |
| 46 int render_view_id, | 46 int render_frame_id, |
| 47 Diverter* diverter)); | 47 Diverter* diverter)); |
| 48 MOCK_METHOD3(RemoveDiverter, | 48 MOCK_METHOD1(RemoveDiverter, void(Diverter* diverter)); |
| 49 void(int render_process_id, | |
| 50 int render_view_id, | |
| 51 Diverter* diverter)); | |
| 52 | 49 |
| 53 private: | 50 private: |
| 54 DISALLOW_COPY_AND_ASSIGN(MockAudioMirroringManager); | 51 DISALLOW_COPY_AND_ASSIGN(MockAudioMirroringManager); |
| 55 }; | 52 }; |
| 56 | 53 |
| 57 class MockAudioRendererHost : public AudioRendererHost { | 54 class MockAudioRendererHost : public AudioRendererHost { |
| 58 public: | 55 public: |
| 59 MockAudioRendererHost(media::AudioManager* audio_manager, | 56 MockAudioRendererHost(media::AudioManager* audio_manager, |
| 60 AudioMirroringManager* mirroring_manager, | 57 AudioMirroringManager* mirroring_manager, |
| 61 MediaInternals* media_internals, | 58 MediaInternals* media_internals, |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 178 // Release the reference to the mock object. The object will be destructed | 175 // Release the reference to the mock object. The object will be destructed |
| 179 // on message_loop_. | 176 // on message_loop_. |
| 180 host_ = NULL; | 177 host_ = NULL; |
| 181 } | 178 } |
| 182 | 179 |
| 183 protected: | 180 protected: |
| 184 void Create(bool unified_stream) { | 181 void Create(bool unified_stream) { |
| 185 EXPECT_CALL(*host_.get(), OnStreamCreated(kStreamId, _)); | 182 EXPECT_CALL(*host_.get(), OnStreamCreated(kStreamId, _)); |
| 186 | 183 |
| 187 EXPECT_CALL(mirroring_manager_, | 184 EXPECT_CALL(mirroring_manager_, |
| 188 AddDiverter(kRenderProcessId, kRenderViewId, NotNull())) | 185 AddDiverter(kRenderProcessId, kRenderFrameId, NotNull())) |
| 189 .RetiresOnSaturation(); | 186 .RetiresOnSaturation(); |
| 190 | 187 |
| 191 // Send a create stream message to the audio output stream and wait until | 188 // Send a create stream message to the audio output stream and wait until |
| 192 // we receive the created message. | 189 // we receive the created message. |
| 193 int session_id; | 190 int session_id; |
| 194 media::AudioParameters params; | 191 media::AudioParameters params; |
| 195 if (unified_stream) { | 192 if (unified_stream) { |
| 196 // Use AudioInputDeviceManager::kFakeOpenSessionId as the session id to | 193 // Use AudioInputDeviceManager::kFakeOpenSessionId as the session id to |
| 197 // pass the permission check. | 194 // pass the permission check. |
| 198 session_id = AudioInputDeviceManager::kFakeOpenSessionId; | 195 session_id = AudioInputDeviceManager::kFakeOpenSessionId; |
| 199 params = media::AudioParameters( | 196 params = media::AudioParameters( |
| 200 media::AudioParameters::AUDIO_FAKE, | 197 media::AudioParameters::AUDIO_FAKE, |
| 201 media::CHANNEL_LAYOUT_STEREO, | 198 media::CHANNEL_LAYOUT_STEREO, |
| 202 media::AudioParameters::kAudioCDSampleRate, 16, | 199 media::AudioParameters::kAudioCDSampleRate, 16, |
| 203 media::AudioParameters::kAudioCDSampleRate / 10, | 200 media::AudioParameters::kAudioCDSampleRate / 10, |
| 204 media::AudioParameters::NO_EFFECTS); | 201 media::AudioParameters::NO_EFFECTS); |
| 205 } else { | 202 } else { |
| 206 session_id = 0; | 203 session_id = 0; |
| 207 params = media::AudioParameters( | 204 params = media::AudioParameters( |
| 208 media::AudioParameters::AUDIO_FAKE, | 205 media::AudioParameters::AUDIO_FAKE, |
| 209 media::CHANNEL_LAYOUT_STEREO, | 206 media::CHANNEL_LAYOUT_STEREO, |
| 210 media::AudioParameters::kAudioCDSampleRate, 16, | 207 media::AudioParameters::kAudioCDSampleRate, 16, |
| 211 media::AudioParameters::kAudioCDSampleRate / 10); | 208 media::AudioParameters::kAudioCDSampleRate / 10); |
| 212 } | 209 } |
| 213 host_->OnCreateStream(kStreamId, kRenderViewId, kRenderFrameId, session_id, | 210 host_->OnCreateStream(kStreamId, kRenderViewId, kRenderFrameId, session_id, |
| 214 params); | 211 params); |
| 215 | 212 |
| 216 // At some point in the future, a corresponding RemoveDiverter() call must | 213 // At some point in the future, a corresponding RemoveDiverter() call must |
| 217 // be made. | 214 // be made. |
| 218 EXPECT_CALL(mirroring_manager_, | 215 EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull())) |
| 219 RemoveDiverter(kRenderProcessId, kRenderViewId, NotNull())) | |
| 220 .RetiresOnSaturation(); | 216 .RetiresOnSaturation(); |
| 221 SyncWithAudioThread(); | 217 SyncWithAudioThread(); |
| 222 } | 218 } |
| 223 | 219 |
| 224 void Close() { | 220 void Close() { |
| 225 // Send a message to AudioRendererHost to tell it we want to close the | 221 // Send a message to AudioRendererHost to tell it we want to close the |
| 226 // stream. | 222 // stream. |
| 227 host_->OnCloseStream(kStreamId); | 223 host_->OnCloseStream(kStreamId); |
| 228 SyncWithAudioThread(); | 224 SyncWithAudioThread(); |
| 229 } | 225 } |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 } | 342 } |
| 347 | 343 |
| 348 TEST_F(AudioRendererHostTest, CreateUnifiedStreamAndClose) { | 344 TEST_F(AudioRendererHostTest, CreateUnifiedStreamAndClose) { |
| 349 Create(true); | 345 Create(true); |
| 350 Close(); | 346 Close(); |
| 351 } | 347 } |
| 352 | 348 |
| 353 // TODO(hclam): Add tests for data conversation in low latency mode. | 349 // TODO(hclam): Add tests for data conversation in low latency mode. |
| 354 | 350 |
| 355 } // namespace content | 351 } // namespace content |
| OLD | NEW |