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

Side by Side Diff: media/base/serial_runner_unittest.cc

Issue 275673002: Remove completion callbacks from AudioRenderer::Play/Pause(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 7 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
« no previous file with comments | « media/base/serial_runner.cc ('k') | media/filters/audio_renderer_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/debug/stack_trace.h" 6 #include "base/debug/stack_trace.h"
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "media/base/pipeline_status.h" 8 #include "media/base/pipeline_status.h"
9 #include "media/base/serial_runner.h" 9 #include "media/base/serial_runner.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 17 matching lines...) Expand all
28 // |status|. called(i) returns whether the i'th bound function pushed to the 28 // |status|. called(i) returns whether the i'th bound function pushed to the
29 // queue was called while running the SerialRunner. 29 // queue was called while running the SerialRunner.
30 void PushBoundFunction(PipelineStatus status) { 30 void PushBoundFunction(PipelineStatus status) {
31 bound_fns_.Push(base::Bind(&SerialRunnerTest::RunBoundFunction, 31 bound_fns_.Push(base::Bind(&SerialRunnerTest::RunBoundFunction,
32 base::Unretained(this), 32 base::Unretained(this),
33 status, 33 status,
34 called_.size())); 34 called_.size()));
35 called_.push_back(false); 35 called_.push_back(false);
36 } 36 }
37 37
38 void PushBoundClosure() {
39 bound_fns_.Push(base::Bind(&SerialRunnerTest::RunBoundClosure,
40 base::Unretained(this),
41 called_.size()));
42 called_.push_back(false);
43 }
44
45 void PushClosure() {
46 bound_fns_.Push(base::Bind(&SerialRunnerTest::RunClosure,
47 base::Unretained(this),
48 called_.size()));
49 called_.push_back(false);
50 }
51
38 // Push a bound function to the queue that will delete the SerialRunner, 52 // Push a bound function to the queue that will delete the SerialRunner,
39 // which should cancel all remaining queued work. 53 // which should cancel all remaining queued work.
40 void PushCancellation() { 54 void PushCancellation() {
41 bound_fns_.Push(base::Bind(&SerialRunnerTest::CancelSerialRunner, 55 bound_fns_.Push(base::Bind(&SerialRunnerTest::CancelSerialRunner,
42 base::Unretained(this))); 56 base::Unretained(this)));
43 } 57 }
44 58
45 // Queries final status of pushed functions and done callback. Valid only 59 // Queries final status of pushed functions and done callback. Valid only
46 // after calling RunSerialRunner(). 60 // after calling RunSerialRunner().
47 bool called(size_t index) { return called_[index]; } 61 bool called(size_t index) { return called_[index]; }
48 bool done_called() { return done_called_; } 62 bool done_called() { return done_called_; }
49 PipelineStatus done_status() { return done_status_; } 63 PipelineStatus done_status() { return done_status_; }
50 64
51 private: 65 private:
52 void RunBoundFunction(PipelineStatus status, 66 void RunBoundFunction(PipelineStatus status,
53 size_t index, 67 size_t index,
54 const PipelineStatusCB& status_cb) { 68 const PipelineStatusCB& status_cb) {
55 EXPECT_EQ(index == 0u, inside_start_) 69 EXPECT_EQ(index == 0u, inside_start_)
56 << "First bound function should run on same stack as " 70 << "First bound function should run on same stack as "
57 << "SerialRunner::Run() while all others should not\n" 71 << "SerialRunner::Run() while all others should not\n"
58 << base::debug::StackTrace().ToString(); 72 << base::debug::StackTrace().ToString();
59 73
60 called_[index] = true; 74 called_[index] = true;
61 status_cb.Run(status); 75 status_cb.Run(status);
62 } 76 }
63 77
78 void RunBoundClosure(size_t index,
79 const base::Closure& done_cb) {
80 EXPECT_EQ(index == 0u, inside_start_)
81 << "First bound function should run on same stack as "
82 << "SerialRunner::Run() while all others should not\n"
83 << base::debug::StackTrace().ToString();
84
85 called_[index] = true;
86 done_cb.Run();
87 }
88
89 void RunClosure(size_t index) {
90 EXPECT_EQ(index == 0u, inside_start_)
91 << "First bound function should run on same stack as "
92 << "SerialRunner::Run() while all others should not\n"
93 << base::debug::StackTrace().ToString();
94
95 called_[index] = true;
96 }
97
64 void StartRunnerInternal(const SerialRunner::Queue& bound_fns) { 98 void StartRunnerInternal(const SerialRunner::Queue& bound_fns) {
65 inside_start_ = true; 99 inside_start_ = true;
66 runner_ = SerialRunner::Run(bound_fns_, base::Bind( 100 runner_ = SerialRunner::Run(bound_fns_, base::Bind(
67 &SerialRunnerTest::DoneCallback, base::Unretained(this))); 101 &SerialRunnerTest::DoneCallback, base::Unretained(this)));
68 inside_start_ = false; 102 inside_start_ = false;
69 } 103 }
70 104
71 void DoneCallback(PipelineStatus status) { 105 void DoneCallback(PipelineStatus status) {
72 EXPECT_FALSE(inside_start_) 106 EXPECT_FALSE(inside_start_)
73 << "Done callback should not run on same stack as SerialRunner::Run()\n" 107 << "Done callback should not run on same stack as SerialRunner::Run()\n"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 PushBoundFunction(PIPELINE_OK); 200 PushBoundFunction(PIPELINE_OK);
167 PushCancellation(); 201 PushCancellation();
168 PushBoundFunction(PIPELINE_OK); 202 PushBoundFunction(PIPELINE_OK);
169 RunSerialRunner(); 203 RunSerialRunner();
170 204
171 EXPECT_TRUE(called(0)); 205 EXPECT_TRUE(called(0));
172 EXPECT_FALSE(called(1)); 206 EXPECT_FALSE(called(1));
173 EXPECT_FALSE(done_called()); 207 EXPECT_FALSE(done_called());
174 } 208 }
175 209
210 TEST_F(SerialRunnerTest, BoundClosure) {
211 PushBoundClosure();
212 RunSerialRunner();
213
214 EXPECT_TRUE(called(0));
215 EXPECT_TRUE(done_called());
216 EXPECT_EQ(PIPELINE_OK, done_status());
217 }
218
219 TEST_F(SerialRunnerTest, Closure) {
220 PushClosure();
221 RunSerialRunner();
222
223 EXPECT_TRUE(called(0));
224 EXPECT_TRUE(done_called());
225 EXPECT_EQ(PIPELINE_OK, done_status());
226 }
227
176 } // namespace media 228 } // namespace media
OLDNEW
« no previous file with comments | « media/base/serial_runner.cc ('k') | media/filters/audio_renderer_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698