| Index: webkit/glue/media/buffered_resource_loader_unittest.cc
|
| ===================================================================
|
| --- webkit/glue/media/buffered_resource_loader_unittest.cc (revision 105891)
|
| +++ webkit/glue/media/buffered_resource_loader_unittest.cc (working copy)
|
| @@ -21,22 +21,10 @@
|
| #include "webkit/mocks/mock_webframeclient.h"
|
| #include "webkit/mocks/mock_weburlloader.h"
|
|
|
| -using ::testing::_;
|
| -using ::testing::Assign;
|
| -using ::testing::AtLeast;
|
| -using ::testing::DeleteArg;
|
| -using ::testing::DoAll;
|
| using ::testing::InSequence;
|
| -using ::testing::Invoke;
|
| -using ::testing::InvokeWithoutArgs;
|
| -using ::testing::NotNull;
|
| using ::testing::Return;
|
| -using ::testing::ReturnRef;
|
| -using ::testing::SetArgumentPointee;
|
| -using ::testing::StrictMock;
|
| using ::testing::Truly;
|
| using ::testing::NiceMock;
|
| -using ::testing::WithArgs;
|
|
|
| using WebKit::WebString;
|
| using WebKit::WebURLError;
|
| @@ -99,9 +87,10 @@
|
| last_position_ = last_position;
|
|
|
| url_loader_ = new NiceMock<MockWebURLLoader>();
|
| - loader_ = new BufferedResourceLoader(gurl_,
|
| - first_position_, last_position_,
|
| - new media::MediaLog());
|
| + loader_ = new BufferedResourceLoader(
|
| + gurl_, first_position_, last_position_,
|
| + BufferedResourceLoader::kThresholdDefer, 0, 0,
|
| + new media::MediaLog());
|
| loader_->SetURLLoaderForTest(url_loader_);
|
| }
|
|
|
| @@ -234,6 +223,11 @@
|
| EXPECT_EQ(0, memcmp(buffer, data_ + pos, size));
|
| }
|
|
|
| + void ConfirmLoaderBufferBackwardCapacity(size_t expected_backward_capacity) {
|
| + EXPECT_EQ(loader_->buffer_->backward_capacity(),
|
| + expected_backward_capacity);
|
| + }
|
| +
|
| void ConfirmLoaderBufferForwardCapacity(size_t expected_forward_capacity) {
|
| EXPECT_EQ(loader_->buffer_->forward_capacity(), expected_forward_capacity);
|
| }
|
| @@ -242,6 +236,19 @@
|
| EXPECT_EQ(loader_->deferred_, expectedVal);
|
| }
|
|
|
| + // Makes sure the |loader_| buffer window is in a reasonable range.
|
| + void CheckBufferWindowBounds() {
|
| + // Corresponds to value defined in buffered_resource_loader.cc.
|
| + static const size_t kMinBufferCapacity = 2 * 1024 * 1024;
|
| + EXPECT_GE(loader_->buffer_->forward_capacity(), kMinBufferCapacity);
|
| + EXPECT_GE(loader_->buffer_->backward_capacity(), kMinBufferCapacity);
|
| +
|
| + // Corresponds to value defined in buffered_resource_loader.cc.
|
| + static const size_t kMaxBufferCapacity = 20 * 1024 * 1024;
|
| + EXPECT_LE(loader_->buffer_->forward_capacity(), kMaxBufferCapacity);
|
| + EXPECT_LE(loader_->buffer_->backward_capacity(), kMaxBufferCapacity);
|
| + }
|
| +
|
| MOCK_METHOD1(StartCallback, void(int error));
|
| MOCK_METHOD1(ReadCallback, void(int error));
|
| MOCK_METHOD0(NetworkCallback, void());
|
| @@ -405,12 +412,15 @@
|
| Start();
|
| PartialResponse(10, 0x014FFFFFF, 0x01500000);
|
|
|
| + // Don't test for network callbacks (covered by *Strategy tests).
|
| + EXPECT_CALL(*this, NetworkCallback())
|
| + .WillRepeatedly(Return());
|
| +
|
| uint8 buffer[20];
|
| InSequence s;
|
|
|
| // Write more than forward capacity and read it back. Ensure forward capacity
|
| // gets reset.
|
| - EXPECT_CALL(*this, NetworkCallback());
|
| WriteLoader(10, 20);
|
| EXPECT_CALL(*this, ReadCallback(20));
|
| ReadLoader(10, 20, buffer);
|
| @@ -420,14 +430,12 @@
|
|
|
| // Make and outstanding read request larger than forward capacity. Ensure
|
| // forward capacity gets extended.
|
| - EXPECT_CALL(*this, NetworkCallback());
|
| ReadLoader(30, 20, buffer);
|
|
|
| ConfirmLoaderBufferForwardCapacity(20);
|
|
|
| // Fulfill outstanding request. Ensure forward capacity gets reset.
|
| EXPECT_CALL(*this, ReadCallback(20));
|
| - EXPECT_CALL(*this, NetworkCallback());
|
| WriteLoader(30, 20);
|
|
|
| VerifyBuffer(buffer, 30, 20);
|
| @@ -435,7 +443,6 @@
|
|
|
| // Try to read further ahead than kForwardWaitThreshold allows. Ensure
|
| // forward capacity is not changed.
|
| - EXPECT_CALL(*this, NetworkCallback());
|
| EXPECT_CALL(*this, ReadCallback(net::ERR_CACHE_MISS));
|
| ReadLoader(0x00300000, 1, buffer);
|
|
|
| @@ -453,7 +460,6 @@
|
|
|
| TEST_F(BufferedResourceLoaderTest, ReadOutsideBuffer) {
|
| Initialize(kHttpUrl, 10, 0x00FFFFFF);
|
| - loader_->UpdateDeferStrategy(BufferedResourceLoader::kThresholdDefer);
|
| Start();
|
| PartialResponse(10, 0x00FFFFFF, 0x01000000);
|
|
|
| @@ -654,6 +660,92 @@
|
| StopWhenLoad();
|
| }
|
|
|
| -// TODO(hclam): add unit test for defer loading.
|
| +TEST_F(BufferedResourceLoaderTest, BufferWindow_Default) {
|
| + Initialize(kHttpUrl, -1, -1);
|
| + Start();
|
|
|
| + // Test ensures that default construction of a BufferedResourceLoader has sane
|
| + // values.
|
| + //
|
| + // Please do not change these values in order to make a test pass! Instead,
|
| + // start a conversation on what the default buffer window capacities should
|
| + // be.
|
| + ConfirmLoaderBufferBackwardCapacity(2 * 1024 * 1024);
|
| + ConfirmLoaderBufferForwardCapacity(2 * 1024 * 1024);
|
| +
|
| + StopWhenLoad();
|
| +}
|
| +
|
| +TEST_F(BufferedResourceLoaderTest, BufferWindow_Bitrate_Unknown) {
|
| + Initialize(kHttpUrl, -1, -1);
|
| + Start();
|
| + loader_->SetBitrate(0);
|
| + CheckBufferWindowBounds();
|
| + StopWhenLoad();
|
| +}
|
| +
|
| +TEST_F(BufferedResourceLoaderTest, BufferWindow_Bitrate_BelowLowerBound) {
|
| + Initialize(kHttpUrl, -1, -1);
|
| + Start();
|
| + loader_->SetBitrate(1024 * 8); // 1 Kbps.
|
| + CheckBufferWindowBounds();
|
| + StopWhenLoad();
|
| +}
|
| +
|
| +TEST_F(BufferedResourceLoaderTest, BufferWindow_Bitrate_WithinBounds) {
|
| + Initialize(kHttpUrl, -1, -1);
|
| + Start();
|
| + loader_->SetBitrate(2 * 1024 * 1024 * 8); // 2 Mbps.
|
| + CheckBufferWindowBounds();
|
| + StopWhenLoad();
|
| +}
|
| +
|
| +TEST_F(BufferedResourceLoaderTest, BufferWindow_Bitrate_AboveUpperBound) {
|
| + Initialize(kHttpUrl, -1, -1);
|
| + Start();
|
| + loader_->SetBitrate(100 * 1024 * 1024 * 8); // 100 Mbps.
|
| + CheckBufferWindowBounds();
|
| + StopWhenLoad();
|
| +}
|
| +
|
| +TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_Negative) {
|
| + Initialize(kHttpUrl, -1, -1);
|
| + Start();
|
| + loader_->SetPlaybackRate(-10);
|
| + CheckBufferWindowBounds();
|
| + StopWhenLoad();
|
| +}
|
| +
|
| +TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_Zero) {
|
| + Initialize(kHttpUrl, -1, -1);
|
| + Start();
|
| + loader_->SetPlaybackRate(0);
|
| + CheckBufferWindowBounds();
|
| + StopWhenLoad();
|
| +}
|
| +
|
| +TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_BelowLowerBound) {
|
| + Initialize(kHttpUrl, -1, -1);
|
| + Start();
|
| + loader_->SetPlaybackRate(0.1f);
|
| + CheckBufferWindowBounds();
|
| + StopWhenLoad();
|
| +}
|
| +
|
| +TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_WithinBounds) {
|
| + Initialize(kHttpUrl, -1, -1);
|
| + Start();
|
| + loader_->SetPlaybackRate(10);
|
| + CheckBufferWindowBounds();
|
| + StopWhenLoad();
|
| +}
|
| +
|
| +TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_AboveUpperBound) {
|
| + Initialize(kHttpUrl, -1, -1);
|
| + Start();
|
| + loader_->SetPlaybackRate(100);
|
| + CheckBufferWindowBounds();
|
| + StopWhenLoad();
|
| +}
|
| +
|
| } // namespace webkit_glue
|
|
|