OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "media/filters/source_buffer_state.h" | 5 #include "media/filters/source_buffer_state.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 } | 48 } |
49 | 49 |
50 void InvokeCbAndSaveResult(const base::Callback<bool()>& cb, bool* result) { | 50 void InvokeCbAndSaveResult(const base::Callback<bool()>& cb, bool* result) { |
51 DCHECK(result); | 51 DCHECK(result); |
52 *result = cb.Run(); | 52 *result = cb.Run(); |
53 } | 53 } |
54 } | 54 } |
55 | 55 |
56 class SourceBufferStateTest : public ::testing::Test { | 56 class SourceBufferStateTest : public ::testing::Test { |
57 public: | 57 public: |
58 SourceBufferStateTest() | 58 SourceBufferStateTest() : mock_stream_parser_(nullptr) {} |
59 : media_log_(new testing::StrictMock<MockMediaLog>()), | |
60 mock_stream_parser_(nullptr) {} | |
61 | 59 |
62 std::unique_ptr<SourceBufferState> CreateSourceBufferState() { | 60 std::unique_ptr<SourceBufferState> CreateSourceBufferState() { |
63 std::unique_ptr<FrameProcessor> frame_processor = base::WrapUnique( | 61 std::unique_ptr<FrameProcessor> frame_processor = base::WrapUnique( |
64 new FrameProcessor(base::Bind(&SourceBufferStateTest::OnUpdateDuration, | 62 new FrameProcessor(base::Bind(&SourceBufferStateTest::OnUpdateDuration, |
65 base::Unretained(this)), | 63 base::Unretained(this)), |
66 media_log_)); | 64 &media_log_)); |
67 mock_stream_parser_ = new testing::StrictMock<MockStreamParser>(); | 65 mock_stream_parser_ = new testing::StrictMock<MockStreamParser>(); |
68 return base::WrapUnique(new SourceBufferState( | 66 return base::WrapUnique(new SourceBufferState( |
69 base::WrapUnique(mock_stream_parser_), std::move(frame_processor), | 67 base::WrapUnique(mock_stream_parser_), std::move(frame_processor), |
70 base::Bind(&SourceBufferStateTest::CreateDemuxerStream, | 68 base::Bind(&SourceBufferStateTest::CreateDemuxerStream, |
71 base::Unretained(this)), | 69 base::Unretained(this)), |
72 media_log_)); | 70 &media_log_)); |
73 } | 71 } |
74 | 72 |
75 std::unique_ptr<SourceBufferState> CreateAndInitSourceBufferState( | 73 std::unique_ptr<SourceBufferState> CreateAndInitSourceBufferState( |
76 const std::string& expected_codecs) { | 74 const std::string& expected_codecs) { |
77 std::unique_ptr<SourceBufferState> sbs = CreateSourceBufferState(); | 75 std::unique_ptr<SourceBufferState> sbs = CreateSourceBufferState(); |
78 EXPECT_CALL(*mock_stream_parser_, Init(_, _, _, _, _, _, _, _)) | 76 EXPECT_CALL(*mock_stream_parser_, Init(_, _, _, _, _, _, _, _)) |
79 .WillOnce(SaveArg<1>(&new_config_cb_)); | 77 .WillOnce(SaveArg<1>(&new_config_cb_)); |
80 sbs->Init(base::Bind(&SourceBufferStateTest::SourceInitDone, | 78 sbs->Init(base::Bind(&SourceBufferStateTest::SourceInitDone, |
81 base::Unretained(this)), | 79 base::Unretained(this)), |
82 expected_codecs, | 80 expected_codecs, |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 MediaTracksUpdatedMock(tracks); | 123 MediaTracksUpdatedMock(tracks); |
126 } | 124 } |
127 | 125 |
128 ChunkDemuxerStream* CreateDemuxerStream(DemuxerStream::Type type) { | 126 ChunkDemuxerStream* CreateDemuxerStream(DemuxerStream::Type type) { |
129 static unsigned track_id = 0; | 127 static unsigned track_id = 0; |
130 demuxer_streams_.push_back(base::WrapUnique( | 128 demuxer_streams_.push_back(base::WrapUnique( |
131 new ChunkDemuxerStream(type, base::UintToString(++track_id)))); | 129 new ChunkDemuxerStream(type, base::UintToString(++track_id)))); |
132 return demuxer_streams_.back().get(); | 130 return demuxer_streams_.back().get(); |
133 } | 131 } |
134 | 132 |
135 scoped_refptr<testing::StrictMock<MockMediaLog>> media_log_; | 133 testing::StrictMock<MockMediaLog> media_log_; |
136 std::vector<std::unique_ptr<ChunkDemuxerStream>> demuxer_streams_; | 134 std::vector<std::unique_ptr<ChunkDemuxerStream>> demuxer_streams_; |
137 MockStreamParser* mock_stream_parser_; | 135 MockStreamParser* mock_stream_parser_; |
138 StreamParser::NewConfigCB new_config_cb_; | 136 StreamParser::NewConfigCB new_config_cb_; |
139 }; | 137 }; |
140 | 138 |
141 TEST_F(SourceBufferStateTest, InitSingleAudioTrack) { | 139 TEST_F(SourceBufferStateTest, InitSingleAudioTrack) { |
142 std::unique_ptr<SourceBufferState> sbs = | 140 std::unique_ptr<SourceBufferState> sbs = |
143 CreateAndInitSourceBufferState("vorbis"); | 141 CreateAndInitSourceBufferState("vorbis"); |
144 | 142 |
145 std::unique_ptr<MediaTracks> tracks(new MediaTracks()); | 143 std::unique_ptr<MediaTracks> tracks(new MediaTracks()); |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
325 | 323 |
326 // Track ids are swapped in the second init segment. | 324 // Track ids are swapped in the second init segment. |
327 std::unique_ptr<MediaTracks> tracks2(new MediaTracks()); | 325 std::unique_ptr<MediaTracks> tracks2(new MediaTracks()); |
328 AddAudioTrack(tracks2, kCodecOpus, 2); | 326 AddAudioTrack(tracks2, kCodecOpus, 2); |
329 AddVideoTrack(tracks2, kCodecVP9, 1); | 327 AddVideoTrack(tracks2, kCodecVP9, 1); |
330 EXPECT_CALL(*this, MediaTracksUpdatedMock(_)); | 328 EXPECT_CALL(*this, MediaTracksUpdatedMock(_)); |
331 AppendDataAndReportTracks(sbs, std::move(tracks2)); | 329 AppendDataAndReportTracks(sbs, std::move(tracks2)); |
332 } | 330 } |
333 | 331 |
334 } // namespace media | 332 } // namespace media |
OLD | NEW |