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

Side by Side Diff: chrome/browser/renderer_host/audio_renderer_host_unittest.cc

Issue 354002: Sixth patch in getting rid of caching MessageLoop pointers. Audio and automa... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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/message_loop.h" 5 #include "base/message_loop.h"
6 #include "base/process_util.h" 6 #include "base/process_util.h"
7 #include "base/scoped_ptr.h" 7 #include "base/scoped_ptr.h"
8 #include "chrome/browser/chrome_thread.h"
8 #include "chrome/browser/renderer_host/audio_renderer_host.h" 9 #include "chrome/browser/renderer_host/audio_renderer_host.h"
9 #include "chrome/common/render_messages.h" 10 #include "chrome/common/render_messages.h"
10 #include "testing/gmock/include/gmock/gmock.h" 11 #include "testing/gmock/include/gmock/gmock.h"
11 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
12 13
13 using ::testing::_; 14 using ::testing::_;
14 using ::testing::DoAll; 15 using ::testing::DoAll;
15 using ::testing::InSequence; 16 using ::testing::InSequence;
16 using ::testing::Return; 17 using ::testing::Return;
17 using ::testing::SaveArg; 18 using ::testing::SaveArg;
18 using ::testing::SetArgumentPointee; 19 using ::testing::SetArgumentPointee;
19 20
20 namespace { 21 namespace {
21 22
22 const int kInvalidId = -1; 23 const int kInvalidId = -1;
23 const int kProcessId = 100; 24 const int kProcessId = 100;
24 const int kRouteId = 200; 25 const int kRouteId = 200;
25 const int kBufferCapacity = 65536; 26 const int kBufferCapacity = 65536;
26 const int kPacketSize = 16384; 27 const int kPacketSize = 16384;
27 28
28 } // namespace 29 } // namespace
29 30
30 class MockAudioRendererHost : public AudioRendererHost { 31 class MockAudioRendererHost : public AudioRendererHost {
31 public: 32 public:
32 MockAudioRendererHost(MessageLoop* loop) 33 MockAudioRendererHost()
33 : AudioRendererHost(loop) { 34 : AudioRendererHost() {
34 } 35 }
35 36
36 virtual ~MockAudioRendererHost() { 37 virtual ~MockAudioRendererHost() {
37 } 38 }
38 39
39 // A list of mock methods. 40 // A list of mock methods.
40 MOCK_METHOD4(OnRequestPacket, 41 MOCK_METHOD4(OnRequestPacket,
41 void(int routing_id, int stream_id, 42 void(int routing_id, int stream_id,
42 size_t bytes_in_buffer, int64 message_timestamp)); 43 size_t bytes_in_buffer, int64 message_timestamp));
43 44
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 class AudioRendererHostTest : public testing::Test { 114 class AudioRendererHostTest : public testing::Test {
114 public: 115 public:
115 AudioRendererHostTest() 116 AudioRendererHostTest()
116 : current_stream_id_(0) { 117 : current_stream_id_(0) {
117 } 118 }
118 119
119 protected: 120 protected:
120 virtual void SetUp() { 121 virtual void SetUp() {
121 // Create a message loop so AudioRendererHost can use it. 122 // Create a message loop so AudioRendererHost can use it.
122 message_loop_.reset(new MessageLoop(MessageLoop::TYPE_IO)); 123 message_loop_.reset(new MessageLoop(MessageLoop::TYPE_IO));
123 host_ = new MockAudioRendererHost(message_loop_.get()); 124 io_thread_.reset(new ChromeThread(ChromeThread::IO, message_loop_.get()));
125 host_ = new MockAudioRendererHost();
124 } 126 }
125 127
126 virtual void TearDown() { 128 virtual void TearDown() {
127 // This task post a task to message_loop_ to do internal destruction on 129 // This task post a task to message_loop_ to do internal destruction on
128 // message_loop_. 130 // message_loop_.
129 host_->Destroy(); 131 host_->Destroy();
130 132
133 // Release the reference to the mock object.
134 host_ = NULL;
135
131 // We need to continue running message_loop_ to complete all destructions. 136 // We need to continue running message_loop_ to complete all destructions.
132 message_loop_->RunAllPending(); 137 message_loop_->RunAllPending();
133 138
134 // Release the reference to the mock object. 139 io_thread_.reset();
135 host_ = NULL;
136 } 140 }
137 141
138 AudioRendererHost::IPCAudioSource* CreateAudioStream( 142 AudioRendererHost::IPCAudioSource* CreateAudioStream(
139 AudioManager::Format format) { 143 AudioManager::Format format) {
140 InSequence s; 144 InSequence s;
141 145
142 // 1. We will first receive a OnStreamCreated() signal. 146 // 1. We will first receive a OnStreamCreated() signal.
143 EXPECT_CALL(*host_, 147 EXPECT_CALL(*host_,
144 OnStreamCreated(kRouteId, current_stream_id_, kPacketSize)); 148 OnStreamCreated(kRouteId, current_stream_id_, kPacketSize));
145 149
(...skipping 27 matching lines...) Expand all
173 177
174 AudioRendererHost::IPCAudioSource* CreateMockStream() { 178 AudioRendererHost::IPCAudioSource* CreateMockStream() {
175 return CreateAudioStream(AudioManager::AUDIO_MOCK); 179 return CreateAudioStream(AudioManager::AUDIO_MOCK);
176 } 180 }
177 181
178 int current_stream_id_; 182 int current_stream_id_;
179 scoped_refptr<MockAudioRendererHost> host_; 183 scoped_refptr<MockAudioRendererHost> host_;
180 scoped_ptr<MessageLoop> message_loop_; 184 scoped_ptr<MessageLoop> message_loop_;
181 185
182 private: 186 private:
187 scoped_ptr<ChromeThread> io_thread_;
183 DISALLOW_COPY_AND_ASSIGN(AudioRendererHostTest); 188 DISALLOW_COPY_AND_ASSIGN(AudioRendererHostTest);
184 }; 189 };
185 190
186 TEST_F(AudioRendererHostTest, MockStreamDataConversation) { 191 TEST_F(AudioRendererHostTest, MockStreamDataConversation) {
187 scoped_ptr<AudioRendererHost::IPCAudioSource> source(CreateMockStream()); 192 scoped_ptr<AudioRendererHost::IPCAudioSource> source(CreateMockStream());
188 193
189 // We will receive packet requests until the buffer is full. We first send 194 // We will receive packet requests until the buffer is full. We first send
190 // three packets of 16KB, then we send packets of 1KB until the buffer is 195 // three packets of 16KB, then we send packets of 1KB until the buffer is
191 // full. Then there will no more packet requests. 196 // full. Then there will no more packet requests.
192 InSequence s; 197 InSequence s;
(...skipping 21 matching lines...) Expand all
214 source->NotifyPacketReady(kPacketSize); 219 source->NotifyPacketReady(kPacketSize);
215 source->NotifyPacketReady(kPacketSize); 220 source->NotifyPacketReady(kPacketSize);
216 source->NotifyPacketReady(kStep); 221 source->NotifyPacketReady(kStep);
217 source->NotifyPacketReady(kStep); 222 source->NotifyPacketReady(kStep);
218 source->NotifyPacketReady(kStep); 223 source->NotifyPacketReady(kStep);
219 source->NotifyPacketReady(kStep); 224 source->NotifyPacketReady(kStep);
220 source->Play(); 225 source->Play();
221 EXPECT_EQ(ViewMsg_AudioStreamState::kPlaying, state.state); 226 EXPECT_EQ(ViewMsg_AudioStreamState::kPlaying, state.state);
222 source->Close(); 227 source->Close();
223 } 228 }
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/audio_renderer_host.cc ('k') | chrome/browser/renderer_host/browser_render_process_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698