Index: webkit/glue/media/buffered_resource_loader_unittest.cc |
diff --git a/webkit/glue/media/buffered_resource_loader_unittest.cc b/webkit/glue/media/buffered_resource_loader_unittest.cc |
index 39a62a950f4247e7c4d6e019a4d4a8f4fb1d858c..ef11e191c09a6426320047082b54095afa3fe199 100644 |
--- a/webkit/glue/media/buffered_resource_loader_unittest.cc |
+++ b/webkit/glue/media/buffered_resource_loader_unittest.cc |
@@ -22,22 +22,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; |
@@ -100,9 +88,10 @@ class BufferedResourceLoaderTest : public testing::Test { |
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_); |
} |
@@ -236,6 +225,11 @@ class BufferedResourceLoaderTest : public testing::Test { |
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); |
} |
@@ -244,42 +238,17 @@ class BufferedResourceLoaderTest : public testing::Test { |
EXPECT_EQ(loader_->deferred_, expectedVal); |
} |
- void CheckBufferWindowIsNotTooBig() { |
- // An arbitrarily chosen, reasonable limit. |
- static const size_t kMaxBufferCapacity = 20 * 1024 * 1024; |
- EXPECT_LE(loader_->buffer_->forward_capacity(), kMaxBufferCapacity); |
- EXPECT_LE(loader_->buffer_->backward_capacity(), kMaxBufferCapacity); |
- } |
- |
- void CheckBufferWindowIsNotTooSmall() { |
- EXPECT_GT(loader_->buffer_->forward_capacity(), 0u); |
- EXPECT_GT(loader_->buffer_->backward_capacity(), 0u); |
- } |
- |
// Makes sure the |loader_| buffer window is in a reasonable range. |
void CheckBufferWindowBounds() { |
- CheckBufferWindowIsNotTooSmall(); |
- CheckBufferWindowIsNotTooBig(); |
- } |
+ // 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); |
- // Updates the |loader_|'s |playback_rate| and |bitrate|, then returns via the |
- // output parameters the resultant change in the forward and backward capacity |
- // of |loader_|'s buffer window. |
- void InvokeChangeInBufferWindow(float playback_rate, int bitrate, |
- int* out_forward_capacity_delta, |
- int* out_backward_capacity_delta) { |
- CheckBufferWindowBounds(); |
- size_t old_forward_capacity = loader_->buffer_->forward_capacity(); |
- size_t old_backward_capacity = loader_->buffer_->backward_capacity(); |
- |
- loader_->SetPlaybackRate(playback_rate); |
- loader_->SetBitrate(bitrate); |
- CheckBufferWindowBounds(); |
- |
- *out_forward_capacity_delta = |
- loader_->buffer_->forward_capacity() - old_forward_capacity; |
- *out_backward_capacity_delta = |
- loader_->buffer_->backward_capacity() - old_backward_capacity; |
+ // 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)); |
@@ -445,12 +414,15 @@ TEST_F(BufferedResourceLoaderTest, ReadExtendBuffer) { |
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); |
@@ -460,14 +432,12 @@ TEST_F(BufferedResourceLoaderTest, ReadExtendBuffer) { |
// 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); |
@@ -475,7 +445,6 @@ TEST_F(BufferedResourceLoaderTest, ReadExtendBuffer) { |
// 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); |
@@ -493,7 +462,6 @@ TEST_F(BufferedResourceLoaderTest, ReadExtendBuffer) { |
TEST_F(BufferedResourceLoaderTest, ReadOutsideBuffer) { |
Initialize(kHttpUrl, 10, 0x00FFFFFF); |
- loader_->UpdateDeferStrategy(BufferedResourceLoader::kThresholdDefer); |
Start(); |
PartialResponse(10, 0x00FFFFFF, 0x01000000); |
@@ -694,167 +662,92 @@ TEST_F(BufferedResourceLoaderTest, HasSingleOrigin) { |
StopWhenLoad(); |
} |
-TEST_F(BufferedResourceLoaderTest, BufferWindow_Bitrate_Set) { |
+TEST_F(BufferedResourceLoaderTest, BufferWindow_Default) { |
Initialize(kHttpUrl, -1, -1); |
Start(); |
- loader_->SetBitrate(1024 * 8); |
- CheckBufferWindowBounds(); |
+ |
+ // 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_Increase) { |
+TEST_F(BufferedResourceLoaderTest, BufferWindow_Bitrate_Unknown) { |
Initialize(kHttpUrl, -1, -1); |
Start(); |
- |
- static const int kBitrate = 1024 * 8; |
- static const float kPlaybackRate = 1.0; |
- loader_->SetBitrate(kBitrate); |
- loader_->SetPlaybackRate(kPlaybackRate); |
- |
- static const int kNewBitrate = 1024 * 1024 * 8; |
- int forward_capacity_delta; |
- int backward_capacity_delta; |
- InvokeChangeInBufferWindow(kPlaybackRate, kNewBitrate, |
- &forward_capacity_delta, &backward_capacity_delta); |
- |
- EXPECT_GT(forward_capacity_delta, 0); |
- EXPECT_GT(backward_capacity_delta, 0); |
- |
+ loader_->SetBitrate(0); |
+ CheckBufferWindowBounds(); |
StopWhenLoad(); |
} |
-TEST_F(BufferedResourceLoaderTest, BufferWindow_Bitrate_Decrease) { |
+TEST_F(BufferedResourceLoaderTest, BufferWindow_Bitrate_BelowLowerBound) { |
Initialize(kHttpUrl, -1, -1); |
Start(); |
- |
- static const int kBitrate = 1024 * 1024 * 8; |
- static const float kPlaybackRate = 1.0; |
- loader_->SetBitrate(kBitrate); |
- loader_->SetPlaybackRate(kPlaybackRate); |
- |
- static const int kNewBitrate = 1024 * 8; |
- int forward_capacity_delta; |
- int backward_capacity_delta; |
- InvokeChangeInBufferWindow(kPlaybackRate, kNewBitrate, |
- &forward_capacity_delta, &backward_capacity_delta); |
- |
- EXPECT_LT(forward_capacity_delta, 0); |
- EXPECT_LT(backward_capacity_delta, 0); |
- |
+ loader_->SetBitrate(1024 * 8); // 1 Kbps. |
+ CheckBufferWindowBounds(); |
StopWhenLoad(); |
} |
-TEST_F(BufferedResourceLoaderTest, BufferWindow_SetVeryLarge) { |
+TEST_F(BufferedResourceLoaderTest, BufferWindow_Bitrate_WithinBounds) { |
Initialize(kHttpUrl, -1, -1); |
Start(); |
- |
- loader_->SetPlaybackRate(1.0); |
- loader_->SetBitrate(100 * 1024 * 1024); |
- CheckBufferWindowBounds(); |
- |
- loader_->SetBitrate(1024 * 1024 * 8); |
- loader_->SetPlaybackRate(10000.0); |
- CheckBufferWindowBounds(); |
- |
- loader_->SetPlaybackRate(-10000.0); |
+ loader_->SetBitrate(2 * 1024 * 1024 * 8); // 2 Mbps. |
CheckBufferWindowBounds(); |
StopWhenLoad(); |
} |
-TEST_F(BufferedResourceLoaderTest, BufferWindow_SetVerySmall) { |
+TEST_F(BufferedResourceLoaderTest, BufferWindow_Bitrate_AboveUpperBound) { |
Initialize(kHttpUrl, -1, -1); |
Start(); |
- loader_->SetBitrate(1); |
+ loader_->SetBitrate(100 * 1024 * 1024 * 8); // 100 Mbps. |
CheckBufferWindowBounds(); |
- |
- // Only check for too big of buffer size in very small playback case; a buffer |
- // window of 0 is reasonable if playback is crawling. |
- loader_->SetPlaybackRate(-0.01f); |
- CheckBufferWindowIsNotTooBig(); |
- loader_->SetPlaybackRate(0.01f); |
- CheckBufferWindowIsNotTooBig(); |
StopWhenLoad(); |
} |
-TEST_F(BufferedResourceLoaderTest, BufferWindow_SetUnknownBitrate) { |
+TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_Negative) { |
Initialize(kHttpUrl, -1, -1); |
Start(); |
- loader_->SetBitrate(0); |
+ loader_->SetPlaybackRate(-10); |
CheckBufferWindowBounds(); |
StopWhenLoad(); |
} |
-TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_Increase) { |
+TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_Zero) { |
Initialize(kHttpUrl, -1, -1); |
Start(); |
- |
- static const int kBitrate = 1024 * 8; |
- static const float kPlaybackRate = 1.0; |
- loader_->SetBitrate(kBitrate); |
- loader_->SetPlaybackRate(kPlaybackRate); |
- |
- static const float kNewPlaybackRate = 1.5; |
- int forward_capacity_delta; |
- int backward_capacity_delta; |
- InvokeChangeInBufferWindow(kNewPlaybackRate, kBitrate, |
- &forward_capacity_delta, &backward_capacity_delta); |
- |
- EXPECT_GT(forward_capacity_delta, 0); |
- EXPECT_GT(backward_capacity_delta, 0); |
- |
+ loader_->SetPlaybackRate(0); |
+ CheckBufferWindowBounds(); |
StopWhenLoad(); |
} |
-TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_Decrease) { |
+TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_BelowLowerBound) { |
Initialize(kHttpUrl, -1, -1); |
Start(); |
- |
- static const int kBitrate = 1024 * 8; |
- static const float kPlaybackRate = 1.0; |
- loader_->SetBitrate(kBitrate); |
- loader_->SetPlaybackRate(kPlaybackRate); |
- |
- static const float kNewPlaybackRate = 0.5; |
- int forward_capacity_delta; |
- int backward_capacity_delta; |
- InvokeChangeInBufferWindow(kNewPlaybackRate, kBitrate, |
- &forward_capacity_delta, &backward_capacity_delta); |
- |
- EXPECT_LT(forward_capacity_delta, 0); |
- EXPECT_LT(backward_capacity_delta, 0); |
- |
+ loader_->SetPlaybackRate(0.1f); |
+ CheckBufferWindowBounds(); |
StopWhenLoad(); |
} |
-TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_Backwards) { |
+TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_WithinBounds) { |
Initialize(kHttpUrl, -1, -1); |
Start(); |
- loader_->SetPlaybackRate(-1.0); |
+ loader_->SetPlaybackRate(10); |
CheckBufferWindowBounds(); |
StopWhenLoad(); |
} |
-TEST_F(BufferedResourceLoaderTest, BufferWindow_PlayPause) { |
+TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_AboveUpperBound) { |
Initialize(kHttpUrl, -1, -1); |
Start(); |
- |
- static const int kBitrate = 1024 * 8; |
- static const float kPlaybackRate = 1.0; |
- loader_->SetBitrate(kBitrate); |
- loader_->SetPlaybackRate(kPlaybackRate); |
- |
- static const float kPausedPlaybackRate = 0.0; |
- int forward_capacity_delta; |
- int backward_capacity_delta; |
- InvokeChangeInBufferWindow(kPausedPlaybackRate, kBitrate, |
- &forward_capacity_delta, &backward_capacity_delta); |
- |
- EXPECT_EQ(forward_capacity_delta, 0); |
- EXPECT_EQ(backward_capacity_delta, 0); |
- |
+ loader_->SetPlaybackRate(100); |
+ CheckBufferWindowBounds(); |
StopWhenLoad(); |
} |
-// TODO(hclam): add unit test for defer loading. |
- |
} // namespace webkit_glue |