| Index: media/formats/mp4/box_reader_unittest.cc
|
| diff --git a/media/formats/mp4/box_reader_unittest.cc b/media/formats/mp4/box_reader_unittest.cc
|
| index e4fff265b54c1c49ed34918f2255317c32b5b311..fb97c075ec131b8a8940a08f11be698e24cc9fbf 100644
|
| --- a/media/formats/mp4/box_reader_unittest.cc
|
| +++ b/media/formats/mp4/box_reader_unittest.cc
|
| @@ -7,9 +7,14 @@
|
| #include "base/basictypes.h"
|
| #include "base/logging.h"
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "media/base/mock_media_log.h"
|
| #include "media/formats/mp4/box_reader.h"
|
| #include "media/formats/mp4/rcheck.h"
|
| +#include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +using ::testing::HasSubstr;
|
| +using ::testing::StrictMock;
|
|
|
| namespace media {
|
| namespace mp4 {
|
| @@ -76,17 +81,35 @@
|
| SkipBox::~SkipBox() {}
|
|
|
| class BoxReaderTest : public testing::Test {
|
| + public:
|
| + BoxReaderTest() : media_log_(new StrictMock<MockMediaLog>()) {}
|
| +
|
| protected:
|
| std::vector<uint8> GetBuf() {
|
| return std::vector<uint8>(kSkipBox, kSkipBox + sizeof(kSkipBox));
|
| }
|
| +
|
| + void TestTopLevelBox(const uint8* data, int size, uint32 fourCC) {
|
| + std::vector<uint8> buf(data, data + size);
|
| +
|
| + bool err;
|
| + scoped_ptr<BoxReader> reader(
|
| + BoxReader::ReadTopLevelBox(&buf[0], buf.size(), media_log_, &err));
|
| +
|
| + EXPECT_FALSE(err);
|
| + EXPECT_TRUE(reader);
|
| + EXPECT_EQ(fourCC, reader->type());
|
| + EXPECT_EQ(reader->size(), size);
|
| + }
|
| +
|
| + scoped_refptr<StrictMock<MockMediaLog>> media_log_;
|
| };
|
|
|
| TEST_F(BoxReaderTest, ExpectedOperationTest) {
|
| std::vector<uint8> buf = GetBuf();
|
| bool err;
|
| scoped_ptr<BoxReader> reader(
|
| - BoxReader::ReadTopLevelBox(&buf[0], buf.size(), new MediaLog(), &err));
|
| + BoxReader::ReadTopLevelBox(&buf[0], buf.size(), media_log_, &err));
|
| EXPECT_FALSE(err);
|
| EXPECT_TRUE(reader.get());
|
|
|
| @@ -113,8 +136,8 @@
|
| bool err;
|
|
|
| // Create a soft failure by truncating the outer box.
|
| - scoped_ptr<BoxReader> r(BoxReader::ReadTopLevelBox(&buf[0], buf.size() - 2,
|
| - new MediaLog(), &err));
|
| + scoped_ptr<BoxReader> r(
|
| + BoxReader::ReadTopLevelBox(&buf[0], buf.size() - 2, media_log_, &err));
|
|
|
| EXPECT_FALSE(err);
|
| EXPECT_FALSE(r.get());
|
| @@ -127,7 +150,7 @@
|
| // Make an inner box too big for its outer box.
|
| buf[25] = 1;
|
| scoped_ptr<BoxReader> reader(
|
| - BoxReader::ReadTopLevelBox(&buf[0], buf.size(), new MediaLog(), &err));
|
| + BoxReader::ReadTopLevelBox(&buf[0], buf.size(), media_log_, &err));
|
|
|
| SkipBox box;
|
| EXPECT_FALSE(box.Parse(reader.get()));
|
| @@ -139,8 +162,11 @@
|
|
|
| // Set an unrecognized top-level FourCC.
|
| buf[5] = 1;
|
| - scoped_ptr<BoxReader> reader(
|
| - BoxReader::ReadTopLevelBox(&buf[0], buf.size(), new MediaLog(), &err));
|
| +
|
| + EXPECT_MEDIA_LOG(HasSubstr("Unrecognized top-level box type s\\u0001ip"));
|
| +
|
| + scoped_ptr<BoxReader> reader(
|
| + BoxReader::ReadTopLevelBox(&buf[0], buf.size(), media_log_, &err));
|
| EXPECT_FALSE(reader.get());
|
| EXPECT_TRUE(err);
|
| }
|
| @@ -149,7 +175,7 @@
|
| std::vector<uint8> buf = GetBuf();
|
| bool err;
|
| scoped_ptr<BoxReader> reader(
|
| - BoxReader::ReadTopLevelBox(&buf[0], buf.size(), new MediaLog(), &err));
|
| + BoxReader::ReadTopLevelBox(&buf[0], buf.size(), media_log_, &err));
|
|
|
| EXPECT_TRUE(reader->SkipBytes(16) && reader->ScanChildren());
|
|
|
| @@ -173,26 +199,12 @@
|
| buf[3] = 0x38;
|
| bool err;
|
| scoped_ptr<BoxReader> reader(
|
| - BoxReader::ReadTopLevelBox(&buf[0], buf.size(), new MediaLog(), &err));
|
| + BoxReader::ReadTopLevelBox(&buf[0], buf.size(), media_log_, &err));
|
|
|
| std::vector<PsshBox> kids;
|
| EXPECT_TRUE(reader->SkipBytes(16) && reader->ReadAllChildren(&kids));
|
| EXPECT_EQ(2u, kids.size());
|
| EXPECT_EQ(kids[0].val, 0xdeadbeef); // Ensure order is preserved
|
| -}
|
| -
|
| -static void TestTopLevelBox(const uint8* data, int size, uint32 fourCC) {
|
| -
|
| - std::vector<uint8> buf(data, data + size);
|
| -
|
| - bool err;
|
| - scoped_ptr<BoxReader> reader(
|
| - BoxReader::ReadTopLevelBox(&buf[0], buf.size(), new MediaLog(), &err));
|
| -
|
| - EXPECT_FALSE(err);
|
| - EXPECT_TRUE(reader);
|
| - EXPECT_EQ(fourCC, reader->type());
|
| - EXPECT_EQ(reader->size(), size);
|
| }
|
|
|
| TEST_F(BoxReaderTest, SkippingBloc) {
|
|
|