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

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

Issue 10694098: Use maximum capacity instead of a ratio of capacity for BufferedResourceLoader. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <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.h" 10 #include "base/message_loop.h"
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 EXPECT_CALL(*this, NetworkCallback()); 660 EXPECT_CALL(*this, NetworkCallback());
661 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10)); 661 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10));
662 WriteLoader(60, 40); 662 WriteLoader(60, 40);
663 663
664 ConfirmLoaderDeferredState(true); 664 ConfirmLoaderDeferredState(true);
665 VerifyBuffer(buffer, 80, 10); 665 VerifyBuffer(buffer, 80, 10);
666 666
667 StopWhenLoad(); 667 StopWhenLoad();
668 } 668 }
669 669
670 // Tests the data buffering logic of ThresholdDefer strategy. 670 // Tests the data buffering logic of kThresholdDefer strategy.
671 TEST_F(BufferedResourceLoaderTest, ThresholdDeferStrategy) { 671 TEST_F(BufferedResourceLoaderTest, ThresholdDeferStrategy) {
672 Initialize(kHttpUrl, 10, 99); 672 Initialize(kHttpUrl, 10, 99);
673 SetLoaderBuffer(10, 20); 673 SetLoaderBuffer(10, 20);
674 Start(); 674 Start();
675 PartialResponse(10, 99, 100); 675 PartialResponse(10, 99, 100);
676 676
677 uint8 buffer[10]; 677 uint8 buffer[10];
678 InSequence s; 678 InSequence s;
679 679
680 // Initial expectation: we're not deferring. 680 // Initial expectation: we're not deferring.
681 ConfirmLoaderDeferredState(false); 681 ConfirmLoaderDeferredState(false);
682 682
683 // Write half of threshold: keep not deferring. 683 // Write half of capacity: keep not deferring.
684 WriteData(5); 684 WriteData(5);
685 ConfirmLoaderDeferredState(false); 685 ConfirmLoaderDeferredState(false);
686 686
687 // Write rest of space until threshold: start deferring. 687 // Write rest of space until capacity: start deferring.
688 EXPECT_CALL(*this, NetworkCallback()); 688 EXPECT_CALL(*this, NetworkCallback());
689 WriteData(5); 689 WriteData(5);
690 ConfirmLoaderDeferredState(true); 690 ConfirmLoaderDeferredState(true);
691 691
692 // Read a little from the buffer: keep deferring. 692 // Read a byte from the buffer: stop deferring.
693 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 1)); 693 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 1));
694 EXPECT_CALL(*this, NetworkCallback());
694 ReadLoader(10, 1, buffer); 695 ReadLoader(10, 1, buffer);
695 ConfirmLoaderDeferredState(true);
696
697 // Read a little more and go under threshold: stop deferring.
698 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 4));
699 EXPECT_CALL(*this, NetworkCallback());
700 ReadLoader(12, 4, buffer);
701 ConfirmLoaderDeferredState(false); 696 ConfirmLoaderDeferredState(false);
702 697
703 // Write rest of space until threshold: start deferring. 698 // Write a byte to hit capacity: start deferring.
704 EXPECT_CALL(*this, NetworkCallback()); 699 EXPECT_CALL(*this, NetworkCallback());
705 WriteData(6); 700 WriteData(6);
706 ConfirmLoaderDeferredState(true); 701 ConfirmLoaderDeferredState(true);
707 702
708 // Read a little from the buffer: keep deferring.
709 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 1));
710 ReadLoader(16, 1, buffer);
711 ConfirmLoaderDeferredState(true);
712
713 StopWhenLoad(); 703 StopWhenLoad();
714 } 704 }
715 705
716 TEST_F(BufferedResourceLoaderTest, Tricky_ReadForwardsPastBuffered) { 706 TEST_F(BufferedResourceLoaderTest, Tricky_ReadForwardsPastBuffered) {
717 Initialize(kHttpUrl, 10, 99); 707 Initialize(kHttpUrl, 10, 99);
718 SetLoaderBuffer(10, 10); 708 SetLoaderBuffer(10, 10);
719 Start(); 709 Start();
720 PartialResponse(10, 99, 100); 710 PartialResponse(10, 99, 100);
721 711
722 uint8 buffer[256]; 712 uint8 buffer[256];
723 InSequence s; 713 InSequence s;
724 714
725 // PRECONDITION 715 // PRECONDITION
726 WriteUntilThreshold(); 716 WriteUntilThreshold();
727 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 1)); 717 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 1));
718 EXPECT_CALL(*this, NetworkCallback());
728 ReadLoader(10, 1, buffer); 719 ReadLoader(10, 1, buffer);
729 ConfirmBufferState(1, 10, 9, 10); 720 ConfirmBufferState(1, 10, 9, 10);
730 ConfirmLoaderOffsets(11, 0, 0); 721 ConfirmLoaderOffsets(11, 0, 0);
731 ConfirmLoaderDeferredState(true); 722 ConfirmLoaderDeferredState(false);
732 723
733 // *** TRICKY BUSINESS, PT. I *** 724 // *** TRICKY BUSINESS, PT. I ***
734 // Read past buffered: stop deferring. 725 // Read past buffered: stop deferring.
735 // 726 //
736 // In order for the read to complete we must: 727 // In order for the read to complete we must:
737 // 1) Stop deferring to receive more data. 728 // 1) Stop deferring to receive more data.
738 // 729 //
739 // BEFORE 730 // BEFORE
740 // offset=11 [xxxxxxxxx_] 731 // offset=11 [xxxxxxxxx_]
741 // ^ ^^^ requested 4 bytes @ offset 20 732 // ^ ^^^ requested 4 bytes @ offset 20
742 // AFTER 733 // AFTER
743 // offset=24 [__________] 734 // offset=24 [__________]
744 // 735 //
745 EXPECT_CALL(*this, NetworkCallback());
746 ReadLoader(20, 4, buffer); 736 ReadLoader(20, 4, buffer);
747 ConfirmLoaderDeferredState(false); 737 ConfirmLoaderDeferredState(false);
748 738
749 // Write a little, make sure we didn't start deferring. 739 // Write a little, make sure we didn't start deferring.
750 WriteData(2); 740 WriteData(2);
751 ConfirmLoaderDeferredState(false); 741 ConfirmLoaderDeferredState(false);
752 742
753 // Write the rest, read should complete. 743 // Write the rest, read should complete.
754 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 4)); 744 EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 4));
755 WriteData(2); 745 WriteData(2);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 uint8 buffer[256]; 797 uint8 buffer[256];
808 InSequence s; 798 InSequence s;
809 799
810 // PRECONDITION 800 // PRECONDITION
811 WriteUntilThreshold(); 801 WriteUntilThreshold();
812 ConfirmBufferState(0, 10, 10, 10); 802 ConfirmBufferState(0, 10, 10, 10);
813 ConfirmLoaderOffsets(10, 0, 0); 803 ConfirmLoaderOffsets(10, 0, 0);
814 ConfirmLoaderDeferredState(true); 804 ConfirmLoaderDeferredState(true);
815 805
816 // *** TRICKY BUSINESS, PT. III *** 806 // *** TRICKY BUSINESS, PT. III ***
817 // Read past forward capacity but within threshold: stop deferring. 807 // Read past forward capacity but within capacity: stop deferring.
818 // 808 //
819 // In order for the read to complete we must: 809 // In order for the read to complete we must:
820 // 1) Adjust offset forward to create capacity. 810 // 1) Adjust offset forward to create capacity.
821 // 2) Stop deferring to receive more data. 811 // 2) Stop deferring to receive more data.
822 // 812 //
823 // BEFORE 813 // BEFORE
824 // offset=10 [xxxxxxxxxx] 814 // offset=10 [xxxxxxxxxx]
825 // ^^^^ requested 4 bytes @ offset 24 815 // ^^^^ requested 4 bytes @ offset 24
826 // ADJUSTED OFFSET 816 // ADJUSTED OFFSET
827 // offset=20 [__________] 817 // offset=20 [__________]
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
861 InSequence s; 851 InSequence s;
862 852
863 // PRECONDITION 853 // PRECONDITION
864 WriteUntilThreshold(); 854 WriteUntilThreshold();
865 ConfirmBufferState(0, 10, 10, 10); 855 ConfirmBufferState(0, 10, 10, 10);
866 ConfirmLoaderOffsets(10, 0, 0); 856 ConfirmLoaderOffsets(10, 0, 0);
867 ConfirmLoaderDeferredState(true); 857 ConfirmLoaderDeferredState(true);
868 858
869 // *** TRICKY BUSINESS, PT. IV *** 859 // *** TRICKY BUSINESS, PT. IV ***
870 // Read a large amount past forward capacity but within 860 // Read a large amount past forward capacity but within
871 // threshold: stop deferring. 861 // capacity: stop deferring.
872 // 862 //
873 // In order for the read to complete we must: 863 // In order for the read to complete we must:
874 // 1) Adjust offset forward to create capacity. 864 // 1) Adjust offset forward to create capacity.
875 // 2) Expand capacity to make sure we don't defer as data arrives. 865 // 2) Expand capacity to make sure we don't defer as data arrives.
876 // 3) Stop deferring to receive more data. 866 // 3) Stop deferring to receive more data.
877 // 867 //
878 // BEFORE 868 // BEFORE
879 // offset=10 [xxxxxxxxxx] 869 // offset=10 [xxxxxxxxxx]
880 // ^^^^^^^^^^^^ requested 12 bytes @ offset 24 870 // ^^^^^^^^^^^^ requested 12 bytes @ offset 24
881 // ADJUSTED OFFSET 871 // ADJUSTED OFFSET
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
1178 ExpectContentRangeFailure("bytes 20-10/400"); 1168 ExpectContentRangeFailure("bytes 20-10/400");
1179 1169
1180 ExpectContentRangeSuccess("bytes 0-499/500", 0, 499, 500); 1170 ExpectContentRangeSuccess("bytes 0-499/500", 0, 499, 500);
1181 ExpectContentRangeSuccess("bytes 0-0/500", 0, 0, 500); 1171 ExpectContentRangeSuccess("bytes 0-0/500", 0, 0, 500);
1182 ExpectContentRangeSuccess("bytes 10-11/50", 10, 11, 50); 1172 ExpectContentRangeSuccess("bytes 10-11/50", 10, 11, 50);
1183 ExpectContentRangeSuccess("bytes 10-11/*", 10, 11, 1173 ExpectContentRangeSuccess("bytes 10-11/*", 10, 11,
1184 kPositionNotSpecified); 1174 kPositionNotSpecified);
1185 } 1175 }
1186 1176
1187 } // namespace webkit_media 1177 } // namespace webkit_media
OLDNEW
« webkit/media/buffered_resource_loader.cc ('K') | « webkit/media/buffered_resource_loader.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698