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

Side by Side Diff: media/blink/buffered_resource_loader_unittest.cc

Issue 1534273002: Switch to standard integer types in media/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: more Created 5 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 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 <algorithm> 5 #include <algorithm>
6 #include <string> 6 #include <string>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 loader_->Start( 110 loader_->Start(
111 base::Bind(&BufferedResourceLoaderTest::StartCallback, 111 base::Bind(&BufferedResourceLoaderTest::StartCallback,
112 base::Unretained(this)), 112 base::Unretained(this)),
113 base::Bind(&BufferedResourceLoaderTest::LoadingCallback, 113 base::Bind(&BufferedResourceLoaderTest::LoadingCallback,
114 base::Unretained(this)), 114 base::Unretained(this)),
115 base::Bind(&BufferedResourceLoaderTest::ProgressCallback, 115 base::Bind(&BufferedResourceLoaderTest::ProgressCallback,
116 base::Unretained(this)), 116 base::Unretained(this)),
117 view_->mainFrame()); 117 view_->mainFrame());
118 } 118 }
119 119
120 void FullResponse(int64 instance_size) { 120 void FullResponse(int64_t instance_size) {
121 FullResponse(instance_size, BufferedResourceLoader::kOk); 121 FullResponse(instance_size, BufferedResourceLoader::kOk);
122 } 122 }
123 123
124 void FullResponse(int64 instance_size, 124 void FullResponse(int64_t instance_size,
125 BufferedResourceLoader::Status status) { 125 BufferedResourceLoader::Status status) {
126 EXPECT_CALL(*this, StartCallback(status)); 126 EXPECT_CALL(*this, StartCallback(status));
127 127
128 WebURLResponse response(gurl_); 128 WebURLResponse response(gurl_);
129 response.setHTTPHeaderField(WebString::fromUTF8("Content-Length"), 129 response.setHTTPHeaderField(WebString::fromUTF8("Content-Length"),
130 WebString::fromUTF8(base::StringPrintf("%" 130 WebString::fromUTF8(base::StringPrintf("%"
131 PRId64, instance_size))); 131 PRId64, instance_size)));
132 response.setExpectedContentLength(instance_size); 132 response.setExpectedContentLength(instance_size);
133 response.setHTTPStatusCode(kHttpOK); 133 response.setHTTPStatusCode(kHttpOK);
134 loader_->didReceiveResponse(url_loader_, response); 134 loader_->didReceiveResponse(url_loader_, response);
135 135
136 if (status == BufferedResourceLoader::kOk) { 136 if (status == BufferedResourceLoader::kOk) {
137 EXPECT_EQ(instance_size, loader_->content_length()); 137 EXPECT_EQ(instance_size, loader_->content_length());
138 EXPECT_EQ(instance_size, loader_->instance_size()); 138 EXPECT_EQ(instance_size, loader_->instance_size());
139 } 139 }
140 140
141 EXPECT_FALSE(loader_->range_supported()); 141 EXPECT_FALSE(loader_->range_supported());
142 } 142 }
143 143
144 void PartialResponse(int64 first_position, int64 last_position, 144 void PartialResponse(int64_t first_position,
145 int64 instance_size) { 145 int64_t last_position,
146 int64_t instance_size) {
146 PartialResponse(first_position, last_position, instance_size, false, true); 147 PartialResponse(first_position, last_position, instance_size, false, true);
147 } 148 }
148 149
149 void PartialResponse(int64 first_position, int64 last_position, 150 void PartialResponse(int64_t first_position,
150 int64 instance_size, bool chunked, bool accept_ranges) { 151 int64_t last_position,
152 int64_t instance_size,
153 bool chunked,
154 bool accept_ranges) {
151 EXPECT_CALL(*this, StartCallback(BufferedResourceLoader::kOk)); 155 EXPECT_CALL(*this, StartCallback(BufferedResourceLoader::kOk));
152 156
153 WebURLResponse response(gurl_); 157 WebURLResponse response(gurl_);
154 response.setHTTPHeaderField(WebString::fromUTF8("Content-Range"), 158 response.setHTTPHeaderField(WebString::fromUTF8("Content-Range"),
155 WebString::fromUTF8(base::StringPrintf("bytes " 159 WebString::fromUTF8(base::StringPrintf("bytes "
156 "%" PRId64 "-%" PRId64 "/%" PRId64, 160 "%" PRId64 "-%" PRId64 "/%" PRId64,
157 first_position, 161 first_position,
158 last_position, 162 last_position,
159 instance_size))); 163 instance_size)));
160 164
161 // HTTP 1.1 doesn't permit Content-Length with Transfer-Encoding: chunked. 165 // HTTP 1.1 doesn't permit Content-Length with Transfer-Encoding: chunked.
162 int64 content_length = -1; 166 int64_t content_length = -1;
163 if (chunked) { 167 if (chunked) {
164 response.setHTTPHeaderField(WebString::fromUTF8("Transfer-Encoding"), 168 response.setHTTPHeaderField(WebString::fromUTF8("Transfer-Encoding"),
165 WebString::fromUTF8("chunked")); 169 WebString::fromUTF8("chunked"));
166 } else { 170 } else {
167 content_length = last_position - first_position + 1; 171 content_length = last_position - first_position + 1;
168 } 172 }
169 response.setExpectedContentLength(content_length); 173 response.setExpectedContentLength(content_length);
170 174
171 // A server isn't required to return Accept-Ranges even though it might. 175 // A server isn't required to return Accept-Ranges even though it might.
172 if (accept_ranges) { 176 if (accept_ranges) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 int buffered = loader_->buffer_.forward_bytes(); 230 int buffered = loader_->buffer_.forward_bytes();
227 int capacity = loader_->buffer_.forward_capacity(); 231 int capacity = loader_->buffer_.forward_capacity();
228 CHECK_LT(buffered, capacity); 232 CHECK_LT(buffered, capacity);
229 233
230 EXPECT_CALL(*this, LoadingCallback( 234 EXPECT_CALL(*this, LoadingCallback(
231 BufferedResourceLoader::kLoadingDeferred)); 235 BufferedResourceLoader::kLoadingDeferred));
232 WriteData(capacity - buffered); 236 WriteData(capacity - buffered);
233 } 237 }
234 238
235 // Helper method to read from |loader_|. 239 // Helper method to read from |loader_|.
236 void ReadLoader(int64 position, int size, uint8* buffer) { 240 void ReadLoader(int64_t position, int size, uint8_t* buffer) {
237 loader_->Read(position, size, buffer, 241 loader_->Read(position, size, buffer,
238 base::Bind(&BufferedResourceLoaderTest::ReadCallback, 242 base::Bind(&BufferedResourceLoaderTest::ReadCallback,
239 base::Unretained(this))); 243 base::Unretained(this)));
240 } 244 }
241 245
242 // Verifies that data in buffer[0...size] is equal to data_[pos...pos+size]. 246 // Verifies that data in buffer[0...size] is equal to data_[pos...pos+size].
243 void VerifyBuffer(uint8* buffer, int pos, int size) { 247 void VerifyBuffer(uint8_t* buffer, int pos, int size) {
244 EXPECT_EQ(0, memcmp(buffer, data_ + pos, size)); 248 EXPECT_EQ(0, memcmp(buffer, data_ + pos, size));
245 } 249 }
246 250
247 void ConfirmLoaderOffsets(int64 expected_offset, 251 void ConfirmLoaderOffsets(int64_t expected_offset,
248 int expected_first_offset, 252 int expected_first_offset,
249 int expected_last_offset) { 253 int expected_last_offset) {
250 EXPECT_EQ(loader_->offset_, expected_offset); 254 EXPECT_EQ(loader_->offset_, expected_offset);
251 EXPECT_EQ(loader_->first_offset_, expected_first_offset); 255 EXPECT_EQ(loader_->first_offset_, expected_first_offset);
252 EXPECT_EQ(loader_->last_offset_, expected_last_offset); 256 EXPECT_EQ(loader_->last_offset_, expected_last_offset);
253 } 257 }
254 258
255 void ConfirmBufferState(int backward_bytes, 259 void ConfirmBufferState(int backward_bytes,
256 int backward_capacity, 260 int backward_capacity,
257 int forward_bytes, 261 int forward_bytes,
(...skipping 25 matching lines...) Expand all
283 static const int kMaxBufferCapacity = 20 * 1024 * 1024; 287 static const int kMaxBufferCapacity = 20 * 1024 * 1024;
284 EXPECT_LE(loader_->buffer_.forward_capacity(), kMaxBufferCapacity); 288 EXPECT_LE(loader_->buffer_.forward_capacity(), kMaxBufferCapacity);
285 EXPECT_LE(loader_->buffer_.backward_capacity(), kMaxBufferCapacity); 289 EXPECT_LE(loader_->buffer_.backward_capacity(), kMaxBufferCapacity);
286 } 290 }
287 291
288 bool HasActiveLoader() { return loader_->active_loader_; } 292 bool HasActiveLoader() { return loader_->active_loader_; }
289 293
290 MOCK_METHOD1(StartCallback, void(BufferedResourceLoader::Status)); 294 MOCK_METHOD1(StartCallback, void(BufferedResourceLoader::Status));
291 MOCK_METHOD2(ReadCallback, void(BufferedResourceLoader::Status, int)); 295 MOCK_METHOD2(ReadCallback, void(BufferedResourceLoader::Status, int));
292 MOCK_METHOD1(LoadingCallback, void(BufferedResourceLoader::LoadingState)); 296 MOCK_METHOD1(LoadingCallback, void(BufferedResourceLoader::LoadingState));
293 MOCK_METHOD1(ProgressCallback, void(int64)); 297 MOCK_METHOD1(ProgressCallback, void(int64_t));
294 298
295 protected: 299 protected:
296 GURL gurl_; 300 GURL gurl_;
297 int64 first_position_; 301 int64_t first_position_;
298 int64 last_position_; 302 int64_t last_position_;
299 303
300 scoped_ptr<BufferedResourceLoader> loader_; 304 scoped_ptr<BufferedResourceLoader> loader_;
301 NiceMock<MockWebURLLoader>* url_loader_; 305 NiceMock<MockWebURLLoader>* url_loader_;
302 306
303 MockWebFrameClient client_; 307 MockWebFrameClient client_;
304 WebView* view_; 308 WebView* view_;
305 WebLocalFrame* frame_; 309 WebLocalFrame* frame_;
306 310
307 base::MessageLoop message_loop_; 311 base::MessageLoop message_loop_;
308 312
309 uint8 data_[kDataSize]; 313 uint8_t data_[kDataSize];
310 314
311 private: 315 private:
312 DISALLOW_COPY_AND_ASSIGN(BufferedResourceLoaderTest); 316 DISALLOW_COPY_AND_ASSIGN(BufferedResourceLoaderTest);
313 }; 317 };
314 318
315 TEST_F(BufferedResourceLoaderTest, StartStop) { 319 TEST_F(BufferedResourceLoaderTest, StartStop) {
316 Initialize(kHttpUrl, -1, -1); 320 Initialize(kHttpUrl, -1, -1);
317 Start(); 321 Start();
318 StopWhenLoad(); 322 StopWhenLoad();
319 } 323 }
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 StopWhenLoad(); 398 StopWhenLoad();
395 } 399 }
396 400
397 // Tests the logic of sliding window for data buffering and reading. 401 // Tests the logic of sliding window for data buffering and reading.
398 TEST_F(BufferedResourceLoaderTest, BufferAndRead) { 402 TEST_F(BufferedResourceLoaderTest, BufferAndRead) {
399 Initialize(kHttpUrl, 10, 29); 403 Initialize(kHttpUrl, 10, 29);
400 loader_->UpdateDeferStrategy(BufferedResourceLoader::kCapacityDefer); 404 loader_->UpdateDeferStrategy(BufferedResourceLoader::kCapacityDefer);
401 Start(); 405 Start();
402 PartialResponse(10, 29, 30); 406 PartialResponse(10, 29, 30);
403 407
404 uint8 buffer[10]; 408 uint8_t buffer[10];
405 InSequence s; 409 InSequence s;
406 410
407 // Writes 10 bytes and read them back. 411 // Writes 10 bytes and read them back.
408 WriteLoader(10, 10); 412 WriteLoader(10, 10);
409 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10)); 413 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10));
410 ReadLoader(10, 10, buffer); 414 ReadLoader(10, 10, buffer);
411 VerifyBuffer(buffer, 10, 10); 415 VerifyBuffer(buffer, 10, 10);
412 416
413 // Writes 10 bytes and read 2 times. 417 // Writes 10 bytes and read 2 times.
414 WriteLoader(20, 10); 418 WriteLoader(20, 10);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 ReadLoader(30, 10, buffer); 450 ReadLoader(30, 10, buffer);
447 } 451 }
448 452
449 // Tests the logic of expanding the data buffer for large reads. 453 // Tests the logic of expanding the data buffer for large reads.
450 TEST_F(BufferedResourceLoaderTest, ReadExtendBuffer) { 454 TEST_F(BufferedResourceLoaderTest, ReadExtendBuffer) {
451 Initialize(kHttpUrl, 10, 0x014FFFFFF); 455 Initialize(kHttpUrl, 10, 0x014FFFFFF);
452 SetLoaderBuffer(10, 20); 456 SetLoaderBuffer(10, 20);
453 Start(); 457 Start();
454 PartialResponse(10, 0x014FFFFFF, 0x015000000); 458 PartialResponse(10, 0x014FFFFFF, 0x015000000);
455 459
456 uint8 buffer[20]; 460 uint8_t buffer[20];
457 InSequence s; 461 InSequence s;
458 462
459 // Write more than forward capacity and read it back. Ensure forward capacity 463 // Write more than forward capacity and read it back. Ensure forward capacity
460 // gets reset after reading. 464 // gets reset after reading.
461 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred)); 465 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred));
462 WriteLoader(10, 20); 466 WriteLoader(10, 20);
463 467
464 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 20)); 468 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 20));
465 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading)); 469 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading));
466 ReadLoader(10, 20, buffer); 470 ReadLoader(10, 20, buffer);
(...skipping 28 matching lines...) Expand all
495 ConfirmLoaderBufferForwardCapacity(10); 499 ConfirmLoaderBufferForwardCapacity(10);
496 500
497 StopWhenLoad(); 501 StopWhenLoad();
498 } 502 }
499 503
500 TEST_F(BufferedResourceLoaderTest, ReadOutsideBuffer) { 504 TEST_F(BufferedResourceLoaderTest, ReadOutsideBuffer) {
501 Initialize(kHttpUrl, 10, 0x00FFFFFF); 505 Initialize(kHttpUrl, 10, 0x00FFFFFF);
502 Start(); 506 Start();
503 PartialResponse(10, 0x00FFFFFF, 0x01000000); 507 PartialResponse(10, 0x00FFFFFF, 0x01000000);
504 508
505 uint8 buffer[10]; 509 uint8_t buffer[10];
506 InSequence s; 510 InSequence s;
507 511
508 // Read very far ahead will get a cache miss. 512 // Read very far ahead will get a cache miss.
509 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kCacheMiss, 0)); 513 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kCacheMiss, 0));
510 ReadLoader(0x00FFFFFF, 1, buffer); 514 ReadLoader(0x00FFFFFF, 1, buffer);
511 515
512 // The following call will not call ReadCallback() because it is waiting for 516 // The following call will not call ReadCallback() because it is waiting for
513 // data to arrive. 517 // data to arrive.
514 ReadLoader(10, 10, buffer); 518 ReadLoader(10, 10, buffer);
515 519
516 // Writing to loader will fulfill the read request. 520 // Writing to loader will fulfill the read request.
517 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10)); 521 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10));
518 WriteLoader(10, 20); 522 WriteLoader(10, 20);
519 VerifyBuffer(buffer, 10, 10); 523 VerifyBuffer(buffer, 10, 10);
520 524
521 // The following call cannot be fulfilled now. 525 // The following call cannot be fulfilled now.
522 ReadLoader(25, 10, buffer); 526 ReadLoader(25, 10, buffer);
523 527
524 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFinished)); 528 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFinished));
525 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 5)); 529 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 5));
526 loader_->didFinishLoading(url_loader_, 0, -1); 530 loader_->didFinishLoading(url_loader_, 0, -1);
527 } 531 }
528 532
529 TEST_F(BufferedResourceLoaderTest, RequestFailedWhenRead) { 533 TEST_F(BufferedResourceLoaderTest, RequestFailedWhenRead) {
530 Initialize(kHttpUrl, 10, 29); 534 Initialize(kHttpUrl, 10, 29);
531 Start(); 535 Start();
532 PartialResponse(10, 29, 30); 536 PartialResponse(10, 29, 30);
533 537
534 uint8 buffer[10]; 538 uint8_t buffer[10];
535 InSequence s; 539 InSequence s;
536 540
537 // We should convert any error we receive to BufferedResourceLoader::kFailed. 541 // We should convert any error we receive to BufferedResourceLoader::kFailed.
538 ReadLoader(10, 10, buffer); 542 ReadLoader(10, 10, buffer);
539 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFailed)); 543 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFailed));
540 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kFailed, 0)); 544 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kFailed, 0));
541 WebURLError error; 545 WebURLError error;
542 error.reason = net::ERR_TIMED_OUT; 546 error.reason = net::ERR_TIMED_OUT;
543 error.isCancellation = false; 547 error.isCancellation = false;
544 loader_->didFail(url_loader_, error); 548 loader_->didFail(url_loader_, error);
545 } 549 }
546 550
547 TEST_F(BufferedResourceLoaderTest, RequestFailedWithNoPendingReads) { 551 TEST_F(BufferedResourceLoaderTest, RequestFailedWithNoPendingReads) {
548 Initialize(kHttpUrl, 10, 29); 552 Initialize(kHttpUrl, 10, 29);
549 Start(); 553 Start();
550 PartialResponse(10, 29, 30); 554 PartialResponse(10, 29, 30);
551 555
552 uint8 buffer[10]; 556 uint8_t buffer[10];
553 InSequence s; 557 InSequence s;
554 558
555 // Write enough data so that a read would technically complete had the request 559 // Write enough data so that a read would technically complete had the request
556 // not failed. 560 // not failed.
557 WriteLoader(10, 20); 561 WriteLoader(10, 20);
558 562
559 // Fail without a pending read. 563 // Fail without a pending read.
560 WebURLError error; 564 WebURLError error;
561 error.reason = net::ERR_TIMED_OUT; 565 error.reason = net::ERR_TIMED_OUT;
562 error.isCancellation = false; 566 error.isCancellation = false;
563 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFailed)); 567 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFailed));
564 loader_->didFail(url_loader_, error); 568 loader_->didFail(url_loader_, error);
565 569
566 // Now we should immediately fail any read even if we have data buffered. 570 // Now we should immediately fail any read even if we have data buffered.
567 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kFailed, 0)); 571 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kFailed, 0));
568 ReadLoader(10, 10, buffer); 572 ReadLoader(10, 10, buffer);
569 } 573 }
570 574
571 TEST_F(BufferedResourceLoaderTest, RequestCancelledWhenRead) { 575 TEST_F(BufferedResourceLoaderTest, RequestCancelledWhenRead) {
572 Initialize(kHttpUrl, 10, 29); 576 Initialize(kHttpUrl, 10, 29);
573 Start(); 577 Start();
574 PartialResponse(10, 29, 30); 578 PartialResponse(10, 29, 30);
575 579
576 uint8 buffer[10]; 580 uint8_t buffer[10];
577 InSequence s; 581 InSequence s;
578 582
579 // We should convert any error we receive to BufferedResourceLoader::kFailed. 583 // We should convert any error we receive to BufferedResourceLoader::kFailed.
580 ReadLoader(10, 10, buffer); 584 ReadLoader(10, 10, buffer);
581 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFailed)); 585 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFailed));
582 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kFailed, 0)); 586 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kFailed, 0));
583 WebURLError error; 587 WebURLError error;
584 error.reason = 0; 588 error.reason = 0;
585 error.isCancellation = true; 589 error.isCancellation = true;
586 loader_->didFail(url_loader_, error); 590 loader_->didFail(url_loader_, error);
587 } 591 }
588 592
589 // Tests the data buffering logic of NeverDefer strategy. 593 // Tests the data buffering logic of NeverDefer strategy.
590 TEST_F(BufferedResourceLoaderTest, NeverDeferStrategy) { 594 TEST_F(BufferedResourceLoaderTest, NeverDeferStrategy) {
591 Initialize(kHttpUrl, 10, 99); 595 Initialize(kHttpUrl, 10, 99);
592 SetLoaderBuffer(10, 20); 596 SetLoaderBuffer(10, 20);
593 loader_->UpdateDeferStrategy(BufferedResourceLoader::kNeverDefer); 597 loader_->UpdateDeferStrategy(BufferedResourceLoader::kNeverDefer);
594 Start(); 598 Start();
595 PartialResponse(10, 99, 100); 599 PartialResponse(10, 99, 100);
596 600
597 uint8 buffer[10]; 601 uint8_t buffer[10];
598 602
599 // Read past the buffer size; should not defer regardless. 603 // Read past the buffer size; should not defer regardless.
600 WriteLoader(10, 10); 604 WriteLoader(10, 10);
601 WriteLoader(20, 50); 605 WriteLoader(20, 50);
602 606
603 // Should move past window. 607 // Should move past window.
604 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kCacheMiss, 0)); 608 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kCacheMiss, 0));
605 ReadLoader(10, 10, buffer); 609 ReadLoader(10, 10, buffer);
606 610
607 StopWhenLoad(); 611 StopWhenLoad();
608 } 612 }
609 613
610 // Tests the data buffering logic of ReadThenDefer strategy. 614 // Tests the data buffering logic of ReadThenDefer strategy.
611 TEST_F(BufferedResourceLoaderTest, ReadThenDeferStrategy) { 615 TEST_F(BufferedResourceLoaderTest, ReadThenDeferStrategy) {
612 Initialize(kHttpUrl, 10, 99); 616 Initialize(kHttpUrl, 10, 99);
613 SetLoaderBuffer(10, 20); 617 SetLoaderBuffer(10, 20);
614 loader_->UpdateDeferStrategy(BufferedResourceLoader::kReadThenDefer); 618 loader_->UpdateDeferStrategy(BufferedResourceLoader::kReadThenDefer);
615 Start(); 619 Start();
616 PartialResponse(10, 99, 100); 620 PartialResponse(10, 99, 100);
617 621
618 uint8 buffer[10]; 622 uint8_t buffer[10];
619 623
620 // Make an outstanding read request. 624 // Make an outstanding read request.
621 ReadLoader(10, 10, buffer); 625 ReadLoader(10, 10, buffer);
622 626
623 // Receive almost enough data to cover, shouldn't defer. 627 // Receive almost enough data to cover, shouldn't defer.
624 WriteLoader(10, 9); 628 WriteLoader(10, 9);
625 629
626 // As soon as we have received enough data to fulfill the read, defer. 630 // As soon as we have received enough data to fulfill the read, defer.
627 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred)); 631 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred));
628 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10)); 632 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10));
(...skipping 28 matching lines...) Expand all
657 StopWhenLoad(); 661 StopWhenLoad();
658 } 662 }
659 663
660 // Tests the data buffering logic of kCapacityDefer strategy. 664 // Tests the data buffering logic of kCapacityDefer strategy.
661 TEST_F(BufferedResourceLoaderTest, ThresholdDeferStrategy) { 665 TEST_F(BufferedResourceLoaderTest, ThresholdDeferStrategy) {
662 Initialize(kHttpUrl, 10, 99); 666 Initialize(kHttpUrl, 10, 99);
663 SetLoaderBuffer(10, 20); 667 SetLoaderBuffer(10, 20);
664 Start(); 668 Start();
665 PartialResponse(10, 99, 100); 669 PartialResponse(10, 99, 100);
666 670
667 uint8 buffer[10]; 671 uint8_t buffer[10];
668 InSequence s; 672 InSequence s;
669 673
670 // Write half of capacity: keep not deferring. 674 // Write half of capacity: keep not deferring.
671 WriteData(5); 675 WriteData(5);
672 676
673 // Write rest of space until capacity: start deferring. 677 // Write rest of space until capacity: start deferring.
674 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred)); 678 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred));
675 WriteData(5); 679 WriteData(5);
676 680
677 // Read a byte from the buffer: stop deferring. 681 // Read a byte from the buffer: stop deferring.
678 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 1)); 682 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 1));
679 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading)); 683 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading));
680 ReadLoader(10, 1, buffer); 684 ReadLoader(10, 1, buffer);
681 685
682 // Write a byte to hit capacity: start deferring. 686 // Write a byte to hit capacity: start deferring.
683 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred)); 687 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred));
684 WriteData(6); 688 WriteData(6);
685 689
686 StopWhenLoad(); 690 StopWhenLoad();
687 } 691 }
688 692
689 TEST_F(BufferedResourceLoaderTest, Tricky_ReadForwardsPastBuffered) { 693 TEST_F(BufferedResourceLoaderTest, Tricky_ReadForwardsPastBuffered) {
690 Initialize(kHttpUrl, 10, 99); 694 Initialize(kHttpUrl, 10, 99);
691 SetLoaderBuffer(10, 10); 695 SetLoaderBuffer(10, 10);
692 Start(); 696 Start();
693 PartialResponse(10, 99, 100); 697 PartialResponse(10, 99, 100);
694 698
695 uint8 buffer[256]; 699 uint8_t buffer[256];
696 InSequence s; 700 InSequence s;
697 701
698 // PRECONDITION 702 // PRECONDITION
699 WriteUntilThreshold(); 703 WriteUntilThreshold();
700 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 1)); 704 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 1));
701 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading)); 705 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading));
702 ReadLoader(10, 1, buffer); 706 ReadLoader(10, 1, buffer);
703 ConfirmBufferState(1, 10, 9, 10); 707 ConfirmBufferState(1, 10, 9, 10);
704 ConfirmLoaderOffsets(11, 0, 0); 708 ConfirmLoaderOffsets(11, 0, 0);
705 709
(...skipping 24 matching lines...) Expand all
730 734
731 StopWhenLoad(); 735 StopWhenLoad();
732 } 736 }
733 737
734 TEST_F(BufferedResourceLoaderTest, Tricky_ReadBackwardsPastBuffered) { 738 TEST_F(BufferedResourceLoaderTest, Tricky_ReadBackwardsPastBuffered) {
735 Initialize(kHttpUrl, 10, 99); 739 Initialize(kHttpUrl, 10, 99);
736 SetLoaderBuffer(10, 10); 740 SetLoaderBuffer(10, 10);
737 Start(); 741 Start();
738 PartialResponse(10, 99, 100); 742 PartialResponse(10, 99, 100);
739 743
740 uint8 buffer[256]; 744 uint8_t buffer[256];
741 InSequence s; 745 InSequence s;
742 746
743 // PRECONDITION 747 // PRECONDITION
744 WriteUntilThreshold(); 748 WriteUntilThreshold();
745 ConfirmBufferState(0, 10, 10, 10); 749 ConfirmBufferState(0, 10, 10, 10);
746 ConfirmLoaderOffsets(10, 0, 0); 750 ConfirmLoaderOffsets(10, 0, 0);
747 751
748 // *** TRICKY BUSINESS, PT. II *** 752 // *** TRICKY BUSINESS, PT. II ***
749 // Read backwards a little too much: cache miss. 753 // Read backwards a little too much: cache miss.
750 // 754 //
(...skipping 12 matching lines...) Expand all
763 767
764 StopWhenLoad(); 768 StopWhenLoad();
765 } 769 }
766 770
767 TEST_F(BufferedResourceLoaderTest, Tricky_SmallReadWithinThreshold) { 771 TEST_F(BufferedResourceLoaderTest, Tricky_SmallReadWithinThreshold) {
768 Initialize(kHttpUrl, 10, 99); 772 Initialize(kHttpUrl, 10, 99);
769 SetLoaderBuffer(10, 10); 773 SetLoaderBuffer(10, 10);
770 Start(); 774 Start();
771 PartialResponse(10, 99, 100); 775 PartialResponse(10, 99, 100);
772 776
773 uint8 buffer[256]; 777 uint8_t buffer[256];
774 InSequence s; 778 InSequence s;
775 779
776 // PRECONDITION 780 // PRECONDITION
777 WriteUntilThreshold(); 781 WriteUntilThreshold();
778 ConfirmBufferState(0, 10, 10, 10); 782 ConfirmBufferState(0, 10, 10, 10);
779 ConfirmLoaderOffsets(10, 0, 0); 783 ConfirmLoaderOffsets(10, 0, 0);
780 784
781 // *** TRICKY BUSINESS, PT. III *** 785 // *** TRICKY BUSINESS, PT. III ***
782 // Read past forward capacity but within capacity: stop deferring. 786 // Read past forward capacity but within capacity: stop deferring.
783 // 787 //
(...skipping 27 matching lines...) Expand all
811 815
812 StopWhenLoad(); 816 StopWhenLoad();
813 } 817 }
814 818
815 TEST_F(BufferedResourceLoaderTest, Tricky_LargeReadWithinThreshold) { 819 TEST_F(BufferedResourceLoaderTest, Tricky_LargeReadWithinThreshold) {
816 Initialize(kHttpUrl, 10, 99); 820 Initialize(kHttpUrl, 10, 99);
817 SetLoaderBuffer(10, 10); 821 SetLoaderBuffer(10, 10);
818 Start(); 822 Start();
819 PartialResponse(10, 99, 100); 823 PartialResponse(10, 99, 100);
820 824
821 uint8 buffer[256]; 825 uint8_t buffer[256];
822 InSequence s; 826 InSequence s;
823 827
824 // PRECONDITION 828 // PRECONDITION
825 WriteUntilThreshold(); 829 WriteUntilThreshold();
826 ConfirmBufferState(0, 10, 10, 10); 830 ConfirmBufferState(0, 10, 10, 10);
827 ConfirmLoaderOffsets(10, 0, 0); 831 ConfirmLoaderOffsets(10, 0, 0);
828 832
829 // *** TRICKY BUSINESS, PT. IV *** 833 // *** TRICKY BUSINESS, PT. IV ***
830 // Read a large amount past forward capacity but within 834 // Read a large amount past forward capacity but within
831 // capacity: stop deferring. 835 // capacity: stop deferring.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 870
867 StopWhenLoad(); 871 StopWhenLoad();
868 } 872 }
869 873
870 TEST_F(BufferedResourceLoaderTest, Tricky_LargeReadBackwards) { 874 TEST_F(BufferedResourceLoaderTest, Tricky_LargeReadBackwards) {
871 Initialize(kHttpUrl, 10, 99); 875 Initialize(kHttpUrl, 10, 99);
872 SetLoaderBuffer(10, 10); 876 SetLoaderBuffer(10, 10);
873 Start(); 877 Start();
874 PartialResponse(10, 99, 100); 878 PartialResponse(10, 99, 100);
875 879
876 uint8 buffer[256]; 880 uint8_t buffer[256];
877 InSequence s; 881 InSequence s;
878 882
879 // PRECONDITION 883 // PRECONDITION
880 WriteUntilThreshold(); 884 WriteUntilThreshold();
881 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10)); 885 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10));
882 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading)); 886 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading));
883 ReadLoader(10, 10, buffer); 887 ReadLoader(10, 10, buffer);
884 WriteUntilThreshold(); 888 WriteUntilThreshold();
885 ConfirmBufferState(10, 10, 10, 10); 889 ConfirmBufferState(10, 10, 10, 10);
886 ConfirmLoaderOffsets(20, 0, 0); 890 ConfirmLoaderOffsets(20, 0, 0);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
927 931
928 TEST_F(BufferedResourceLoaderTest, Tricky_ReadPastThreshold) { 932 TEST_F(BufferedResourceLoaderTest, Tricky_ReadPastThreshold) {
929 const int kSize = 5 * 1024 * 1024; 933 const int kSize = 5 * 1024 * 1024;
930 const int kThreshold = 2 * 1024 * 1024; 934 const int kThreshold = 2 * 1024 * 1024;
931 935
932 Initialize(kHttpUrl, 10, kSize); 936 Initialize(kHttpUrl, 10, kSize);
933 SetLoaderBuffer(10, 10); 937 SetLoaderBuffer(10, 10);
934 Start(); 938 Start();
935 PartialResponse(10, kSize - 1, kSize); 939 PartialResponse(10, kSize - 1, kSize);
936 940
937 uint8 buffer[256]; 941 uint8_t buffer[256];
938 InSequence s; 942 InSequence s;
939 943
940 // PRECONDITION 944 // PRECONDITION
941 WriteUntilThreshold(); 945 WriteUntilThreshold();
942 ConfirmBufferState(0, 10, 10, 10); 946 ConfirmBufferState(0, 10, 10, 10);
943 ConfirmLoaderOffsets(10, 0, 0); 947 ConfirmLoaderOffsets(10, 0, 0);
944 948
945 // *** TRICKY BUSINESS, PT. VI *** 949 // *** TRICKY BUSINESS, PT. VI ***
946 // Read past the forward wait threshold: cache miss. 950 // Read past the forward wait threshold: cache miss.
947 // 951 //
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
1085 } 1089 }
1086 1090
1087 TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_AboveUpperBound) { 1091 TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_AboveUpperBound) {
1088 Initialize(kHttpUrl, -1, -1); 1092 Initialize(kHttpUrl, -1, -1);
1089 Start(); 1093 Start();
1090 loader_->SetPlaybackRate(100); 1094 loader_->SetPlaybackRate(100);
1091 CheckBufferWindowBounds(); 1095 CheckBufferWindowBounds();
1092 StopWhenLoad(); 1096 StopWhenLoad();
1093 } 1097 }
1094 1098
1095 static void ExpectContentRange( 1099 static void ExpectContentRange(const std::string& str,
1096 const std::string& str, bool expect_success, 1100 bool expect_success,
1097 int64 expected_first, int64 expected_last, int64 expected_size) { 1101 int64_t expected_first,
1098 int64 first, last, size; 1102 int64_t expected_last,
1103 int64_t expected_size) {
1104 int64_t first, last, size;
1099 ASSERT_EQ(expect_success, BufferedResourceLoader::ParseContentRange( 1105 ASSERT_EQ(expect_success, BufferedResourceLoader::ParseContentRange(
1100 str, &first, &last, &size)) << str; 1106 str, &first, &last, &size)) << str;
1101 if (!expect_success) 1107 if (!expect_success)
1102 return; 1108 return;
1103 EXPECT_EQ(first, expected_first); 1109 EXPECT_EQ(first, expected_first);
1104 EXPECT_EQ(last, expected_last); 1110 EXPECT_EQ(last, expected_last);
1105 EXPECT_EQ(size, expected_size); 1111 EXPECT_EQ(size, expected_size);
1106 } 1112 }
1107 1113
1108 static void ExpectContentRangeFailure(const std::string& str) { 1114 static void ExpectContentRangeFailure(const std::string& str) {
1109 ExpectContentRange(str, false, 0, 0, 0); 1115 ExpectContentRange(str, false, 0, 0, 0);
1110 } 1116 }
1111 1117
1112 static void ExpectContentRangeSuccess( 1118 static void ExpectContentRangeSuccess(const std::string& str,
1113 const std::string& str, 1119 int64_t expected_first,
1114 int64 expected_first, int64 expected_last, int64 expected_size) { 1120 int64_t expected_last,
1121 int64_t expected_size) {
1115 ExpectContentRange(str, true, expected_first, expected_last, expected_size); 1122 ExpectContentRange(str, true, expected_first, expected_last, expected_size);
1116 } 1123 }
1117 1124
1118 TEST(BufferedResourceLoaderStandaloneTest, ParseContentRange) { 1125 TEST(BufferedResourceLoaderStandaloneTest, ParseContentRange) {
1119 ExpectContentRangeFailure("cytes 0-499/500"); 1126 ExpectContentRangeFailure("cytes 0-499/500");
1120 ExpectContentRangeFailure("bytes 0499/500"); 1127 ExpectContentRangeFailure("bytes 0499/500");
1121 ExpectContentRangeFailure("bytes 0-499500"); 1128 ExpectContentRangeFailure("bytes 0-499500");
1122 ExpectContentRangeFailure("bytes 0-499/500-blorg"); 1129 ExpectContentRangeFailure("bytes 0-499/500-blorg");
1123 ExpectContentRangeFailure("bytes 0-499/500-1"); 1130 ExpectContentRangeFailure("bytes 0-499/500-1");
1124 ExpectContentRangeFailure("bytes 0-499/400"); 1131 ExpectContentRangeFailure("bytes 0-499/400");
(...skipping 10 matching lines...) Expand all
1135 1142
1136 // Tests the data buffering logic of ReadThenDefer strategy. 1143 // Tests the data buffering logic of ReadThenDefer strategy.
1137 TEST_F(BufferedResourceLoaderTest, CancelAfterDeferral) { 1144 TEST_F(BufferedResourceLoaderTest, CancelAfterDeferral) {
1138 Initialize(kHttpUrl, 10, 99); 1145 Initialize(kHttpUrl, 10, 99);
1139 SetLoaderBuffer(10, 20); 1146 SetLoaderBuffer(10, 20);
1140 loader_->UpdateDeferStrategy(BufferedResourceLoader::kReadThenDefer); 1147 loader_->UpdateDeferStrategy(BufferedResourceLoader::kReadThenDefer);
1141 loader_->CancelUponDeferral(); 1148 loader_->CancelUponDeferral();
1142 Start(); 1149 Start();
1143 PartialResponse(10, 99, 100); 1150 PartialResponse(10, 99, 100);
1144 1151
1145 uint8 buffer[10]; 1152 uint8_t buffer[10];
1146 1153
1147 // Make an outstanding read request. 1154 // Make an outstanding read request.
1148 ReadLoader(10, 10, buffer); 1155 ReadLoader(10, 10, buffer);
1149 1156
1150 // Receive almost enough data to cover, shouldn't defer. 1157 // Receive almost enough data to cover, shouldn't defer.
1151 WriteLoader(10, 9); 1158 WriteLoader(10, 9);
1152 EXPECT_TRUE(HasActiveLoader()); 1159 EXPECT_TRUE(HasActiveLoader());
1153 1160
1154 // As soon as we have received enough data to fulfill the read, defer. 1161 // As soon as we have received enough data to fulfill the read, defer.
1155 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred)); 1162 EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred));
1156 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10)); 1163 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10));
1157 WriteLoader(19, 1); 1164 WriteLoader(19, 1);
1158 VerifyBuffer(buffer, 10, 10); 1165 VerifyBuffer(buffer, 10, 10);
1159 EXPECT_FALSE(HasActiveLoader()); 1166 EXPECT_FALSE(HasActiveLoader());
1160 } 1167 }
1161 1168
1162 } // namespace media 1169 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698