| Index: media/blink/multibuffer_unittest.cc
|
| diff --git a/media/blink/multibuffer_unittest.cc b/media/blink/multibuffer_unittest.cc
|
| index 96c8c075fe73ba9add74bf931b52e0ac62220645..4a2a64bccf432b8a5595f872a9e5cb2addfc7b14 100644
|
| --- a/media/blink/multibuffer_unittest.cc
|
| +++ b/media/blink/multibuffer_unittest.cc
|
| @@ -18,27 +18,32 @@ const int kBlockSizeShift = 8;
|
| const size_t kBlockSize = 1UL << kBlockSizeShift;
|
|
|
| namespace media {
|
| -class TestMultiBufferDataProvider;
|
|
|
| -std::vector<TestMultiBufferDataProvider*> writers;
|
| +class FakeMultiBufferDataProvider;
|
|
|
| -class TestMultiBufferDataProvider : public media::MultiBuffer::DataProvider {
|
| +namespace {
|
| +std::vector<FakeMultiBufferDataProvider*> writers;
|
| +} // namespace
|
| +
|
| +class FakeMultiBufferDataProvider : public MultiBuffer::DataProvider {
|
| public:
|
| - TestMultiBufferDataProvider(MultiBufferBlockId pos,
|
| + FakeMultiBufferDataProvider(MultiBufferBlockId pos,
|
| size_t file_size,
|
| int max_blocks_after_defer,
|
| bool must_read_whole_file,
|
| - media::TestRandom* rnd)
|
| + MultiBuffer* multibuffer,
|
| + TestRandom* rnd)
|
| : pos_(pos),
|
| blocks_until_deferred_(1 << 30),
|
| max_blocks_after_defer_(max_blocks_after_defer),
|
| file_size_(file_size),
|
| must_read_whole_file_(must_read_whole_file),
|
| + multibuffer_(multibuffer),
|
| rnd_(rnd) {
|
| writers.push_back(this);
|
| }
|
|
|
| - ~TestMultiBufferDataProvider() override {
|
| + ~FakeMultiBufferDataProvider() override {
|
| if (must_read_whole_file_) {
|
| CHECK_GE(pos_ * kBlockSize, file_size_);
|
| }
|
| @@ -64,11 +69,6 @@ class TestMultiBufferDataProvider : public media::MultiBuffer::DataProvider {
|
| return ret;
|
| }
|
|
|
| - void SetAvailableCallback(const base::Closure& cb) override {
|
| - DCHECK(!Available());
|
| - cb_ = cb;
|
| - }
|
| -
|
| void SetDeferred(bool deferred) override {
|
| if (deferred) {
|
| if (max_blocks_after_defer_ > 0) {
|
| @@ -89,7 +89,7 @@ class TestMultiBufferDataProvider : public media::MultiBuffer::DataProvider {
|
| --blocks_until_deferred_;
|
|
|
| bool ret = true;
|
| - scoped_refptr<media::DataBuffer> block = new media::DataBuffer(kBlockSize);
|
| + scoped_refptr<DataBuffer> block = new DataBuffer(kBlockSize);
|
| size_t x = 0;
|
| size_t byte_pos = (fifo_.size() + pos_) * kBlockSize;
|
| for (x = 0; x < kBlockSize; x++, byte_pos++) {
|
| @@ -104,28 +104,27 @@ class TestMultiBufferDataProvider : public media::MultiBuffer::DataProvider {
|
| fifo_.push_back(DataBuffer::CreateEOSBuffer());
|
| ret = false;
|
| }
|
| - cb_.Run();
|
| + multibuffer_->OnDataProviderEvent(this);
|
| return ret;
|
| }
|
|
|
| private:
|
| - std::deque<scoped_refptr<media::DataBuffer>> fifo_;
|
| + std::deque<scoped_refptr<DataBuffer>> fifo_;
|
| MultiBufferBlockId pos_;
|
| int32_t blocks_until_deferred_;
|
| int32_t max_blocks_after_defer_;
|
| size_t file_size_;
|
| bool must_read_whole_file_;
|
| - base::Closure cb_;
|
| - media::TestRandom* rnd_;
|
| + MultiBuffer* multibuffer_;
|
| + TestRandom* rnd_;
|
| };
|
|
|
| -class TestMultiBuffer : public media::MultiBuffer {
|
| +class TestMultiBuffer : public MultiBuffer {
|
| public:
|
| - explicit TestMultiBuffer(
|
| - int32_t shift,
|
| - const scoped_refptr<media::MultiBuffer::GlobalLRU>& lru,
|
| - media::TestRandom* rnd)
|
| - : media::MultiBuffer(shift, lru),
|
| + explicit TestMultiBuffer(int32_t shift,
|
| + const scoped_refptr<MultiBuffer::GlobalLRU>& lru,
|
| + TestRandom* rnd)
|
| + : MultiBuffer(shift, lru),
|
| range_supported_(false),
|
| create_ok_(true),
|
| max_writers_(10000),
|
| @@ -185,12 +184,14 @@ class TestMultiBuffer : public media::MultiBuffer {
|
| void SetRangeSupported(bool supported) { range_supported_ = supported; }
|
|
|
| protected:
|
| - DataProvider* CreateWriter(const MultiBufferBlockId& pos) override {
|
| + scoped_ptr<DataProvider> CreateWriter(
|
| + const MultiBufferBlockId& pos) override {
|
| DCHECK(create_ok_);
|
| writers_created_++;
|
| CHECK_LT(writers.size(), max_writers_);
|
| - return new TestMultiBufferDataProvider(
|
| - pos, file_size_, max_blocks_after_defer_, must_read_whole_file_, rnd_);
|
| + return scoped_ptr<DataProvider>(new FakeMultiBufferDataProvider(
|
| + pos, file_size_, max_blocks_after_defer_, must_read_whole_file_, this,
|
| + rnd_));
|
| }
|
| void Prune(size_t max_to_free) override {
|
| // Prune should not cause additional writers to be spawned.
|
| @@ -209,35 +210,34 @@ class TestMultiBuffer : public media::MultiBuffer {
|
| int32_t max_blocks_after_defer_;
|
| bool must_read_whole_file_;
|
| int32_t writers_created_;
|
| - media::TestRandom* rnd_;
|
| + TestRandom* rnd_;
|
| };
|
| -}
|
|
|
| class MultiBufferTest : public testing::Test {
|
| public:
|
| MultiBufferTest()
|
| : rnd_(42),
|
| - lru_(new media::MultiBuffer::GlobalLRU()),
|
| + lru_(new MultiBuffer::GlobalLRU()),
|
| multibuffer_(kBlockSizeShift, lru_, &rnd_) {}
|
|
|
| void Advance() {
|
| - CHECK(media::writers.size());
|
| - media::writers[rnd_.Rand() % media::writers.size()]->Advance();
|
| + CHECK(writers.size());
|
| + writers[rnd_.Rand() % writers.size()]->Advance();
|
| }
|
|
|
| bool AdvanceAll() {
|
| bool advanced = false;
|
| - for (size_t i = 0; i < media::writers.size(); i++) {
|
| - advanced |= media::writers[i]->Advance();
|
| + for (size_t i = 0; i < writers.size(); i++) {
|
| + advanced |= writers[i]->Advance();
|
| }
|
| multibuffer_.CheckLRUState();
|
| return advanced;
|
| }
|
|
|
| protected:
|
| - media::TestRandom rnd_;
|
| - scoped_refptr<media::MultiBuffer::GlobalLRU> lru_;
|
| - media::TestMultiBuffer multibuffer_;
|
| + TestRandom rnd_;
|
| + scoped_refptr<MultiBuffer::GlobalLRU> lru_;
|
| + TestMultiBuffer multibuffer_;
|
| base::MessageLoop message_loop_;
|
| };
|
|
|
| @@ -247,8 +247,8 @@ TEST_F(MultiBufferTest, ReadAll) {
|
| size_t end = 10000;
|
| multibuffer_.SetFileSize(10000);
|
| multibuffer_.SetMustReadWholeFile(true);
|
| - media::MultiBufferReader reader(&multibuffer_, pos, end,
|
| - base::Callback<void(int64_t, int64_t)>());
|
| + MultiBufferReader reader(&multibuffer_, pos, end,
|
| + base::Callback<void(int64_t, int64_t)>());
|
| reader.SetMaxBuffer(2000, 5000);
|
| reader.SetPreload(1000, 1000);
|
| while (pos < end) {
|
| @@ -275,8 +275,8 @@ TEST_F(MultiBufferTest, ReadAllAdvanceFirst) {
|
| size_t end = 10000;
|
| multibuffer_.SetFileSize(10000);
|
| multibuffer_.SetMustReadWholeFile(true);
|
| - media::MultiBufferReader reader(&multibuffer_, pos, end,
|
| - base::Callback<void(int64_t, int64_t)>());
|
| + MultiBufferReader reader(&multibuffer_, pos, end,
|
| + base::Callback<void(int64_t, int64_t)>());
|
| reader.SetMaxBuffer(2000, 5000);
|
| reader.SetPreload(1000, 1000);
|
| while (pos < end) {
|
| @@ -305,8 +305,8 @@ TEST_F(MultiBufferTest, ReadAllAdvanceFirst_NeverDefer) {
|
| multibuffer_.SetFileSize(10000);
|
| multibuffer_.SetMaxBlocksAfterDefer(-10000);
|
| multibuffer_.SetRangeSupported(true);
|
| - media::MultiBufferReader reader(&multibuffer_, pos, end,
|
| - base::Callback<void(int64_t, int64_t)>());
|
| + MultiBufferReader reader(&multibuffer_, pos, end,
|
| + base::Callback<void(int64_t, int64_t)>());
|
| reader.SetMaxBuffer(2000, 5000);
|
| reader.SetPreload(1000, 1000);
|
| while (pos < end) {
|
| @@ -336,8 +336,8 @@ TEST_F(MultiBufferTest, ReadAllAdvanceFirst_NeverDefer2) {
|
| multibuffer_.SetFileSize(10000);
|
| multibuffer_.SetMustReadWholeFile(true);
|
| multibuffer_.SetMaxBlocksAfterDefer(-10000);
|
| - media::MultiBufferReader reader(&multibuffer_, pos, end,
|
| - base::Callback<void(int64_t, int64_t)>());
|
| + MultiBufferReader reader(&multibuffer_, pos, end,
|
| + base::Callback<void(int64_t, int64_t)>());
|
| reader.SetMaxBuffer(2000, 5000);
|
| reader.SetPreload(1000, 1000);
|
| while (pos < end) {
|
| @@ -366,8 +366,8 @@ TEST_F(MultiBufferTest, LRUTest) {
|
| size_t pos = 0;
|
| size_t end = 10000;
|
| multibuffer_.SetFileSize(10000);
|
| - media::MultiBufferReader reader(&multibuffer_, pos, end,
|
| - base::Callback<void(int64_t, int64_t)>());
|
| + MultiBufferReader reader(&multibuffer_, pos, end,
|
| + base::Callback<void(int64_t, int64_t)>());
|
| reader.SetPreload(10000, 10000);
|
| // Note, no pinning, all data should end up in LRU.
|
| EXPECT_EQ(current_size, lru_->Size());
|
| @@ -390,8 +390,8 @@ class ReadHelper {
|
| public:
|
| ReadHelper(size_t end,
|
| size_t max_read_size,
|
| - media::MultiBuffer* multibuffer,
|
| - media::TestRandom* rnd)
|
| + MultiBuffer* multibuffer,
|
| + TestRandom* rnd)
|
| : pos_(0),
|
| end_(end),
|
| max_read_size_(max_read_size),
|
| @@ -446,8 +446,8 @@ class ReadHelper {
|
| int64_t end_;
|
| int64_t max_read_size_;
|
| int64_t read_size_;
|
| - media::TestRandom* rnd_;
|
| - media::MultiBufferReader reader_;
|
| + TestRandom* rnd_;
|
| + MultiBufferReader reader_;
|
| };
|
|
|
| TEST_F(MultiBufferTest, RandomTest) {
|
| @@ -462,7 +462,7 @@ TEST_F(MultiBufferTest, RandomTest) {
|
| for (int i = 0; i < 100; i++) {
|
| for (int j = 0; j < 100; j++) {
|
| if (rnd_.Rand() & 1) {
|
| - if (!media::writers.empty())
|
| + if (!writers.empty())
|
| Advance();
|
| } else {
|
| size_t j = rnd_.Rand() % read_helpers.size();
|
| @@ -493,7 +493,7 @@ TEST_F(MultiBufferTest, RandomTest_RangeSupported) {
|
| for (int i = 0; i < 100; i++) {
|
| for (int j = 0; j < 100; j++) {
|
| if (rnd_.Rand() & 1) {
|
| - if (!media::writers.empty())
|
| + if (!writers.empty())
|
| Advance();
|
| } else {
|
| size_t j = rnd_.Rand() % read_helpers.size();
|
| @@ -510,3 +510,5 @@ TEST_F(MultiBufferTest, RandomTest_RangeSupported) {
|
| read_helpers.pop_back();
|
| }
|
| }
|
| +
|
| +} // namespace media
|
|
|