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

Unified Diff: webkit/glue/media/buffered_resource_loader_unittest.cc

Issue 8224028: Numerous fixes to audio/video buffered resource loading. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: fix nits Created 9 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/glue/media/buffered_resource_loader.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « webkit/glue/media/buffered_resource_loader.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698