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

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

Issue 9347029: Decouple 'give me more data' and 'rendered end of stream' audio callbacks. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 8 years, 10 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) 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/bind_helpers.h" 6 #include "base/bind_helpers.h"
7 #include "base/gtest_prod_util.h"
7 #include "base/message_loop.h" 8 #include "base/message_loop.h"
8 #include "base/process_util.h" 9 #include "base/process_util.h"
9 #include "base/synchronization/waitable_event.h" 10 #include "base/synchronization/waitable_event.h"
10 #include "base/test/test_timeouts.h" 11 #include "base/test/test_timeouts.h"
11 #include "base/time.h" 12 #include "base/time.h"
12 #include "content/common/child_process.h" 13 #include "content/common/child_process.h"
13 #include "content/common/child_thread.h" 14 #include "content/common/child_thread.h"
14 #include "content/renderer/media/audio_renderer_impl.h" 15 #include "content/renderer/media/audio_renderer_impl.h"
15 #include "content/renderer/mock_content_renderer_client.h" 16 #include "content/renderer/mock_content_renderer_client.h"
16 #include "content/renderer/render_process.h" 17 #include "content/renderer/render_process.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 void WaitCallback(base::WaitableEvent* event) { 51 void WaitCallback(base::WaitableEvent* event) {
51 event->Signal(); 52 event->Signal();
52 } 53 }
53 54
54 // Class we would be testing. 55 // Class we would be testing.
55 class TestAudioRendererImpl : public AudioRendererImpl { 56 class TestAudioRendererImpl : public AudioRendererImpl {
56 public: 57 public:
57 explicit TestAudioRendererImpl(media::AudioRendererSink* sink) 58 explicit TestAudioRendererImpl(media::AudioRendererSink* sink)
58 : AudioRendererImpl(sink) { 59 : AudioRendererImpl(sink) {
59 } 60 }
61
62 protected:
63 FRIEND_TEST_ALL_PREFIXES(AudioRendererImplTest, OnRenderEndOfStream);
64 MOCK_METHOD0(SignalEndOfStream, void());
65
66 private:
67 FRIEND_TEST_ALL_PREFIXES(AudioRendererImplTest, OnRenderEndOfStream);
68 MOCK_METHOD0(OnRenderEndOfStreamDelay, int64());
60 }; 69 };
61 70
62 class AudioRendererImplTest 71 class AudioRendererImplTest
63 : public ::testing::Test, 72 : public ::testing::Test,
64 public IPC::Channel::Listener { 73 public IPC::Channel::Listener {
65 public: 74 public:
66 // IPC::Channel::Listener implementation. 75 // IPC::Channel::Listener implementation.
67 virtual bool OnMessageReceived(const IPC::Message& message) { 76 virtual bool OnMessageReceived(const IPC::Message& message) {
68 NOTIMPLEMENTED(); 77 NOTIMPLEMENTED();
69 return true; 78 return true;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 EXPECT_TRUE(event_->TimedWait( 152 EXPECT_TRUE(event_->TimedWait(
144 base::TimeDelta::FromMilliseconds(TestTimeouts::action_timeout_ms()))); 153 base::TimeDelta::FromMilliseconds(TestTimeouts::action_timeout_ms())));
145 } 154 }
146 155
147 MessageLoopForIO message_loop_; 156 MessageLoopForIO message_loop_;
148 content::MockContentRendererClient mock_content_renderer_client_; 157 content::MockContentRendererClient mock_content_renderer_client_;
149 scoped_ptr<IPC::Channel> channel_; 158 scoped_ptr<IPC::Channel> channel_;
150 RenderThreadImpl* render_thread_; // owned by mock_process_ 159 RenderThreadImpl* render_thread_; // owned by mock_process_
151 scoped_ptr<MockRenderProcess> mock_process_; 160 scoped_ptr<MockRenderProcess> mock_process_;
152 scoped_refptr<media::MockAudioDecoder> decoder_; 161 scoped_refptr<media::MockAudioDecoder> decoder_;
153 scoped_refptr<AudioRendererImpl> renderer_; 162 scoped_refptr<TestAudioRendererImpl> renderer_;
154 scoped_ptr<base::WaitableEvent> event_; 163 scoped_ptr<base::WaitableEvent> event_;
155 164
156 private: 165 private:
157 DISALLOW_COPY_AND_ASSIGN(AudioRendererImplTest); 166 DISALLOW_COPY_AND_ASSIGN(AudioRendererImplTest);
158 }; 167 };
159 168
160 const int AudioRendererImplTest::kSize = 1024; 169 const int AudioRendererImplTest::kSize = 1024;
161 170
162 TEST_F(AudioRendererImplTest, SetPlaybackRate) { 171 TEST_F(AudioRendererImplTest, SetPlaybackRate) {
163 // Execute SetPlaybackRate() codepath by toggling play/pause. 172 // Execute SetPlaybackRate() codepath by toggling play/pause.
(...skipping 24 matching lines...) Expand all
188 base::Time time_now = base::Time(); // Null time by default. 197 base::Time time_now = base::Time(); // Null time by default.
189 renderer_->set_earliest_end_time(time_now); 198 renderer_->set_earliest_end_time(time_now);
190 renderer_->UpdateEarliestEndTime(renderer_->bytes_per_second(), 199 renderer_->UpdateEarliestEndTime(renderer_->bytes_per_second(),
191 base::TimeDelta::FromMilliseconds(100), 200 base::TimeDelta::FromMilliseconds(100),
192 time_now); 201 time_now);
193 int time_delta = (renderer_->earliest_end_time() - time_now).InMilliseconds(); 202 int time_delta = (renderer_->earliest_end_time() - time_now).InMilliseconds();
194 EXPECT_EQ(1100, time_delta); 203 EXPECT_EQ(1100, time_delta);
195 renderer_->Stop(media::NewExpectedClosure()); 204 renderer_->Stop(media::NewExpectedClosure());
196 WaitForIOThreadCompletion(); 205 WaitForIOThreadCompletion();
197 } 206 }
207
208 TEST_F(AudioRendererImplTest, OnRenderEndOfStream) {
209 renderer_->SetPlaybackRate(1.0f);
210 WaitForIOThreadCompletion();
211 renderer_->set_recieved_end_of_stream(true);
212 EXPECT_CALL(*renderer_, OnRenderEndOfStreamDelay())
213 .WillOnce(Return(0));
214 EXPECT_CALL(*renderer_, SignalEndOfStream());
215 renderer_->OnRenderEndOfStream();
216 renderer_->Stop(media::NewExpectedClosure());
217 WaitForIOThreadCompletion();
218 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698