summaryrefslogtreecommitdiff
path: root/chromium/media/mojo/common/mojo_decoder_buffer_converter_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/mojo/common/mojo_decoder_buffer_converter_unittest.cc')
-rw-r--r--chromium/media/mojo/common/mojo_decoder_buffer_converter_unittest.cc46
1 files changed, 40 insertions, 6 deletions
diff --git a/chromium/media/mojo/common/mojo_decoder_buffer_converter_unittest.cc b/chromium/media/mojo/common/mojo_decoder_buffer_converter_unittest.cc
index 98f53ee4539..c1917f38015 100644
--- a/chromium/media/mojo/common/mojo_decoder_buffer_converter_unittest.cc
+++ b/chromium/media/mojo/common/mojo_decoder_buffer_converter_unittest.cc
@@ -32,12 +32,14 @@ class MojoDecoderBufferConverter {
public:
MojoDecoderBufferConverter(
uint32_t data_pipe_capacity_bytes = kDefaultDataPipeCapacityBytes) {
- mojo::DataPipe data_pipe(data_pipe_capacity_bytes);
-
- writer = std::make_unique<MojoDecoderBufferWriter>(
- std::move(data_pipe.producer_handle));
- reader = std::make_unique<MojoDecoderBufferReader>(
- std::move(data_pipe.consumer_handle));
+ mojo::ScopedDataPipeProducerHandle producer_handle;
+ mojo::ScopedDataPipeConsumerHandle consumer_handle;
+ EXPECT_TRUE(CreateDataPipe(data_pipe_capacity_bytes, &producer_handle,
+ &consumer_handle));
+ writer =
+ std::make_unique<MojoDecoderBufferWriter>(std::move(producer_handle));
+ reader =
+ std::make_unique<MojoDecoderBufferReader>(std::move(consumer_handle));
}
void ConvertAndVerify(scoped_refptr<DecoderBuffer> media_buffer) {
@@ -401,4 +403,36 @@ TEST(MojoDecoderBufferConverterTest, FlushDuringConcurrentReads) {
run_loop.Run();
}
+TEST(MojoDecoderBufferConverterTest, WriterWithInvalidHandle) {
+ base::test::SingleThreadTaskEnvironment task_environment;
+ const uint8_t kData[] = "Hello, world";
+ auto media_buffer = DecoderBuffer::CopyFrom(kData, base::size(kData));
+
+ auto writer = std::make_unique<MojoDecoderBufferWriter>(
+ mojo::ScopedDataPipeProducerHandle());
+ EXPECT_FALSE(writer->WriteDecoderBuffer(media_buffer));
+}
+
+TEST(MojoDecoderBufferConverterTest, ReaderWithInvalidHandle) {
+ base::test::SingleThreadTaskEnvironment task_environment;
+ base::RunLoop run_loop;
+
+ // Write a real buffer for testing.
+ const uint8_t kData[] = "Hello, world";
+ auto media_buffer = DecoderBuffer::CopyFrom(kData, base::size(kData));
+ MojoDecoderBufferConverter converter;
+ auto mojo_buffer = converter.writer->WriteDecoderBuffer(media_buffer);
+ DCHECK(mojo_buffer);
+
+ // Read with an invalid handle.
+ base::MockCallback<MojoDecoderBufferReader::ReadCB> mock_cb;
+ EXPECT_CALL(mock_cb, Run(testing::IsNull()))
+ .WillOnce(testing::InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
+ auto reader = std::make_unique<MojoDecoderBufferReader>(
+ mojo::ScopedDataPipeConsumerHandle());
+ reader->ReadDecoderBuffer(std::move(mojo_buffer), mock_cb.Get());
+
+ run_loop.Run();
+}
+
} // namespace media