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

Side by Side Diff: webkit/media/buffered_data_source_unittest.cc

Issue 8764002: Finish the base::Bind migration for webkit/media. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 9 years 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
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 <algorithm> 5 #include <algorithm>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/test/test_timeouts.h" 8 #include "base/test/test_timeouts.h"
9 #include "media/base/media_log.h" 9 #include "media/base/media_log.h"
10 #include "media/base/mock_callback.h" 10 #include "media/base/mock_callback.h"
11 #include "media/base/mock_filter_host.h" 11 #include "media/base/mock_filter_host.h"
12 #include "media/base/mock_filters.h" 12 #include "media/base/mock_filters.h"
13 #include "net/base/net_errors.h" 13 #include "net/base/net_errors.h"
14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" 14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
15 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLResponse.h" 15 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLResponse.h"
16 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" 16 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
17 #include "webkit/media/buffered_data_source.h" 17 #include "webkit/media/buffered_data_source.h"
18 #include "webkit/mocks/mock_webframeclient.h" 18 #include "webkit/mocks/mock_webframeclient.h"
19 #include "webkit/mocks/mock_weburlloader.h" 19 #include "webkit/mocks/mock_weburlloader.h"
20 20
21 using ::testing::_; 21 using ::testing::_;
22 using ::testing::Assign; 22 using ::testing::Assign;
23 using ::testing::AtLeast; 23 using ::testing::AtLeast;
24 using ::testing::DeleteArg;
25 using ::testing::DoAll; 24 using ::testing::DoAll;
26 using ::testing::InSequence; 25 using ::testing::InSequence;
27 using ::testing::Invoke; 26 using ::testing::Invoke;
28 using ::testing::InvokeWithoutArgs; 27 using ::testing::InvokeWithoutArgs;
29 using ::testing::NotNull; 28 using ::testing::NotNull;
scherkus (not reviewing) 2011/12/01 17:42:18 sanity check: can we remove any more?
Ami GONE FROM CHROMIUM 2011/12/01 18:11:26 Done.
30 using ::testing::Return; 29 using ::testing::Return;
31 using ::testing::ReturnRef; 30 using ::testing::ReturnRef;
32 using ::testing::SetArgumentPointee; 31 using ::testing::SetArgumentPointee;
33 using ::testing::StrictMock; 32 using ::testing::StrictMock;
34 using ::testing::NiceMock; 33 using ::testing::NiceMock;
35 using ::testing::WithArgs; 34 using ::testing::WithArgs;
36 35
37 using WebKit::WebFrame; 36 using WebKit::WebFrame;
38 using WebKit::WebString; 37 using WebKit::WebString;
39 using WebKit::WebURLError; 38 using WebKit::WebURLError;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 DISALLOW_COPY_AND_ASSIGN(MockBufferedDataSource); 76 DISALLOW_COPY_AND_ASSIGN(MockBufferedDataSource);
78 }; 77 };
79 78
80 class MockBufferedResourceLoader : public BufferedResourceLoader { 79 class MockBufferedResourceLoader : public BufferedResourceLoader {
81 public: 80 public:
82 MockBufferedResourceLoader() 81 MockBufferedResourceLoader()
83 : BufferedResourceLoader(GURL(), 0, 0, kThresholdDefer, 82 : BufferedResourceLoader(GURL(), 0, 0, kThresholdDefer,
84 0, 0, new media::MediaLog()) { 83 0, 0, new media::MediaLog()) {
85 } 84 }
86 85
87 MOCK_METHOD3(Start, void(net::OldCompletionCallback* read_callback, 86 MOCK_METHOD3(Start, void(const net::CompletionCallback& read_callback,
88 const base::Closure& network_callback, 87 const base::Closure& network_callback,
89 WebFrame* frame)); 88 WebFrame* frame));
90 MOCK_METHOD0(Stop, void()); 89 MOCK_METHOD0(Stop, void());
91 MOCK_METHOD4(Read, void(int64 position, int read_size, uint8* buffer, 90 MOCK_METHOD4(Read, void(int64 position, int read_size, uint8* buffer,
92 net::OldCompletionCallback* callback)); 91 const net::CompletionCallback& callback));
93 MOCK_METHOD0(content_length, int64()); 92 MOCK_METHOD0(content_length, int64());
94 MOCK_METHOD0(instance_size, int64()); 93 MOCK_METHOD0(instance_size, int64());
95 MOCK_METHOD0(range_supported, bool()); 94 MOCK_METHOD0(range_supported, bool());
96 MOCK_METHOD0(network_activity, bool()); 95 MOCK_METHOD0(network_activity, bool());
97 MOCK_METHOD0(url, const GURL&()); 96 MOCK_METHOD0(url, const GURL&());
98 MOCK_METHOD0(GetBufferedFirstBytePosition, int64()); 97 MOCK_METHOD0(GetBufferedFirstBytePosition, int64());
99 MOCK_METHOD0(GetBufferedLastBytePosition, int64()); 98 MOCK_METHOD0(GetBufferedLastBytePosition, int64());
100 99
101 protected: 100 protected:
102 ~MockBufferedResourceLoader() {} 101 ~MockBufferedResourceLoader() {}
(...skipping 14 matching lines...) Expand all
117 } 116 }
118 117
119 virtual ~BufferedDataSourceTest() { 118 virtual ~BufferedDataSourceTest() {
120 view_->close(); 119 view_->close();
121 } 120 }
122 121
123 void ExpectCreateAndStartResourceLoader(int start_error) { 122 void ExpectCreateAndStartResourceLoader(int start_error) {
124 EXPECT_CALL(*data_source_, CreateResourceLoader(_, _)) 123 EXPECT_CALL(*data_source_, CreateResourceLoader(_, _))
125 .WillOnce(Return(loader_.get())); 124 .WillOnce(Return(loader_.get()));
126 125
127 EXPECT_CALL(*loader_, Start(NotNull(), _, NotNull())) 126 EXPECT_CALL(*loader_, Start(_, _, NotNull()))
128 .WillOnce( 127 .WillOnce(
129 DoAll(Assign(&error_, start_error), 128 DoAll(Assign(&error_, start_error),
130 Invoke(this, 129 Invoke(this,
131 &BufferedDataSourceTest::InvokeStartCallback))); 130 &BufferedDataSourceTest::InvokeStartCallback)));
132 } 131 }
133 132
134 void InitializeDataSource(const char* url, int error, 133 void InitializeDataSource(const char* url, int error,
135 bool partial_response, int64 instance_size, 134 bool partial_response, int64 instance_size,
136 NetworkState networkState) { 135 NetworkState networkState) {
137 // Saves the url first. 136 // Saves the url first.
(...skipping 28 matching lines...) Expand all
166 165
167 // Create and start. Make sure Start() is called on the new loader. 166 // Create and start. Make sure Start() is called on the new loader.
168 ExpectCreateAndStartResourceLoader(net::OK); 167 ExpectCreateAndStartResourceLoader(net::OK);
169 168
170 // Update initialization variable since we know the second loader will 169 // Update initialization variable since we know the second loader will
171 // return OK. 170 // return OK.
172 initialized_ok = true; 171 initialized_ok = true;
173 } 172 }
174 } 173 }
175 174
176 // Attach a static function that deletes the memory referred by the
177 // "callback" parameter.
178 ON_CALL(*loader_, Read(_, _, _ , _))
179 .WillByDefault(DeleteArg<3>());
180
181 ON_CALL(*loader_, instance_size()) 175 ON_CALL(*loader_, instance_size())
182 .WillByDefault(Return(instance_size)); 176 .WillByDefault(Return(instance_size));
183 177
184 // range_supported() return true if we expect to get a partial response. 178 // range_supported() return true if we expect to get a partial response.
185 ON_CALL(*loader_, range_supported()) 179 ON_CALL(*loader_, range_supported())
186 .WillByDefault(Return(partial_response)); 180 .WillByDefault(Return(partial_response));
187 181
188 ON_CALL(*loader_, url()) 182 ON_CALL(*loader_, url())
189 .WillByDefault(ReturnRef(gurl_)); 183 .WillByDefault(ReturnRef(gurl_));
190 media::PipelineStatus expected_init_status = media::PIPELINE_OK; 184 media::PipelineStatus expected_init_status = media::PIPELINE_OK;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 if (loader_) { 223 if (loader_) {
230 InSequence s; 224 InSequence s;
231 EXPECT_CALL(*loader_, Stop()); 225 EXPECT_CALL(*loader_, Stop());
232 } 226 }
233 227
234 data_source_->Stop(media::NewExpectedClosure()); 228 data_source_->Stop(media::NewExpectedClosure());
235 message_loop_->RunAllPending(); 229 message_loop_->RunAllPending();
236 } 230 }
237 231
238 void InvokeStartCallback( 232 void InvokeStartCallback(
239 net::OldCompletionCallback* callback, 233 const net::CompletionCallback& callback,
240 const base::Closure& network_callback, 234 const base::Closure& network_callback,
scherkus (not reviewing) 2011/12/01 17:42:18 net callback -> callback closure -> net callback
Ami GONE FROM CHROMIUM 2011/12/01 18:11:26 Done.
241 WebFrame* frame) { 235 WebFrame* frame) {
242 callback->RunWithParams(Tuple1<int>(error_)); 236 callback.Run(error_);
243 delete callback;
244 // TODO(hclam): Save network_callback. 237 // TODO(hclam): Save network_callback.
245 } 238 }
246 239
247 void InvokeReadCallback(int64 position, int size, uint8* buffer, 240 void InvokeReadCallback(int64 position, int size, uint8* buffer,
248 net::OldCompletionCallback* callback) { 241 const net::CompletionCallback& callback) {
249 if (error_ > 0) 242 if (error_ > 0)
250 memcpy(buffer, data_ + static_cast<int>(position), error_); 243 memcpy(buffer, data_ + static_cast<int>(position), error_);
251 callback->RunWithParams(Tuple1<int>(error_)); 244 callback.Run(error_);
252 delete callback;
253 } 245 }
254 246
255 void ReadDataSourceHit(int64 position, int size, int read_size) { 247 void ReadDataSourceHit(int64 position, int size, int read_size) {
256 EXPECT_TRUE(loader_); 248 EXPECT_TRUE(loader_);
257 249
258 InSequence s; 250 InSequence s;
259 // Expect the read is delegated to the resource loader. 251 // Expect the read is delegated to the resource loader.
260 EXPECT_CALL(*loader_, Read(position, size, NotNull(), NotNull())) 252 EXPECT_CALL(*loader_, Read(position, size, NotNull(), _))
261 .WillOnce(DoAll(Assign(&error_, read_size), 253 .WillOnce(DoAll(Assign(&error_, read_size),
262 Invoke(this, 254 Invoke(this,
263 &BufferedDataSourceTest::InvokeReadCallback))); 255 &BufferedDataSourceTest::InvokeReadCallback)));
264 256
265 // The read has succeeded, so read callback will be called. 257 // The read has succeeded, so read callback will be called.
266 EXPECT_CALL(*this, ReadCallback(read_size)); 258 EXPECT_CALL(*this, ReadCallback(read_size));
267 259
268 data_source_->Read( 260 data_source_->Read(
269 position, size, buffer_, 261 position, size, buffer_,
270 base::Bind(&BufferedDataSourceTest::ReadCallback, 262 base::Bind(&BufferedDataSourceTest::ReadCallback,
271 base::Unretained(this))); 263 base::Unretained(this)));
272 message_loop_->RunAllPending(); 264 message_loop_->RunAllPending();
273 265
274 // Make sure data is correct. 266 // Make sure data is correct.
275 EXPECT_EQ(0, 267 EXPECT_EQ(0,
276 memcmp(buffer_, data_ + static_cast<int>(position), read_size)); 268 memcmp(buffer_, data_ + static_cast<int>(position), read_size));
277 } 269 }
278 270
279 void ReadDataSourceHang(int64 position, int size) { 271 void ReadDataSourceHang(int64 position, int size) {
280 EXPECT_TRUE(loader_); 272 EXPECT_TRUE(loader_);
281 273
282 // Expect a call to read, but the call never returns. 274 // Expect a call to read, but the call never returns.
283 EXPECT_CALL(*loader_, Read(position, size, NotNull(), NotNull())); 275 EXPECT_CALL(*loader_, Read(position, size, NotNull(), _));
284 data_source_->Read( 276 data_source_->Read(
285 position, size, buffer_, 277 position, size, buffer_,
286 base::Bind(&BufferedDataSourceTest::ReadCallback, 278 base::Bind(&BufferedDataSourceTest::ReadCallback,
287 base::Unretained(this))); 279 base::Unretained(this)));
288 message_loop_->RunAllPending(); 280 message_loop_->RunAllPending();
289 281
290 // Now expect the read to return after aborting the data source. 282 // Now expect the read to return after aborting the data source.
291 EXPECT_CALL(*this, ReadCallback(_)); 283 EXPECT_CALL(*this, ReadCallback(_));
292 EXPECT_CALL(*loader_, Stop()); 284 EXPECT_CALL(*loader_, Stop());
293 data_source_->Abort(); 285 data_source_->Abort();
294 message_loop_->RunAllPending(); 286 message_loop_->RunAllPending();
295 287
296 // The loader has now been stopped. Set this to null so that when the 288 // The loader has now been stopped. Set this to null so that when the
297 // DataSource is stopped, it does not expect a call to stop the loader. 289 // DataSource is stopped, it does not expect a call to stop the loader.
298 loader_ = NULL; 290 loader_ = NULL;
299 } 291 }
300 292
301 void ReadDataSourceMiss(int64 position, int size, int start_error) { 293 void ReadDataSourceMiss(int64 position, int size, int start_error) {
302 EXPECT_TRUE(loader_); 294 EXPECT_TRUE(loader_);
303 295
304 // 1. Reply with a cache miss for the read. 296 // 1. Reply with a cache miss for the read.
305 { 297 {
306 InSequence s; 298 InSequence s;
307 EXPECT_CALL(*loader_, Read(position, size, NotNull(), NotNull())) 299 EXPECT_CALL(*loader_, Read(position, size, NotNull(), _))
308 .WillOnce(DoAll(Assign(&error_, net::ERR_CACHE_MISS), 300 .WillOnce(DoAll(Assign(&error_, net::ERR_CACHE_MISS),
309 Invoke(this, 301 Invoke(this,
310 &BufferedDataSourceTest::InvokeReadCallback))); 302 &BufferedDataSourceTest::InvokeReadCallback)));
311 EXPECT_CALL(*loader_, Stop()); 303 EXPECT_CALL(*loader_, Stop());
312 } 304 }
313 305
314 // 2. Then the current loader will be stop and destroyed. 306 // 2. Then the current loader will be stop and destroyed.
315 NiceMock<MockBufferedResourceLoader> *new_loader = 307 NiceMock<MockBufferedResourceLoader> *new_loader =
316 new NiceMock<MockBufferedResourceLoader>(); 308 new NiceMock<MockBufferedResourceLoader>();
317 EXPECT_CALL(*data_source_, CreateResourceLoader(position, -1)) 309 EXPECT_CALL(*data_source_, CreateResourceLoader(position, -1))
318 .WillOnce(Return(new_loader)); 310 .WillOnce(Return(new_loader));
319 311
320 // 3. Then the new loader will be started. 312 // 3. Then the new loader will be started.
321 EXPECT_CALL(*new_loader, Start(NotNull(), _, NotNull())) 313 EXPECT_CALL(*new_loader, Start(_, _, NotNull()))
322 .WillOnce(DoAll(Assign(&error_, start_error), 314 .WillOnce(DoAll(Assign(&error_, start_error),
323 Invoke(this, 315 Invoke(this,
324 &BufferedDataSourceTest::InvokeStartCallback))); 316 &BufferedDataSourceTest::InvokeStartCallback)));
325 317
326 if (start_error == net::OK) { 318 if (start_error == net::OK) {
327 EXPECT_CALL(*new_loader, range_supported()) 319 EXPECT_CALL(*new_loader, range_supported())
328 .WillRepeatedly(Return(loader_->range_supported())); 320 .WillRepeatedly(Return(loader_->range_supported()));
329 321
330 // 4a. Then again a read request is made to the new loader. 322 // 4a. Then again a read request is made to the new loader.
331 EXPECT_CALL(*new_loader, Read(position, size, NotNull(), NotNull())) 323 EXPECT_CALL(*new_loader, Read(position, size, NotNull(), _))
332 .WillOnce(DoAll(Assign(&error_, size), 324 .WillOnce(DoAll(Assign(&error_, size),
333 Invoke(this, 325 Invoke(this,
334 &BufferedDataSourceTest::InvokeReadCallback))); 326 &BufferedDataSourceTest::InvokeReadCallback)));
335 327
336 EXPECT_CALL(*this, ReadCallback(size)); 328 EXPECT_CALL(*this, ReadCallback(size));
337 } else { 329 } else {
338 // 4b. The read callback is called with an error because Start() on the 330 // 4b. The read callback is called with an error because Start() on the
339 // new loader returned an error. 331 // new loader returned an error.
340 EXPECT_CALL(*this, ReadCallback(media::DataSource::kReadError)); 332 EXPECT_CALL(*this, ReadCallback(media::DataSource::kReadError));
341 } 333 }
342 334
343 data_source_->Read( 335 data_source_->Read(
344 position, size, buffer_, 336 position, size, buffer_,
345 base::Bind(&BufferedDataSourceTest::ReadCallback, 337 base::Bind(&BufferedDataSourceTest::ReadCallback,
346 base::Unretained(this))); 338 base::Unretained(this)));
347 message_loop_->RunAllPending(); 339 message_loop_->RunAllPending();
348 340
349 // Make sure data is correct. 341 // Make sure data is correct.
350 if (start_error == net::OK) 342 if (start_error == net::OK)
351 EXPECT_EQ(0, memcmp(buffer_, data_ + static_cast<int>(position), size)); 343 EXPECT_EQ(0, memcmp(buffer_, data_ + static_cast<int>(position), size));
352 344
353 loader_ = new_loader; 345 loader_ = new_loader;
354 } 346 }
355 347
356 void ReadDataSourceFailed(int64 position, int size, int error) { 348 void ReadDataSourceFailed(int64 position, int size, int error) {
357 EXPECT_TRUE(loader_); 349 EXPECT_TRUE(loader_);
358 350
359 // 1. Expect the read is delegated to the resource loader. 351 // 1. Expect the read is delegated to the resource loader.
360 EXPECT_CALL(*loader_, Read(position, size, NotNull(), NotNull())) 352 EXPECT_CALL(*loader_, Read(position, size, NotNull(), _))
361 .WillOnce(DoAll(Assign(&error_, error), 353 .WillOnce(DoAll(Assign(&error_, error),
362 Invoke(this, 354 Invoke(this,
363 &BufferedDataSourceTest::InvokeReadCallback))); 355 &BufferedDataSourceTest::InvokeReadCallback)));
364 356
365 // 2. Host will then receive an error. 357 // 2. Host will then receive an error.
366 EXPECT_CALL(*loader_, Stop()); 358 EXPECT_CALL(*loader_, Stop());
367 359
368 // 3. The read has failed, so read callback will be called. 360 // 3. The read has failed, so read callback will be called.
369 EXPECT_CALL(*this, ReadCallback(media::DataSource::kReadError)); 361 EXPECT_CALL(*this, ReadCallback(media::DataSource::kReadError));
370 362
371 data_source_->Read( 363 data_source_->Read(
372 position, size, buffer_, 364 position, size, buffer_,
373 base::Bind(&BufferedDataSourceTest::ReadCallback, 365 base::Bind(&BufferedDataSourceTest::ReadCallback,
374 base::Unretained(this))); 366 base::Unretained(this)));
375 367
376 message_loop_->RunAllPending(); 368 message_loop_->RunAllPending();
377 } 369 }
378 370
379 BufferedResourceLoader* InvokeCacheMissCreateResourceLoader(int64 start, 371 BufferedResourceLoader* InvokeCacheMissCreateResourceLoader(int64 start,
380 int64 end) { 372 int64 end) {
381 NiceMock<MockBufferedResourceLoader>* new_loader = 373 NiceMock<MockBufferedResourceLoader>* new_loader =
382 new NiceMock<MockBufferedResourceLoader>(); 374 new NiceMock<MockBufferedResourceLoader>();
383 375
384 EXPECT_CALL(*new_loader, Start(NotNull(), _, NotNull())) 376 EXPECT_CALL(*new_loader, Start(_, _, NotNull()))
385 .WillOnce(DoAll(Assign(&error_, net::OK), 377 .WillOnce(DoAll(Assign(&error_, net::OK),
386 Invoke(this, 378 Invoke(this,
387 &BufferedDataSourceTest::InvokeStartCallback))); 379 &BufferedDataSourceTest::InvokeStartCallback)));
388 380
389 EXPECT_CALL(*new_loader, range_supported()) 381 EXPECT_CALL(*new_loader, range_supported())
390 .WillRepeatedly(Return(loader_->range_supported())); 382 .WillRepeatedly(Return(loader_->range_supported()));
391 383
392 int error = net::ERR_FAILED; 384 int error = net::ERR_FAILED;
393 if (cache_miss_count_ < kMaxCacheMissesBeforeFailTest) { 385 if (cache_miss_count_ < kMaxCacheMissesBeforeFailTest) {
394 cache_miss_count_++; 386 cache_miss_count_++;
395 error = net::ERR_CACHE_MISS; 387 error = net::ERR_CACHE_MISS;
396 } 388 }
397 389
398 EXPECT_CALL(*new_loader, Read(start, _, NotNull(), NotNull())) 390 EXPECT_CALL(*new_loader, Read(start, _, NotNull(), _))
399 .WillOnce(DoAll(Assign(&error_, error), 391 .WillOnce(DoAll(Assign(&error_, error),
400 Invoke(this, 392 Invoke(this,
401 &BufferedDataSourceTest::InvokeReadCallback))); 393 &BufferedDataSourceTest::InvokeReadCallback)));
402 394
403 loader_ = new_loader; 395 loader_ = new_loader;
404 return new_loader; 396 return new_loader;
405 } 397 }
406 398
407 void ReadDataSourceAlwaysCacheMiss(int64 position, int size) { 399 void ReadDataSourceAlwaysCacheMiss(int64 position, int size) {
408 cache_miss_count_ = 0; 400 cache_miss_count_ = 0;
409 401
410 EXPECT_CALL(*data_source_, CreateResourceLoader(position, -1)) 402 EXPECT_CALL(*data_source_, CreateResourceLoader(position, -1))
411 .WillRepeatedly(Invoke( 403 .WillRepeatedly(Invoke(
412 this, 404 this,
413 &BufferedDataSourceTest::InvokeCacheMissCreateResourceLoader)); 405 &BufferedDataSourceTest::InvokeCacheMissCreateResourceLoader));
414 406
415 EXPECT_CALL(*loader_, Read(position, size, NotNull(), NotNull())) 407 EXPECT_CALL(*loader_, Read(position, size, NotNull(), _))
416 .WillOnce(DoAll(Assign(&error_, net::ERR_CACHE_MISS), 408 .WillOnce(DoAll(Assign(&error_, net::ERR_CACHE_MISS),
417 Invoke(this, 409 Invoke(this,
418 &BufferedDataSourceTest::InvokeReadCallback))); 410 &BufferedDataSourceTest::InvokeReadCallback)));
419 411
420 EXPECT_CALL(*this, ReadCallback(media::DataSource::kReadError)); 412 EXPECT_CALL(*this, ReadCallback(media::DataSource::kReadError));
421 413
422 data_source_->Read( 414 data_source_->Read(
423 position, size, buffer_, 415 position, size, buffer_,
424 base::Bind(&BufferedDataSourceTest::ReadCallback, 416 base::Bind(&BufferedDataSourceTest::ReadCallback,
425 base::Unretained(this))); 417 base::Unretained(this)));
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 } 544 }
553 545
554 TEST_F(BufferedDataSourceTest, AbortDuringPendingRead) { 546 TEST_F(BufferedDataSourceTest, AbortDuringPendingRead) {
555 InitializeDataSource(kFileUrl, net::OK, true, 1024, LOADED); 547 InitializeDataSource(kFileUrl, net::OK, true, 1024, LOADED);
556 548
557 // Setup a way to verify that Read() is not called on the loader. 549 // Setup a way to verify that Read() is not called on the loader.
558 // We are doing this to make sure that the ReadTask() is still on 550 // We are doing this to make sure that the ReadTask() is still on
559 // the message loop queue when Abort() is called. 551 // the message loop queue when Abort() is called.
560 bool read_called = false; 552 bool read_called = false;
561 ON_CALL(*loader_, Read(_, _, _ , _)) 553 ON_CALL(*loader_, Read(_, _, _ , _))
562 .WillByDefault(DoAll(Assign(&read_called, true), 554 .WillByDefault(Assign(&read_called, true));
563 DeleteArg<3>()));
564 555
565 // Initiate a Read() on the data source, but don't allow the 556 // Initiate a Read() on the data source, but don't allow the
566 // message loop to run. 557 // message loop to run.
567 data_source_->Read( 558 data_source_->Read(
568 0, 10, buffer_, 559 0, 10, buffer_,
569 base::Bind(&BufferedDataSourceTest::ReadCallback, 560 base::Bind(&BufferedDataSourceTest::ReadCallback,
570 base::Unretained(static_cast<BufferedDataSourceTest*>(this)))); 561 base::Unretained(static_cast<BufferedDataSourceTest*>(this))));
571 562
572 // Call Abort() with the read pending. 563 // Call Abort() with the read pending.
573 EXPECT_CALL(*this, ReadCallback(-1)); 564 EXPECT_CALL(*this, ReadCallback(-1));
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 message_loop_->RunAllPending(); 774 message_loop_->RunAllPending();
784 775
785 // Verify loader changed but still has same bitrate. 776 // Verify loader changed but still has same bitrate.
786 EXPECT_NE(old_loader, data_source_->loader().get()); 777 EXPECT_NE(old_loader, data_source_->loader().get());
787 EXPECT_EQ(2.0f, loader_playback_rate()); 778 EXPECT_EQ(2.0f, loader_playback_rate());
788 779
789 StopDataSource(); 780 StopDataSource();
790 } 781 }
791 782
792 } // namespace webkit_media 783 } // namespace webkit_media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698