Chromium Code Reviews| Index: media/webm/webm_cluster_parser_unittest.cc |
| diff --git a/media/webm/webm_cluster_parser_unittest.cc b/media/webm/webm_cluster_parser_unittest.cc |
| index 07deb05515ac7c3256b92a250178ec3c1722d579..d0796a4e637f592b87167642be71a7b055a32efd 100644 |
| --- a/media/webm/webm_cluster_parser_unittest.cc |
| +++ b/media/webm/webm_cluster_parser_unittest.cc |
| @@ -67,6 +67,23 @@ static scoped_ptr<Cluster> CreateCluster(int timecode, |
| return cb.Finish(); |
| } |
| +const uint8 encrypted_frame[] = { |
|
ddorwin
2013/03/12 04:40:06
kEncryptedFrame.
This should be with other constan
fgalligan1
2013/03/12 17:20:13
Done.
|
| + 0x01, // Block is encrypted |
|
xhwang
2013/03/12 17:28:57
nit: 2 spaces before //
fgalligan1
2013/03/13 17:58:09
Done.
|
| + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 // IV |
| +}; |
| + |
| +// Creates a Cluster with one encrypted Block. |bytes_to_write| is number of |
| +// bytes of the encrypted frame to write. |
| +static scoped_ptr<Cluster> CreateEncryptedCluster(int bytes_to_write) { |
| + ClusterBuilder cb; |
| + cb.SetClusterTimecode(0); |
| + int frame_size = (bytes_to_write < 1) ? 1 : bytes_to_write; |
| + if (frame_size > sizeof(encrypted_frame)) |
| + frame_size = sizeof(encrypted_frame); |
|
ddorwin
2013/03/12 04:40:06
This seems unexpected. DCHECK or something if you
fgalligan1
2013/03/12 17:20:13
Done.
|
| + cb.AddSimpleBlock(kVideoTrackNum, 0, 0, encrypted_frame, frame_size); |
| + return cb.Finish(); |
| +} |
| + |
| static bool VerifyBuffers(const WebMClusterParser::BufferQueue& audio_buffers, |
| const WebMClusterParser::BufferQueue& video_buffers, |
| const WebMClusterParser::BufferQueue& text_buffers, |
| @@ -440,4 +457,29 @@ TEST_F(WebMClusterParserTest, ParseMultipleTextTracks) { |
| } |
| } |
| +TEST_F(WebMClusterParserTest, ParseEncryptedBlock) { |
| + scoped_ptr<Cluster> cluster(CreateEncryptedCluster(sizeof(encrypted_frame))); |
| + |
| + parser_.reset(new WebMClusterParser( |
| + kTimecodeScale, kAudioTrackNum, kVideoTrackNum, |
| + std::set<int>(), |
| + std::set<int64>(), "", "video_key_id", |
| + LogCB())); |
| + int result = parser_->Parse(cluster->data(), cluster->size()); |
| + EXPECT_EQ(cluster->size(), result); |
|
ddorwin
2013/03/12 04:40:06
Can we check is_encrypted or anything?
fgalligan1
2013/03/12 17:20:13
Done.
|
| +} |
| + |
| +TEST_F(WebMClusterParserTest, ParseBadEncryptedBlock) { |
| + scoped_ptr<Cluster> cluster( |
| + CreateEncryptedCluster(sizeof(encrypted_frame) - 1)); |
| + |
| + parser_.reset(new WebMClusterParser( |
| + kTimecodeScale, kAudioTrackNum, kVideoTrackNum, |
| + std::set<int>(), |
| + std::set<int64>(), "", "video_key_id", |
| + LogCB())); |
| + int result = parser_->Parse(cluster->data(), cluster->size()); |
| + EXPECT_EQ(-1, result); |
| +} |
| + |
| } // namespace media |