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

Unified Diff: webkit/media/buffered_resource_loader_unittest.cc

Issue 10692106: Split BufferedResourceLoader's network callback into separate loading state and progress callbacks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: trying again 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/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/media/buffered_resource_loader_unittest.cc
diff --git a/webkit/media/buffered_resource_loader_unittest.cc b/webkit/media/buffered_resource_loader_unittest.cc
index 9e62842451959e706ea6b9224838335ca1b604e6..b50dc42cf85395bb80923f443bf20e486da8f48c 100644
--- a/webkit/media/buffered_resource_loader_unittest.cc
+++ b/webkit/media/buffered_resource_loader_unittest.cc
@@ -24,6 +24,7 @@
#include "webkit/mocks/mock_webframeclient.h"
#include "webkit/mocks/mock_weburlloader.h"
+using ::testing::_;
using ::testing::InSequence;
using ::testing::Return;
using ::testing::Truly;
@@ -104,10 +105,14 @@ class BufferedResourceLoaderTest : public testing::Test {
InSequence s;
EXPECT_CALL(*url_loader_, loadAsynchronously(Truly(CorrectAcceptEncoding),
loader_.get()));
+
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading));
loader_->Start(
base::Bind(&BufferedResourceLoaderTest::StartCallback,
base::Unretained(this)),
- base::Bind(&BufferedResourceLoaderTest::NetworkCallback,
+ base::Bind(&BufferedResourceLoaderTest::LoadingCallback,
+ base::Unretained(this)),
+ base::Bind(&BufferedResourceLoaderTest::ProgressCallback,
base::Unretained(this)),
view_->mainFrame());
}
@@ -203,8 +208,7 @@ class BufferedResourceLoaderTest : public testing::Test {
// Helper method to write to |loader_| from |data_|.
void WriteLoader(int position, int size) {
- EXPECT_CALL(*this, NetworkCallback())
- .RetiresOnSaturation();
+ EXPECT_CALL(*this, ProgressCallback(position + size - 1));
loader_->didReceiveData(url_loader_,
reinterpret_cast<char*>(data_ + position),
size,
@@ -212,8 +216,7 @@ class BufferedResourceLoaderTest : public testing::Test {
}
void WriteData(int size) {
- EXPECT_CALL(*this, NetworkCallback())
- .RetiresOnSaturation();
+ EXPECT_CALL(*this, ProgressCallback(_));
scoped_array<char> data(new char[size]);
loader_->didReceiveData(url_loader_, data.get(), size, size);
@@ -224,9 +227,9 @@ class BufferedResourceLoaderTest : public testing::Test {
int capacity = loader_->buffer_.forward_capacity();
CHECK_LT(buffered, capacity);
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(
+ BufferedResourceLoader::kLoadingDeferred));
WriteData(capacity - buffered);
- ConfirmLoaderDeferredState(true);
}
// Helper method to read from |loader_|.
@@ -268,10 +271,6 @@ class BufferedResourceLoaderTest : public testing::Test {
EXPECT_EQ(loader_->buffer_.forward_capacity(), expected_forward_capacity);
}
- void ConfirmLoaderDeferredState(bool expectedVal) {
- EXPECT_EQ(loader_->active_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.
@@ -287,7 +286,8 @@ class BufferedResourceLoaderTest : public testing::Test {
MOCK_METHOD1(StartCallback, void(BufferedResourceLoader::Status));
MOCK_METHOD2(ReadCallback, void(BufferedResourceLoader::Status, int));
- MOCK_METHOD0(NetworkCallback, void());
+ MOCK_METHOD1(LoadingCallback, void(BufferedResourceLoader::LoadingState));
+ MOCK_METHOD1(ProgressCallback, void(int64));
// Accessors for private variables on |loader_|.
int forward_bytes() { return loader_->buffer_.forward_bytes(); }
@@ -429,7 +429,7 @@ TEST_F(BufferedResourceLoaderTest, BufferAndRead) {
ReadLoader(9, 10, buffer);
// Response has completed.
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFinished));
loader_->didFinishLoading(url_loader_, 0);
// Try to read 10 from position 25 will just return with 5 bytes.
@@ -453,17 +453,16 @@ TEST_F(BufferedResourceLoaderTest, ReadExtendBuffer) {
Start();
PartialResponse(10, 0x014FFFFFF, 0x015000000);
- // 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.
+ // gets reset after reading.
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred));
WriteLoader(10, 20);
+
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 20));
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading));
ReadLoader(10, 20, buffer);
VerifyBuffer(buffer, 10, 20);
@@ -472,7 +471,6 @@ TEST_F(BufferedResourceLoaderTest, ReadExtendBuffer) {
// Make and outstanding read request larger than forward capacity. Ensure
// forward capacity gets extended.
ReadLoader(30, 20, buffer);
-
ConfirmLoaderBufferForwardCapacity(20);
// Fulfill outstanding request. Ensure forward capacity gets reset.
@@ -523,7 +521,7 @@ TEST_F(BufferedResourceLoaderTest, ReadOutsideBuffer) {
// The following call cannot be fulfilled now.
ReadLoader(25, 10, buffer);
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFinished));
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 5));
loader_->didFinishLoading(url_loader_, 0);
}
@@ -538,7 +536,7 @@ TEST_F(BufferedResourceLoaderTest, RequestFailedWhenRead) {
// We should convert any error we receive to BufferedResourceLoader::kFailed.
ReadLoader(10, 10, buffer);
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFailed));
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kFailed, 0));
WebURLError error;
error.reason = net::ERR_TIMED_OUT;
@@ -562,7 +560,7 @@ TEST_F(BufferedResourceLoaderTest, RequestFailedWithNoPendingReads) {
WebURLError error;
error.reason = net::ERR_TIMED_OUT;
error.isCancellation = false;
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFailed));
loader_->didFail(url_loader_, error);
// Now we should immediately fail any read even if we have data buffered.
@@ -580,7 +578,7 @@ TEST_F(BufferedResourceLoaderTest, RequestCancelledWhenRead) {
// We should convert any error we receive to BufferedResourceLoader::kFailed.
ReadLoader(10, 10, buffer);
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFailed));
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kFailed, 0));
WebURLError error;
error.reason = 0;
@@ -601,7 +599,6 @@ TEST_F(BufferedResourceLoaderTest, NeverDeferStrategy) {
// Read past the buffer size; should not defer regardless.
WriteLoader(10, 10);
WriteLoader(20, 50);
- ConfirmLoaderDeferredState(false);
// Should move past window.
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kCacheMiss, 0));
@@ -625,44 +622,36 @@ TEST_F(BufferedResourceLoaderTest, ReadThenDeferStrategy) {
// Receive almost enough data to cover, shouldn't defer.
WriteLoader(10, 9);
- ConfirmLoaderDeferredState(false);
// As soon as we have received enough data to fulfill the read, defer.
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred));
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10));
WriteLoader(19, 1);
- ConfirmLoaderDeferredState(true);
VerifyBuffer(buffer, 10, 10);
// Read again which should disable deferring since there should be nothing
// left in our internal buffer.
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading));
ReadLoader(20, 10, buffer);
- ConfirmLoaderDeferredState(false);
-
// Over-fulfill requested bytes, then deferring should be enabled again.
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred));
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10));
WriteLoader(20, 40);
- ConfirmLoaderDeferredState(true);
VerifyBuffer(buffer, 20, 10);
// Read far ahead, which should disable deferring. In this case we still have
// bytes in our internal buffer.
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading));
ReadLoader(80, 10, buffer);
- ConfirmLoaderDeferredState(false);
-
// Fulfill requested bytes, then deferring should be enabled again.
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred));
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10));
WriteLoader(60, 40);
- ConfirmLoaderDeferredState(true);
VerifyBuffer(buffer, 80, 10);
StopWhenLoad();
@@ -678,38 +667,29 @@ TEST_F(BufferedResourceLoaderTest, ThresholdDeferStrategy) {
uint8 buffer[10];
InSequence s;
- // Initial expectation: we're not deferring.
- ConfirmLoaderDeferredState(false);
-
// Write half of threshold: keep not deferring.
WriteData(5);
- ConfirmLoaderDeferredState(false);
// Write rest of space until threshold: start deferring.
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred));
WriteData(5);
- ConfirmLoaderDeferredState(true);
// Read a little from the buffer: keep deferring.
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 1));
ReadLoader(10, 1, buffer);
- ConfirmLoaderDeferredState(true);
// Read a little more and go under threshold: stop deferring.
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 4));
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading));
ReadLoader(12, 4, buffer);
- ConfirmLoaderDeferredState(false);
// Write rest of space until threshold: start deferring.
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingDeferred));
WriteData(6);
- ConfirmLoaderDeferredState(true);
// Read a little from the buffer: keep deferring.
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 1));
ReadLoader(16, 1, buffer);
- ConfirmLoaderDeferredState(true);
StopWhenLoad();
}
@@ -729,7 +709,6 @@ TEST_F(BufferedResourceLoaderTest, Tricky_ReadForwardsPastBuffered) {
ReadLoader(10, 1, buffer);
ConfirmBufferState(1, 10, 9, 10);
ConfirmLoaderOffsets(11, 0, 0);
- ConfirmLoaderDeferredState(true);
// *** TRICKY BUSINESS, PT. I ***
// Read past buffered: stop deferring.
@@ -743,23 +722,19 @@ TEST_F(BufferedResourceLoaderTest, Tricky_ReadForwardsPastBuffered) {
// AFTER
// offset=24 [__________]
//
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading));
ReadLoader(20, 4, buffer);
- ConfirmLoaderDeferredState(false);
// Write a little, make sure we didn't start deferring.
WriteData(2);
- ConfirmLoaderDeferredState(false);
// Write the rest, read should complete.
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 4));
WriteData(2);
- ConfirmLoaderDeferredState(false);
// POSTCONDITION
ConfirmBufferState(4, 10, 0, 10);
ConfirmLoaderOffsets(24, 0, 0);
- ConfirmLoaderDeferredState(false);
StopWhenLoad();
}
@@ -777,7 +752,6 @@ TEST_F(BufferedResourceLoaderTest, Tricky_ReadBackwardsPastBuffered) {
WriteUntilThreshold();
ConfirmBufferState(0, 10, 10, 10);
ConfirmLoaderOffsets(10, 0, 0);
- ConfirmLoaderDeferredState(true);
// *** TRICKY BUSINESS, PT. II ***
// Read backwards a little too much: cache miss.
@@ -794,7 +768,6 @@ TEST_F(BufferedResourceLoaderTest, Tricky_ReadBackwardsPastBuffered) {
// POSTCONDITION
ConfirmBufferState(0, 10, 10, 10);
ConfirmLoaderOffsets(10, 0, 0);
- ConfirmLoaderDeferredState(true);
StopWhenLoad();
}
@@ -812,7 +785,6 @@ TEST_F(BufferedResourceLoaderTest, Tricky_SmallReadWithinThreshold) {
WriteUntilThreshold();
ConfirmBufferState(0, 10, 10, 10);
ConfirmLoaderOffsets(10, 0, 0);
- ConfirmLoaderDeferredState(true);
// *** TRICKY BUSINESS, PT. III ***
// Read past forward capacity but within threshold: stop deferring.
@@ -830,24 +802,20 @@ TEST_F(BufferedResourceLoaderTest, Tricky_SmallReadWithinThreshold) {
// AFTER
// offset=28 [__________]
//
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading));
ReadLoader(24, 4, buffer);
ConfirmLoaderOffsets(20, 4, 8);
- ConfirmLoaderDeferredState(false);
// Write a little, make sure we didn't start deferring.
WriteData(4);
- ConfirmLoaderDeferredState(false);
// Write the rest, read should complete.
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 4));
WriteData(4);
- ConfirmLoaderDeferredState(false);
// POSTCONDITION
ConfirmBufferState(8, 10, 0, 10);
ConfirmLoaderOffsets(28, 0, 0);
- ConfirmLoaderDeferredState(false);
StopWhenLoad();
}
@@ -865,7 +833,6 @@ TEST_F(BufferedResourceLoaderTest, Tricky_LargeReadWithinThreshold) {
WriteUntilThreshold();
ConfirmBufferState(0, 10, 10, 10);
ConfirmLoaderOffsets(10, 0, 0);
- ConfirmLoaderDeferredState(true);
// *** TRICKY BUSINESS, PT. IV ***
// Read a large amount past forward capacity but within
@@ -888,26 +855,22 @@ TEST_F(BufferedResourceLoaderTest, Tricky_LargeReadWithinThreshold) {
// AFTER
// offset=36 [__________]
//
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading));
ReadLoader(24, 12, buffer);
ConfirmLoaderOffsets(20, 4, 16);
ConfirmBufferState(10, 10, 0, 16);
- ConfirmLoaderDeferredState(false);
// Write a little, make sure we didn't start deferring.
WriteData(10);
- ConfirmLoaderDeferredState(false);
// Write the rest, read should complete and capacity should go back to normal.
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 12));
WriteData(6);
ConfirmLoaderBufferForwardCapacity(10);
- ConfirmLoaderDeferredState(false);
// POSTCONDITION
ConfirmBufferState(6, 10, 0, 10);
ConfirmLoaderOffsets(36, 0, 0);
- ConfirmLoaderDeferredState(false);
StopWhenLoad();
}
@@ -924,12 +887,11 @@ TEST_F(BufferedResourceLoaderTest, Tricky_LargeReadBackwards) {
// PRECONDITION
WriteUntilThreshold();
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 10));
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading));
ReadLoader(10, 10, buffer);
WriteUntilThreshold();
ConfirmBufferState(10, 10, 10, 10);
ConfirmLoaderOffsets(20, 0, 0);
- ConfirmLoaderDeferredState(true);
// *** TRICKY BUSINESS, PT. V ***
// Read a large amount that involves backwards data: stop deferring.
@@ -951,26 +913,22 @@ TEST_F(BufferedResourceLoaderTest, Tricky_LargeReadBackwards) {
// AFTER
// offset=34 [xxxxxxxxxx|__________]
//
- EXPECT_CALL(*this, NetworkCallback());
+ EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoading));
ReadLoader(16, 18, buffer);
ConfirmLoaderOffsets(16, 0, 18);
ConfirmBufferState(6, 10, 14, 18);
- ConfirmLoaderDeferredState(false);
// Write a little, make sure we didn't start deferring.
WriteData(2);
- ConfirmLoaderDeferredState(false);
// Write the rest, read should complete and capacity should go back to normal.
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 18));
WriteData(2);
ConfirmLoaderBufferForwardCapacity(10);
- ConfirmLoaderDeferredState(false);
// POSTCONDITION
ConfirmBufferState(4, 10, 0, 10);
ConfirmLoaderOffsets(34, 0, 0);
- ConfirmLoaderDeferredState(false);
StopWhenLoad();
}
@@ -991,7 +949,6 @@ TEST_F(BufferedResourceLoaderTest, Tricky_ReadPastThreshold) {
WriteUntilThreshold();
ConfirmBufferState(0, 10, 10, 10);
ConfirmLoaderOffsets(10, 0, 0);
- ConfirmLoaderDeferredState(true);
// *** TRICKY BUSINESS, PT. VI ***
// Read past the forward wait threshold: cache miss.
@@ -1008,7 +965,6 @@ TEST_F(BufferedResourceLoaderTest, Tricky_ReadPastThreshold) {
// POSTCONDITION
ConfirmBufferState(0, 10, 10, 10);
ConfirmLoaderOffsets(10, 0, 0);
- ConfirmLoaderDeferredState(true);
StopWhenLoad();
}
« no previous file with comments | « webkit/media/buffered_resource_loader.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698