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

Unified Diff: media/webm/webm_cluster_parser_unittest.cc

Issue 10829470: Support for parsing encrypted WebM streams by src. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Refactored decryption code. Add 2 unittests. Created 7 years, 9 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
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

Powered by Google App Engine
This is Rietveld 408576698