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

Side by Side Diff: media/filters/chunk_demuxer_unittest.cc

Issue 10388216: Fix ChunkDemuxer so appending triggers progress events. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/filters/chunk_demuxer.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "media/base/audio_decoder_config.h" 6 #include "media/base/audio_decoder_config.h"
7 #include "media/base/mock_callback.h" 7 #include "media/base/mock_callback.h"
8 #include "media/base/mock_demuxer_host.h" 8 #include "media/base/mock_demuxer_host.h"
9 #include "media/base/test_data_util.h" 9 #include "media/base/test_data_util.h"
10 #include "media/filters/chunk_demuxer.h" 10 #include "media/filters/chunk_demuxer.h"
11 #include "media/filters/chunk_demuxer_client.h" 11 #include "media/filters/chunk_demuxer_client.h"
12 #include "media/webm/cluster_builder.h" 12 #include "media/webm/cluster_builder.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 using ::testing::AnyNumber; 15 using ::testing::AnyNumber;
16 using ::testing::InSequence; 16 using ::testing::InSequence;
17 using ::testing::NotNull; 17 using ::testing::NotNull;
18 using ::testing::Return; 18 using ::testing::Return;
19 using ::testing::SaveArg;
19 using ::testing::SetArgumentPointee; 20 using ::testing::SetArgumentPointee;
20 using ::testing::_; 21 using ::testing::_;
21 22
22 namespace media { 23 namespace media {
23 24
24 static const uint8 kTracksHeader[] = { 25 static const uint8 kTracksHeader[] = {
25 0x16, 0x54, 0xAE, 0x6B, // Tracks ID 26 0x16, 0x54, 0xAE, 0x6B, // Tracks ID
26 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // tracks(size = 0) 27 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // tracks(size = 0)
27 }; 28 };
28 29
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 95
95 class ChunkDemuxerTest : public testing::Test { 96 class ChunkDemuxerTest : public testing::Test {
96 protected: 97 protected:
97 enum CodecsIndex { 98 enum CodecsIndex {
98 AUDIO, 99 AUDIO,
99 VIDEO, 100 VIDEO,
100 MAX_CODECS_INDEX 101 MAX_CODECS_INDEX
101 }; 102 };
102 103
103 ChunkDemuxerTest() 104 ChunkDemuxerTest()
104 : client_(new MockChunkDemuxerClient()), 105 : buffered_bytes_(0),
106 client_(new MockChunkDemuxerClient()),
105 demuxer_(new ChunkDemuxer(client_.get())) { 107 demuxer_(new ChunkDemuxer(client_.get())) {
106 } 108 }
107 109
108 virtual ~ChunkDemuxerTest() { 110 virtual ~ChunkDemuxerTest() {
109 ShutdownDemuxer(); 111 ShutdownDemuxer();
110 } 112 }
111 113
112 void CreateInfoTracks(bool has_audio, bool has_video, 114 void CreateInfoTracks(bool has_audio, bool has_video,
113 bool video_content_encoded, scoped_array<uint8>* buffer, 115 bool video_content_encoded, scoped_array<uint8>* buffer,
114 int* size) { 116 int* size) {
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 176
175 ChunkDemuxer::Status AddId() { 177 ChunkDemuxer::Status AddId() {
176 std::vector<std::string> codecs(2); 178 std::vector<std::string> codecs(2);
177 codecs[0] = "vp8"; 179 codecs[0] = "vp8";
178 codecs[1] = "vorbis"; 180 codecs[1] = "vorbis";
179 return demuxer_->AddId(kSourceId, "video/webm", codecs); 181 return demuxer_->AddId(kSourceId, "video/webm", codecs);
180 } 182 }
181 183
182 bool AppendData(const uint8* data, size_t length) { 184 bool AppendData(const uint8* data, size_t length) {
183 CHECK(length); 185 CHECK(length);
184 EXPECT_CALL(host_, SetBufferedBytes(_)).Times(AnyNumber()); 186 EXPECT_CALL(host_, SetBufferedBytes(_))
187 .Times(AnyNumber())
188 .WillRepeatedly(SaveArg<0>(&buffered_bytes_));
185 EXPECT_CALL(host_, SetNetworkActivity(true)) 189 EXPECT_CALL(host_, SetNetworkActivity(true))
186 .Times(AnyNumber()); 190 .Times(AnyNumber());
187 return demuxer_->AppendData(kSourceId, data, length); 191 return demuxer_->AppendData(kSourceId, data, length);
188 } 192 }
189 193
190 bool AppendDataInPieces(const uint8* data, size_t length) { 194 bool AppendDataInPieces(const uint8* data, size_t length) {
191 return AppendDataInPieces(data, length, 7); 195 return AppendDataInPieces(data, length, 7);
192 } 196 }
193 197
194 bool AppendDataInPieces(const uint8* data, size_t length, size_t piece_size) { 198 bool AppendDataInPieces(const uint8* data, size_t length, size_t piece_size) {
195 const uint8* start = data; 199 const uint8* start = data;
196 const uint8* end = data + length; 200 const uint8* end = data + length;
197 while (start < end) { 201 while (start < end) {
202 int64 old_buffered_bytes = buffered_bytes_;
198 size_t append_size = std::min(piece_size, 203 size_t append_size = std::min(piece_size,
199 static_cast<size_t>(end - start)); 204 static_cast<size_t>(end - start));
200 if (!AppendData(start, append_size)) 205 if (!AppendData(start, append_size))
201 return false; 206 return false;
202 start += append_size; 207 start += append_size;
208
209 EXPECT_GT(buffered_bytes_, old_buffered_bytes);
203 } 210 }
204 return true; 211 return true;
205 } 212 }
206 213
207 bool AppendInfoTracks(bool has_audio, bool has_video, 214 bool AppendInfoTracks(bool has_audio, bool has_video,
208 bool video_content_encoded) { 215 bool video_content_encoded) {
209 scoped_array<uint8> info_tracks; 216 scoped_array<uint8> info_tracks;
210 int info_tracks_size = 0; 217 int info_tracks_size = 0;
211 CreateInfoTracks(has_audio, has_video, video_content_encoded, 218 CreateInfoTracks(has_audio, has_video, video_content_encoded,
212 &info_tracks, &info_tracks_size); 219 &info_tracks, &info_tracks_size);
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 &video_read_done)); 405 &video_read_done));
399 406
400 EXPECT_TRUE(video_read_done); 407 EXPECT_TRUE(video_read_done);
401 } 408 }
402 } 409 }
403 410
404 return true; 411 return true;
405 } 412 }
406 413
407 MockDemuxerHost host_; 414 MockDemuxerHost host_;
415 int64 buffered_bytes_;
408 416
409 scoped_ptr<MockChunkDemuxerClient> client_; 417 scoped_ptr<MockChunkDemuxerClient> client_;
410 scoped_refptr<ChunkDemuxer> demuxer_; 418 scoped_refptr<ChunkDemuxer> demuxer_;
411 419
412 private: 420 private:
413 DISALLOW_COPY_AND_ASSIGN(ChunkDemuxerTest); 421 DISALLOW_COPY_AND_ASSIGN(ChunkDemuxerTest);
414 }; 422 };
415 423
416 TEST_F(ChunkDemuxerTest, TestInit) { 424 TEST_F(ChunkDemuxerTest, TestInit) {
417 // Test no streams, audio-only, video-only, and audio & video scenarios, 425 // Test no streams, audio-only, video-only, and audio & video scenarios,
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 1072
1065 std::vector<std::string> codecs(1); 1073 std::vector<std::string> codecs(1);
1066 codecs[0] = "vp8"; 1074 codecs[0] = "vp8";
1067 ASSERT_EQ(demuxer_->AddId(kSourceId, "video/webm", codecs), 1075 ASSERT_EQ(demuxer_->AddId(kSourceId, "video/webm", codecs),
1068 ChunkDemuxer::kOk); 1076 ChunkDemuxer::kOk);
1069 1077
1070 ASSERT_TRUE(AppendInfoTracks(true, true, false)); 1078 ASSERT_TRUE(AppendInfoTracks(true, true, false));
1071 } 1079 }
1072 1080
1073 } // namespace media 1081 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/chunk_demuxer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698