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

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

Issue 7157001: Implements AudioMessageFilter as member in RenderThread (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Added TODO() comment in failing unit test Created 9 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/process_util.h" 5 #include "base/process_util.h"
6 #include "content/common/media/audio_messages.h" 6 #include "content/common/media/audio_messages.h"
7 #include "content/renderer/media/audio_renderer_impl.h" 7 #include "content/renderer/media/audio_renderer_impl.h"
8 #include "media/base/data_buffer.h" 8 #include "media/base/data_buffer.h"
9 #include "media/base/mock_callback.h" 9 #include "media/base/mock_callback.h"
10 #include "media/base/mock_filter_host.h" 10 #include "media/base/mock_filter_host.h"
11 #include "media/base/mock_filters.h" 11 #include "media/base/mock_filters.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13
14 using ::testing::Return; 14 using ::testing::Return;
15 15
16 class AudioRendererImplTest : public ::testing::Test { 16 class AudioRendererImplTest : public ::testing::Test {
17 public: 17 public:
18 static const int kRouteId = 0;
19 static const int kSize = 1024; 18 static const int kSize = 1024;
20 19
21 AudioRendererImplTest() { 20 AudioRendererImplTest() {
22 message_loop_.reset(new MessageLoop(MessageLoop::TYPE_IO)); 21 message_loop_.reset(new MessageLoop(MessageLoop::TYPE_IO));
23 22
24 // TODO(scherkus): use gmock with AudioMessageFilter to verify
25 // AudioRendererImpl calls or doesn't call Send().
26 filter_ = new AudioMessageFilter(kRouteId);
27 filter_->message_loop_ = message_loop_.get();
28
29 // Create temporary shared memory. 23 // Create temporary shared memory.
30 CHECK(shared_mem_.CreateAnonymous(kSize)); 24 CHECK(shared_mem_.CreateAnonymous(kSize));
31 25
32 // Setup expectations for initialization. 26 // Setup expectations for initialization.
33 decoder_ = new media::MockAudioDecoder(); 27 decoder_ = new media::MockAudioDecoder();
34 28
35 ON_CALL(*decoder_, config()) 29 ON_CALL(*decoder_, config())
36 .WillByDefault(Return(media::AudioDecoderConfig(16, 30 .WillByDefault(Return(media::AudioDecoderConfig(16,
37 CHANNEL_LAYOUT_MONO, 31 CHANNEL_LAYOUT_MONO,
38 44100))); 32 44100)));
39 33
34 // TODO(henrika) - figure out a way to avoid a crash here.
35 // Construction of AudioRendererImpl only works on the main renderer thread.
scherkus (not reviewing) 2011/06/23 19:14:43 could you paste the stack trace? it's probably be
henrika_dont_use 2011/06/27 15:05:44 See separate e-mail discussion. On 2011/06/23 19:
36
40 // Create and initialize audio renderer. 37 // Create and initialize audio renderer.
41 renderer_ = new AudioRendererImpl(filter_); 38 renderer_ = new AudioRendererImpl();
42 renderer_->set_host(&host_); 39 renderer_->set_host(&host_);
43 renderer_->Initialize(decoder_, media::NewExpectedCallback()); 40 renderer_->Initialize(decoder_, media::NewExpectedCallback());
44 41
45 // Run pending tasks and simulate responding with a created audio stream. 42 // Run pending tasks and simulate responding with a created audio stream.
46 message_loop_->RunAllPending(); 43 message_loop_->RunAllPending();
47 44
48 // Duplicate the shared memory handle so both the test and the callee can 45 // Duplicate the shared memory handle so both the test and the callee can
49 // close their copy. 46 // close their copy.
50 base::SharedMemoryHandle duplicated_handle; 47 base::SharedMemoryHandle duplicated_handle;
51 EXPECT_TRUE(shared_mem_.ShareToProcess(base::GetCurrentProcessHandle(), 48 EXPECT_TRUE(shared_mem_.ShareToProcess(base::GetCurrentProcessHandle(),
52 &duplicated_handle)); 49 &duplicated_handle));
53 50
54 renderer_->OnCreated(duplicated_handle, kSize); 51 renderer_->OnCreated(duplicated_handle, kSize);
55 } 52 }
56 53
57 virtual ~AudioRendererImplTest() { 54 virtual ~AudioRendererImplTest() {
58 } 55 }
59 56
60 protected: 57 protected:
61 // Fixtures. 58 // Fixtures.
62 scoped_ptr<MessageLoop> message_loop_; 59 scoped_ptr<MessageLoop> message_loop_;
63 scoped_refptr<AudioMessageFilter> filter_;
64 base::SharedMemory shared_mem_; 60 base::SharedMemory shared_mem_;
65 media::MockFilterHost host_; 61 media::MockFilterHost host_;
66 scoped_refptr<media::MockAudioDecoder> decoder_; 62 scoped_refptr<media::MockAudioDecoder> decoder_;
67 scoped_refptr<AudioRendererImpl> renderer_; 63 scoped_refptr<AudioRendererImpl> renderer_;
68 64
69 private: 65 private:
70 DISALLOW_COPY_AND_ASSIGN(AudioRendererImplTest); 66 DISALLOW_COPY_AND_ASSIGN(AudioRendererImplTest);
71 }; 67 };
72 68
73 TEST_F(AudioRendererImplTest, SetPlaybackRate) { 69 TEST_F(AudioRendererImplTest, SetPlaybackRate) {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 renderer_->Stop(media::NewExpectedCallback()); 120 renderer_->Stop(media::NewExpectedCallback());
125 } 121 }
126 122
127 TEST_F(AudioRendererImplTest, DestroyedMessageLoop_ConsumeAudioSamples) { 123 TEST_F(AudioRendererImplTest, DestroyedMessageLoop_ConsumeAudioSamples) {
128 // Kill the message loop and verify OnReadComplete() still works. 124 // Kill the message loop and verify OnReadComplete() still works.
129 message_loop_.reset(); 125 message_loop_.reset();
130 scoped_refptr<media::Buffer> buffer(new media::DataBuffer(kSize)); 126 scoped_refptr<media::Buffer> buffer(new media::DataBuffer(kSize));
131 renderer_->ConsumeAudioSamples(buffer); 127 renderer_->ConsumeAudioSamples(buffer);
132 renderer_->Stop(media::NewExpectedCallback()); 128 renderer_->Stop(media::NewExpectedCallback());
133 } 129 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698