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

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

Issue 6969026: Convert Filter::Seek() to use new callback system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add files in content/renderer/media Created 9 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
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/bind.h"
5 #include "base/message_loop.h" 6 #include "base/message_loop.h"
6 #include "media/base/composite_filter.h" 7 #include "media/base/composite_filter.h"
7 #include "media/base/mock_callback.h" 8 #include "media/base/mock_callback.h"
8 #include "media/base/mock_filter_host.h" 9 #include "media/base/mock_filter_host.h"
9 #include "media/base/mock_filters.h" 10 #include "media/base/mock_filters.h"
10 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
11 12
12 using ::testing::_; 13 using ::testing::_;
13 using ::testing::InSequence; 14 using ::testing::InSequence;
14 using ::testing::Return; 15 using ::testing::Return;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 base::TimeDelta seek_time); 47 base::TimeDelta seek_time);
47 48
48 // Helper method that calls a filter method based on the value of 49 // Helper method that calls a filter method based on the value of
49 // |method_to_call|. 50 // |method_to_call|.
50 // 51 //
51 // |method_to_call| - Indicates which method to call. 52 // |method_to_call| - Indicates which method to call.
52 // |filter| - The Filter to make the method call on. 53 // |filter| - The Filter to make the method call on.
53 // |seek_time| - The time to pass to the Seek() call if |method_to_call| 54 // |seek_time| - The time to pass to the Seek() call if |method_to_call|
54 // equals SEEK. 55 // equals SEEK.
55 // |callback| - The callback object to pass to the method. 56 // |callback| - The callback object to pass to the method.
57 // |expected_status| - The expected status value returned by the status
Ami GONE FROM CHROMIUM 2011/05/12 20:42:16 There is no "status callback" in this comment othe
acolwell GONE FROM CHROMIUM 2011/05/12 22:30:40 Done.
58 // callback.
56 void DoFilterCall(MethodToCall method_to_call, Filter* filter, 59 void DoFilterCall(MethodToCall method_to_call, Filter* filter,
57 base::TimeDelta seek_time, 60 base::TimeDelta seek_time,
58 FilterCallback* callback); 61 FilterCallback* callback,
62 PipelineStatus expected_status);
59 63
60 // Creates an expectation sequence based on the value of method_to_call. 64 // Creates an expectation sequence based on the value of method_to_call.
61 // 65 //
62 // |method_to_call| - Indicates which method we want a success sequence for. 66 // |method_to_call| - Indicates which method we want a success sequence for.
63 // |seek_time| - The time to pass in the Seek() call if |method_to_call| 67 // |seek_time| - The time to pass in the Seek() call if |method_to_call|
64 // equals SEEK. 68 // equals SEEK.
65 void ExpectSuccess(MethodToCall method_to_call, 69 void ExpectSuccess(MethodToCall method_to_call,
66 base::TimeDelta seek_time = base::TimeDelta()); 70 base::TimeDelta seek_time = base::TimeDelta());
67 71
68 // Issue a Play(), Pause(), Flush(), Stop(), or Seek() on the composite and 72 // Issue a Play(), Pause(), Flush(), Stop(), or Seek() on the composite and
69 // verify all the expected calls on the filters. 73 // verify all the expected calls on the filters.
70 void DoPlay(); 74 void DoPlay();
71 void DoPause(); 75 void DoPause();
72 void DoFlush(); 76 void DoFlush();
73 void DoStop(); 77 void DoStop();
74 void DoSeek(base::TimeDelta time); 78 void DoSeek(base::TimeDelta time);
75 79
76 // Issue a Play(), Pause(), Flush(), or Seek() and expect the calls to fail 80 // Issue a Play(), Pause(), Flush(), or Seek() and expect the calls to fail
77 // with a PIPELINE_ERROR_INVALID_STATE error. 81 // with a PIPELINE_ERROR_INVALID_STATE error.
78 // 82 //
79 // |method_to_call| - Indicates whick method to call. 83 // |method_to_call| - Indicates whick method to call.
80 // |seek_time| - The time to pass to the Seek() call if |method_to_call| 84 // |seek_time| - The time to pass to the Seek() call if |method_to_call|
81 // equals SEEK. 85 // equals SEEK.
82 void ExpectInvalidStateFail(MethodToCall method_to_call, 86 void ExpectInvalidStateFail(MethodToCall method_to_call,
83 base::TimeDelta seek_time = base::TimeDelta()); 87 base::TimeDelta seek_time = base::TimeDelta());
84 88
85 // Run the callback stored in |filter_1_callback_|. 89 // Verifies |filter_1_callback_| or |filter_1_status_cb_| set.
Ami GONE FROM CHROMIUM 2011/05/12 20:42:16 "Verifies" seems overly assertive. Returns whethe
acolwell GONE FROM CHROMIUM 2011/05/12 22:30:40 Done.
90 bool HaveFilter1Callback() const;
Ami GONE FROM CHROMIUM 2011/05/12 20:42:16 Doesn't chrome use Has* generally?
acolwell GONE FROM CHROMIUM 2011/05/12 22:30:40 Done.
91
92 // Run the callback stored in |filter_1_callback_| or |filter_2_status_cb_|.
86 void RunFilter1Callback(); 93 void RunFilter1Callback();
87 94
88 // Run the callback stored in |filter_2_callback_|. 95 // Verifies |filter_2_callback_| or |filter_2_status_cb_| set.
96 bool HaveFilter2Callback() const;
97
98 // Run the callback stored in |filter_2_callback_| or |filter_2_status_cb_|.
89 void RunFilter2Callback(); 99 void RunFilter2Callback();
90 100
91 protected: 101 protected:
92 MessageLoop message_loop_; 102 MessageLoop message_loop_;
93 103
94 // The composite object being tested. 104 // The composite object being tested.
95 scoped_refptr<CompositeFilter> composite_; 105 scoped_refptr<CompositeFilter> composite_;
96 106
97 // First filter added to the composite. 107 // First filter added to the composite.
98 scoped_refptr<StrictMock<MockFilter> > filter_1_; 108 scoped_refptr<StrictMock<MockFilter> > filter_1_;
99 109
100 // Callback passed to |filter_1_| during last Play(), Pause(), Flush(), 110 // Callback passed to |filter_1_| during last Play(), Pause(), Flush(),
101 // Stop(), or Seek() call. 111 // or Stop() call.
102 FilterCallback* filter_1_callback_; 112 FilterCallback* filter_1_callback_;
103 113
114 // Status to pass to |filter_1_status_cb_|.
115 PipelineStatus filter_1_status_;
116
117 // Callback passed to |filter_1_| during last Seek() call.
118 FilterStatusCB filter_1_status_cb_;
119
104 // Second filter added to the composite. 120 // Second filter added to the composite.
105 scoped_refptr<StrictMock<MockFilter> > filter_2_; 121 scoped_refptr<StrictMock<MockFilter> > filter_2_;
106 122
107 // Callback passed to |filter_2_| during last Play(), Pause(), Flush(), 123 // Callback passed to |filter_2_| during last Play(), Pause(), Flush(),
108 // Stop(), or Seek() call. 124 // Stop(), or Seek() call.
109 FilterCallback* filter_2_callback_; 125 FilterCallback* filter_2_callback_;
110 126
127 // Status to pass to |filter_2_status_cb_|.
128 PipelineStatus filter_2_status_;
129
130 // Callback passed to |filter_2_| during last Seek() call.
131 FilterStatusCB filter_2_status_cb_;
132
111 // FilterHost implementation passed to |composite_| via set_host(). 133 // FilterHost implementation passed to |composite_| via set_host().
112 scoped_ptr<StrictMock<MockFilterHost> > mock_filter_host_; 134 scoped_ptr<StrictMock<MockFilterHost> > mock_filter_host_;
113 135
114 DISALLOW_COPY_AND_ASSIGN(CompositeFilterTest); 136 DISALLOW_COPY_AND_ASSIGN(CompositeFilterTest);
115 }; 137 };
116 138
117 CompositeFilterTest::CompositeFilterTest() : 139 CompositeFilterTest::CompositeFilterTest() :
118 composite_(new CompositeFilter(&message_loop_)), 140 composite_(new CompositeFilter(&message_loop_)),
119 filter_1_callback_(NULL), 141 filter_1_callback_(NULL),
142 filter_1_status_(PIPELINE_OK),
120 filter_2_callback_(NULL), 143 filter_2_callback_(NULL),
144 filter_2_status_(PIPELINE_OK),
121 mock_filter_host_(new StrictMock<MockFilterHost>()) { 145 mock_filter_host_(new StrictMock<MockFilterHost>()) {
122 } 146 }
123 147
124 CompositeFilterTest::~CompositeFilterTest() {} 148 CompositeFilterTest::~CompositeFilterTest() {}
125 149
126 void CompositeFilterTest::SetupAndAdd2Filters() { 150 void CompositeFilterTest::SetupAndAdd2Filters() {
127 mock_filter_host_.reset(new StrictMock<MockFilterHost>()); 151 mock_filter_host_.reset(new StrictMock<MockFilterHost>());
128 composite_ = new CompositeFilter(&message_loop_); 152 composite_ = new CompositeFilter(&message_loop_);
129 composite_->set_host(mock_filter_host_.get()); 153 composite_->set_host(mock_filter_host_.get());
130 154
131 // Setup |filter_1_| and arrange for methods to set 155 // Setup |filter_1_| and arrange for methods to set
132 // |filter_1_callback_| when they are called. 156 // |filter_1_callback_| when they are called.
133 filter_1_ = new StrictMock<MockFilter>(); 157 filter_1_ = new StrictMock<MockFilter>();
134 filter_1_callback_ = NULL; 158 filter_1_callback_ = NULL;
159 filter_1_status_ = PIPELINE_OK;
160 filter_1_status_cb_.Reset();
135 ON_CALL(*filter_1_, Play(_)) 161 ON_CALL(*filter_1_, Play(_))
136 .WillByDefault(SaveArg<0>(&filter_1_callback_)); 162 .WillByDefault(SaveArg<0>(&filter_1_callback_));
137 ON_CALL(*filter_1_, Pause(_)) 163 ON_CALL(*filter_1_, Pause(_))
138 .WillByDefault(SaveArg<0>(&filter_1_callback_)); 164 .WillByDefault(SaveArg<0>(&filter_1_callback_));
139 ON_CALL(*filter_1_, Flush(_)) 165 ON_CALL(*filter_1_, Flush(_))
140 .WillByDefault(SaveArg<0>(&filter_1_callback_)); 166 .WillByDefault(SaveArg<0>(&filter_1_callback_));
141 ON_CALL(*filter_1_, Stop(_)) 167 ON_CALL(*filter_1_, Stop(_))
142 .WillByDefault(SaveArg<0>(&filter_1_callback_)); 168 .WillByDefault(SaveArg<0>(&filter_1_callback_));
143 ON_CALL(*filter_1_, Seek(_,_)) 169 ON_CALL(*filter_1_, Seek(_,_))
144 .WillByDefault(SaveArg<1>(&filter_1_callback_)); 170 .WillByDefault(SaveArg<1>(&filter_1_status_cb_));
145 171
146 // Setup |filter_2_| and arrange for methods to set 172 // Setup |filter_2_| and arrange for methods to set
147 // |filter_2_callback_| when they are called. 173 // |filter_2_callback_| when they are called.
148 filter_2_ = new StrictMock<MockFilter>(); 174 filter_2_ = new StrictMock<MockFilter>();
149 filter_2_callback_ = NULL; 175 filter_2_callback_ = NULL;
176 filter_2_status_ = PIPELINE_OK;
177 filter_2_status_cb_.Reset();
150 ON_CALL(*filter_2_, Play(_)) 178 ON_CALL(*filter_2_, Play(_))
151 .WillByDefault(SaveArg<0>(&filter_2_callback_)); 179 .WillByDefault(SaveArg<0>(&filter_2_callback_));
152 ON_CALL(*filter_2_, Pause(_)) 180 ON_CALL(*filter_2_, Pause(_))
153 .WillByDefault(SaveArg<0>(&filter_2_callback_)); 181 .WillByDefault(SaveArg<0>(&filter_2_callback_));
154 ON_CALL(*filter_2_, Flush(_)) 182 ON_CALL(*filter_2_, Flush(_))
155 .WillByDefault(SaveArg<0>(&filter_2_callback_)); 183 .WillByDefault(SaveArg<0>(&filter_2_callback_));
156 ON_CALL(*filter_2_, Stop(_)) 184 ON_CALL(*filter_2_, Stop(_))
157 .WillByDefault(SaveArg<0>(&filter_2_callback_)); 185 .WillByDefault(SaveArg<0>(&filter_2_callback_));
158 ON_CALL(*filter_2_, Seek(_,_)) 186 ON_CALL(*filter_2_, Seek(_,_))
159 .WillByDefault(SaveArg<1>(&filter_2_callback_)); 187 .WillByDefault(SaveArg<1>(&filter_2_status_cb_));
160 188
161 composite_->AddFilter(filter_1_); 189 composite_->AddFilter(filter_1_);
162 composite_->AddFilter(filter_2_); 190 composite_->AddFilter(filter_2_);
163 } 191 }
164 192
165 void CompositeFilterTest::ExpectFilterCall(MethodToCall method_to_call, 193 void CompositeFilterTest::ExpectFilterCall(MethodToCall method_to_call,
166 MockFilter* filter, 194 MockFilter* filter,
167 base::TimeDelta seek_time) { 195 base::TimeDelta seek_time) {
168 switch(method_to_call) { 196 switch(method_to_call) {
169 case PLAY: 197 case PLAY:
170 EXPECT_CALL(*filter, Play(_)); 198 EXPECT_CALL(*filter, Play(_));
171 break; 199 break;
172 case PAUSE: 200 case PAUSE:
173 EXPECT_CALL(*filter, Pause(_)); 201 EXPECT_CALL(*filter, Pause(_));
174 break; 202 break;
175 case FLUSH: 203 case FLUSH:
176 EXPECT_CALL(*filter, Flush(_)); 204 EXPECT_CALL(*filter, Flush(_));
177 break; 205 break;
178 case STOP: 206 case STOP:
179 EXPECT_CALL(*filter, Stop(_)); 207 EXPECT_CALL(*filter, Stop(_));
180 break; 208 break;
181 case SEEK: 209 case SEEK:
182 EXPECT_CALL(*filter, Seek(seek_time, _)); 210 EXPECT_CALL(*filter, Seek(seek_time, _));
183 break; 211 break;
184 }; 212 };
185 } 213 }
186 214
215 void OnStatusCB(PipelineStatus expected_status, FilterCallback* callback,
216 PipelineStatus status) {
217 EXPECT_EQ(status, expected_status);
218
219 callback->Run();
220 delete callback;
221 }
222
187 void CompositeFilterTest::DoFilterCall(MethodToCall method_to_call, 223 void CompositeFilterTest::DoFilterCall(MethodToCall method_to_call,
188 Filter* filter, 224 Filter* filter,
189 base::TimeDelta seek_time, 225 base::TimeDelta seek_time,
190 FilterCallback* callback) { 226 FilterCallback* callback,
227 PipelineStatus expected_status) {
228 filter_1_status_ = expected_status;
229 filter_2_status_ = expected_status;
230
191 switch(method_to_call) { 231 switch(method_to_call) {
192 case PLAY: 232 case PLAY:
193 filter->Play(callback); 233 filter->Play(callback);
194 break; 234 break;
195 case PAUSE: 235 case PAUSE:
196 filter->Pause(callback); 236 filter->Pause(callback);
197 break; 237 break;
198 case FLUSH: 238 case FLUSH:
199 filter->Flush(callback); 239 filter->Flush(callback);
200 break; 240 break;
201 case STOP: 241 case STOP:
202 filter->Stop(callback); 242 filter->Stop(callback);
203 break; 243 break;
204 case SEEK: 244 case SEEK: {
Ami GONE FROM CHROMIUM 2011/05/12 20:42:16 braces unnecessary
acolwell GONE FROM CHROMIUM 2011/05/12 22:30:40 Done.
205 filter->Seek(seek_time, callback); 245 filter->Seek(seek_time, base::Bind(&OnStatusCB, expected_status,
206 break; 246 callback));
247 } break;
207 }; 248 };
208 } 249 }
209 250
210 void CompositeFilterTest::ExpectSuccess(MethodToCall method_to_call, 251 void CompositeFilterTest::ExpectSuccess(MethodToCall method_to_call,
211 base::TimeDelta seek_time) { 252 base::TimeDelta seek_time) {
212 InSequence seq; 253 InSequence seq;
213 254
214 bool is_parallel_call = (method_to_call == FLUSH); 255 bool is_parallel_call = (method_to_call == FLUSH);
215 256
216 ExpectFilterCall(method_to_call, filter_1_.get(), seek_time); 257 ExpectFilterCall(method_to_call, filter_1_.get(), seek_time);
217 258
218 if (is_parallel_call) { 259 if (is_parallel_call) {
219 ExpectFilterCall(method_to_call, filter_2_.get(), seek_time); 260 ExpectFilterCall(method_to_call, filter_2_.get(), seek_time);
220 } 261 }
221 262
222 // Make method call on the composite. 263 // Make method call on the composite.
223 StrictMock<MockCallback>* callback = new StrictMock<MockCallback>(); 264 StrictMock<MockCallback>* callback = new StrictMock<MockCallback>();
224 DoFilterCall(method_to_call, composite_.get(), seek_time, callback); 265 DoFilterCall(method_to_call, composite_.get(), seek_time, callback,
266 PIPELINE_OK);
225 267
226 if (is_parallel_call) { 268 if (is_parallel_call) {
227 // Make sure both filters have their callbacks set. 269 // Make sure both filters have their callbacks set.
228 EXPECT_TRUE(filter_1_callback_ != NULL); 270 EXPECT_TRUE(HaveFilter1Callback());
229 EXPECT_TRUE(filter_2_callback_ != NULL); 271 EXPECT_TRUE(HaveFilter2Callback());
230 272
231 RunFilter1Callback(); 273 RunFilter1Callback();
232 } else { 274 } else {
233 // Make sure that only |filter_1_| has its callback set. 275 // Make sure that only |filter_1_| has its callback set.
234 EXPECT_TRUE(filter_1_callback_ != NULL); 276 EXPECT_TRUE(HaveFilter1Callback());
235 EXPECT_EQ((FilterCallback*)NULL, filter_2_callback_); 277 EXPECT_FALSE(HaveFilter2Callback());
236 278
237 ExpectFilterCall(method_to_call, filter_2_.get(), seek_time); 279 ExpectFilterCall(method_to_call, filter_2_.get(), seek_time);
238 280
239 RunFilter1Callback(); 281 RunFilter1Callback();
240 282
241 // Verify that |filter_2_| was called by checking the callback pointer. 283 // Verify that |filter_2_| was called by checking the callback pointer.
242 EXPECT_TRUE(filter_2_callback_ != NULL); 284 EXPECT_TRUE(HaveFilter2Callback());
243 } 285 }
244 286
245 callback->ExpectRunAndDelete(); 287 callback->ExpectRunAndDelete();
246 288
247 RunFilter2Callback(); 289 RunFilter2Callback();
248 } 290 }
249 291
250 void CompositeFilterTest::DoPlay() { 292 void CompositeFilterTest::DoPlay() {
251 ExpectSuccess(PLAY); 293 ExpectSuccess(PLAY);
252 } 294 }
(...skipping 11 matching lines...) Expand all
264 } 306 }
265 307
266 void CompositeFilterTest::DoSeek(base::TimeDelta time) { 308 void CompositeFilterTest::DoSeek(base::TimeDelta time) {
267 ExpectSuccess(SEEK, time); 309 ExpectSuccess(SEEK, time);
268 } 310 }
269 311
270 void CompositeFilterTest::ExpectInvalidStateFail(MethodToCall method_to_call, 312 void CompositeFilterTest::ExpectInvalidStateFail(MethodToCall method_to_call,
271 base::TimeDelta seek_time) { 313 base::TimeDelta seek_time) {
272 InSequence seq; 314 InSequence seq;
273 315
274 EXPECT_CALL(*mock_filter_host_, SetError(PIPELINE_ERROR_INVALID_STATE)) 316 if (method_to_call != SEEK) {
275 .WillOnce(Return()); 317 EXPECT_CALL(*mock_filter_host_, SetError(PIPELINE_ERROR_INVALID_STATE))
318 .WillOnce(Return());
319 }
276 320
277 DoFilterCall(method_to_call, composite_, seek_time, NewExpectedCallback()); 321 DoFilterCall(method_to_call, composite_, seek_time, NewExpectedCallback(),
322 PIPELINE_ERROR_INVALID_STATE);
278 323
279 // Make sure that neither of the filters were called by 324 // Make sure that neither of the filters were called by
280 // verifying that the callback pointers weren't set. 325 // verifying that the callback pointers weren't set.
281 EXPECT_EQ((FilterCallback*)NULL, filter_1_callback_); 326 EXPECT_FALSE(HaveFilter1Callback());
282 EXPECT_EQ((FilterCallback*)NULL, filter_2_callback_); 327 EXPECT_FALSE(HaveFilter2Callback());
328 }
329
330 bool CompositeFilterTest::HaveFilter1Callback() const {
331 return filter_1_callback_ != NULL || !filter_1_status_cb_.is_null();
Ami GONE FROM CHROMIUM 2011/05/12 20:42:16 CHECK not both?
acolwell GONE FROM CHROMIUM 2011/05/12 22:30:40 Done.
283 } 332 }
284 333
285 void CompositeFilterTest::RunFilter1Callback() { 334 void CompositeFilterTest::RunFilter1Callback() {
335 EXPECT_TRUE(HaveFilter1Callback());
336
337 if (!filter_1_status_cb_.is_null()) {
338 CopyAndResetCB(filter_1_status_cb_).Run(filter_1_status_);
339 filter_1_status_ = PIPELINE_OK;
340 return;
341 }
342
286 EXPECT_TRUE(filter_1_callback_ != NULL); 343 EXPECT_TRUE(filter_1_callback_ != NULL);
287 FilterCallback* callback = filter_1_callback_; 344 FilterCallback* callback = filter_1_callback_;
288 filter_1_callback_ = NULL; 345 filter_1_callback_ = NULL;
289 callback->Run(); 346 callback->Run();
290 delete callback; 347 delete callback;
291 } 348 }
292 349
350 bool CompositeFilterTest::HaveFilter2Callback() const {
351 return filter_2_callback_ != NULL || !filter_2_status_cb_.is_null();
Ami GONE FROM CHROMIUM 2011/05/12 20:42:16 ditto
acolwell GONE FROM CHROMIUM 2011/05/12 22:30:40 Done.
352 }
353
293 void CompositeFilterTest::RunFilter2Callback() { 354 void CompositeFilterTest::RunFilter2Callback() {
355 EXPECT_TRUE(HaveFilter2Callback());
356
357 if (!filter_2_status_cb_.is_null()) {
358 CopyAndResetCB(filter_2_status_cb_).Run(filter_2_status_);
359 filter_2_status_ = PIPELINE_OK;
360 return;
361 }
362
294 EXPECT_TRUE(filter_2_callback_ != NULL); 363 EXPECT_TRUE(filter_2_callback_ != NULL);
295 FilterCallback* callback = filter_2_callback_; 364 FilterCallback* callback = filter_2_callback_;
296 filter_2_callback_ = NULL; 365 filter_2_callback_ = NULL;
297 callback->Run(); 366 callback->Run();
298 delete callback; 367 delete callback;
299 } 368 }
300 369
301 // Test AddFilter() failure cases. 370 // Test AddFilter() failure cases.
302 TEST_F(CompositeFilterTest, TestAddFilterFailCases) { 371 TEST_F(CompositeFilterTest, TestAddFilterFailCases) {
303 // Test adding a null pointer. 372 // Test adding a null pointer.
(...skipping 28 matching lines...) Expand all
332 DoPlay(); 401 DoPlay();
333 402
334 // At this point we are now in the kPlaying state. 403 // At this point we are now in the kPlaying state.
335 404
336 // Try calling Play() again to make sure that we simply get a callback. 405 // Try calling Play() again to make sure that we simply get a callback.
337 // We are already in the Play() state so there is no point calling the 406 // We are already in the Play() state so there is no point calling the
338 // filters. 407 // filters.
339 composite_->Play(NewExpectedCallback()); 408 composite_->Play(NewExpectedCallback());
340 409
341 // Verify that neither of the filter callbacks were set. 410 // Verify that neither of the filter callbacks were set.
342 EXPECT_EQ((FilterCallback*)NULL, filter_1_callback_); 411 EXPECT_FALSE(HaveFilter1Callback());
343 EXPECT_EQ((FilterCallback*)NULL, filter_2_callback_); 412 EXPECT_FALSE(HaveFilter2Callback());
344 413
345 // Stop playback. 414 // Stop playback.
346 DoStop(); 415 DoStop();
347 416
348 // At this point we should be in the kStopped state. 417 // At this point we should be in the kStopped state.
349 418
350 // Try calling Stop() again to make sure neither filter is called. 419 // Try calling Stop() again to make sure neither filter is called.
351 composite_->Stop(NewExpectedCallback()); 420 composite_->Stop(NewExpectedCallback());
352 421
353 // Verify that neither of the filter callbacks were set. 422 // Verify that neither of the filter callbacks were set.
354 EXPECT_EQ((FilterCallback*)NULL, filter_1_callback_); 423 EXPECT_FALSE(HaveFilter1Callback());
355 EXPECT_EQ((FilterCallback*)NULL, filter_2_callback_); 424 EXPECT_FALSE(HaveFilter2Callback());
356 425
357 // Try calling Play() again to make sure we get an error. 426 // Try calling Play() again to make sure we get an error.
358 ExpectInvalidStateFail(PLAY); 427 ExpectInvalidStateFail(PLAY);
359 } 428 }
360 429
361 // Test errors in the middle of a serial call sequence like Play(). 430 // Test errors in the middle of a serial call sequence like Play().
362 TEST_F(CompositeFilterTest, TestPlayErrors) { 431 TEST_F(CompositeFilterTest, TestPlayErrors) {
363 InSequence sequence; 432 InSequence sequence;
364 433
365 SetupAndAdd2Filters(); 434 SetupAndAdd2Filters();
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 // Issue a successful Pause(). 480 // Issue a successful Pause().
412 DoPause(); 481 DoPause();
413 482
414 // At this point we are paused. 483 // At this point we are paused.
415 484
416 // Try calling Pause() again to make sure that the filters aren't called 485 // Try calling Pause() again to make sure that the filters aren't called
417 // because we are already in the paused state. 486 // because we are already in the paused state.
418 composite_->Pause(NewExpectedCallback()); 487 composite_->Pause(NewExpectedCallback());
419 488
420 // Verify that neither of the filter callbacks were set. 489 // Verify that neither of the filter callbacks were set.
421 EXPECT_EQ((FilterCallback*)NULL, filter_1_callback_); 490 EXPECT_FALSE(HaveFilter1Callback());
422 EXPECT_EQ((FilterCallback*)NULL, filter_2_callback_); 491 EXPECT_FALSE(HaveFilter2Callback());
423 492
424 // Verify that we can transition pack to the play state. 493 // Verify that we can transition pack to the play state.
425 DoPlay(); 494 DoPlay();
426 495
427 // Go back to the pause state. 496 // Go back to the pause state.
428 DoPause(); 497 DoPause();
429 498
430 // Transition to the stop state. 499 // Transition to the stop state.
431 DoStop(); 500 DoStop();
432 501
(...skipping 20 matching lines...) Expand all
453 // interface. 522 // interface.
454 filter_1_->host()->SetError(PIPELINE_ERROR_OUT_OF_MEMORY); 523 filter_1_->host()->SetError(PIPELINE_ERROR_OUT_OF_MEMORY);
455 524
456 // Expect error to be reported and "pause done" callback to be called. 525 // Expect error to be reported and "pause done" callback to be called.
457 EXPECT_CALL(*mock_filter_host_, SetError(PIPELINE_ERROR_OUT_OF_MEMORY)); 526 EXPECT_CALL(*mock_filter_host_, SetError(PIPELINE_ERROR_OUT_OF_MEMORY));
458 callback->ExpectRunAndDelete(); 527 callback->ExpectRunAndDelete();
459 528
460 RunFilter1Callback(); 529 RunFilter1Callback();
461 530
462 // Make sure |filter_2_callback_| was not set. 531 // Make sure |filter_2_callback_| was not set.
463 EXPECT_EQ((FilterCallback*)NULL, filter_2_callback_); 532 EXPECT_FALSE(HaveFilter2Callback());
464 533
465 // Verify that Play/Pause/Flush/Seek fail now that an error occured. 534 // Verify that Play/Pause/Flush/Seek fail now that an error occured.
466 ExpectInvalidStateFail(PLAY); 535 ExpectInvalidStateFail(PLAY);
467 ExpectInvalidStateFail(PAUSE); 536 ExpectInvalidStateFail(PAUSE);
468 ExpectInvalidStateFail(FLUSH); 537 ExpectInvalidStateFail(FLUSH);
469 ExpectInvalidStateFail(SEEK); 538 ExpectInvalidStateFail(SEEK);
470 539
471 // Make sure you can still Stop(). 540 // Make sure you can still Stop().
472 DoStop(); 541 DoStop();
473 } 542 }
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 composite_->Play(NewExpectedCallback()); 776 composite_->Play(NewExpectedCallback());
708 777
709 // Issue a Pause() and expect no errors. 778 // Issue a Pause() and expect no errors.
710 composite_->Pause(NewExpectedCallback()); 779 composite_->Pause(NewExpectedCallback());
711 780
712 // Issue a Flush() and expect no errors. 781 // Issue a Flush() and expect no errors.
713 composite_->Flush(NewExpectedCallback()); 782 composite_->Flush(NewExpectedCallback());
714 783
715 // Issue a Seek() and expect no errors. 784 // Issue a Seek() and expect no errors.
716 composite_->Seek(base::TimeDelta::FromSeconds(5), 785 composite_->Seek(base::TimeDelta::FromSeconds(5),
717 NewExpectedCallback()); 786 NewExpectedStatusCB(PIPELINE_OK));
718 787
719 // Issue a Play() and expect no errors. 788 // Issue a Play() and expect no errors.
720 composite_->Play(NewExpectedCallback()); 789 composite_->Play(NewExpectedCallback());
721 790
722 // Issue a Stop() and expect no errors. 791 // Issue a Stop() and expect no errors.
723 composite_->Stop(NewExpectedCallback()); 792 composite_->Stop(NewExpectedCallback());
724 } 793 }
725 794
726 } // namespace media 795 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698