diff options
author | Ben Murdoch <benm@google.com> | 2013-08-06 11:01:04 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2013-08-06 11:01:04 +0100 |
commit | 2385ea399aae016c0806a4f9ef3c9cfe3d2a39df (patch) | |
tree | e910e76d19265ff3230c473da95410d3f3a007af /media | |
parent | 8ee924b76946696c0f52e56d28cc5ab741919041 (diff) | |
download | chromium_org-2385ea399aae016c0806a4f9ef3c9cfe3d2a39df.tar.gz |
Merge from Chromium at DEPS revision r215849
This commit was generated by merge_to_master.py.
Change-Id: I225a31651af894e33bdd71e7121702bcbe5310f4
Diffstat (limited to 'media')
-rw-r--r-- | media/audio/async_socket_io_handler_posix.cc | 2 | ||||
-rw-r--r-- | media/audio/async_socket_io_handler_unittest.cc | 36 | ||||
-rw-r--r-- | media/mp4/mp4_stream_parser.cc | 4 |
3 files changed, 35 insertions, 7 deletions
diff --git a/media/audio/async_socket_io_handler_posix.cc b/media/audio/async_socket_io_handler_posix.cc index 815c628ef2..be8f3708cb 100644 --- a/media/audio/async_socket_io_handler_posix.cc +++ b/media/audio/async_socket_io_handler_posix.cc @@ -29,7 +29,7 @@ void AsyncSocketIoHandler::OnFileCanReadWithoutBlocking(int socket) { if (pending_buffer_) { int bytes_read = HANDLE_EINTR(read(socket_, pending_buffer_, pending_buffer_len_)); - DCHECK_GT(bytes_read, 0); + DCHECK_GE(bytes_read, 0); pending_buffer_ = NULL; pending_buffer_len_ = 0; read_complete_.Run(bytes_read > 0 ? bytes_read : 0); diff --git a/media/audio/async_socket_io_handler_unittest.cc b/media/audio/async_socket_io_handler_unittest.cc index a2505d2249..ae971464db 100644 --- a/media/audio/async_socket_io_handler_unittest.cc +++ b/media/audio/async_socket_io_handler_unittest.cc @@ -20,11 +20,13 @@ class TestSocketReader { // callbacks should not be counted. TestSocketReader(base::CancelableSyncSocket* socket, int number_of_reads_before_quit, - bool issue_reads_from_callback) + bool issue_reads_from_callback, + bool expect_eof) : socket_(socket), buffer_(), number_of_reads_before_quit_(number_of_reads_before_quit), callbacks_received_(0), - issue_reads_from_callback_(issue_reads_from_callback) { + issue_reads_from_callback_(issue_reads_from_callback), + expect_eof_(expect_eof) { io_handler.Initialize(socket_->handle(), base::Bind(&TestSocketReader::OnRead, base::Unretained(this))); @@ -41,7 +43,11 @@ class TestSocketReader { private: void OnRead(int bytes_read) { - EXPECT_GT(bytes_read, 0); + if (!expect_eof_) { + EXPECT_GT(bytes_read, 0); + } else { + EXPECT_GE(bytes_read, 0); + } ++callbacks_received_; if (number_of_reads_before_quit_ == callbacks_received_) { base::MessageLoop::current()->Quit(); @@ -56,6 +62,7 @@ class TestSocketReader { int number_of_reads_before_quit_; int callbacks_received_; bool issue_reads_from_callback_; + bool expect_eof_; }; // Workaround to be able to use a base::Closure for sending data. @@ -76,7 +83,7 @@ TEST(AsyncSocketIoHandlerTest, AsynchronousReadWithMessageLoop) { base::CancelableSyncSocket pair[2]; ASSERT_TRUE(base::CancelableSyncSocket::CreatePair(&pair[0], &pair[1])); - TestSocketReader reader(&pair[0], 1, false); + TestSocketReader reader(&pair[0], 1, false, false); EXPECT_TRUE(reader.IssueRead()); pair[1].Send(kAsyncSocketIoTestString, kAsyncSocketIoTestStringLength); @@ -94,7 +101,7 @@ TEST(AsyncSocketIoHandlerTest, SynchronousReadWithMessageLoop) { base::CancelableSyncSocket pair[2]; ASSERT_TRUE(base::CancelableSyncSocket::CreatePair(&pair[0], &pair[1])); - TestSocketReader reader(&pair[0], -1, false); + TestSocketReader reader(&pair[0], -1, false, false); pair[1].Send(kAsyncSocketIoTestString, kAsyncSocketIoTestStringLength); base::MessageLoop::current()->PostDelayedTask(FROM_HERE, @@ -122,7 +129,7 @@ TEST(AsyncSocketIoHandlerTest, ReadFromCallback) { ASSERT_TRUE(base::CancelableSyncSocket::CreatePair(&pair[0], &pair[1])); const int kReadOperationCount = 10; - TestSocketReader reader(&pair[0], kReadOperationCount, true); + TestSocketReader reader(&pair[0], kReadOperationCount, true, false); EXPECT_TRUE(reader.IssueRead()); // Issue sends on an interval to satisfy the Read() requirements. @@ -142,3 +149,20 @@ TEST(AsyncSocketIoHandlerTest, ReadFromCallback) { base::MessageLoop::current()->Run(); EXPECT_EQ(kReadOperationCount, reader.callbacks_received()); } + +// Calls Read() then close other end, check that a correct callback is received. +TEST(AsyncSocketIoHandlerTest, ReadThenClose) { + base::MessageLoopForIO loop; + + base::CancelableSyncSocket pair[2]; + ASSERT_TRUE(base::CancelableSyncSocket::CreatePair(&pair[0], &pair[1])); + + const int kReadOperationCount = 1; + TestSocketReader reader(&pair[0], kReadOperationCount, false, true); + EXPECT_TRUE(reader.IssueRead()); + + pair[1].Close(); + + base::MessageLoop::current()->Run(); + EXPECT_EQ(kReadOperationCount, reader.callbacks_received()); +} diff --git a/media/mp4/mp4_stream_parser.cc b/media/mp4/mp4_stream_parser.cc index 1d311f40a6..fc4ee8abd1 100644 --- a/media/mp4/mp4_stream_parser.cc +++ b/media/mp4/mp4_stream_parser.cc @@ -461,6 +461,10 @@ bool MP4StreamParser::EnqueueSample(BufferQueue* audio_buffers, std::vector<SubsampleEntry> subsamples; if (runs_->is_encrypted()) { decrypt_config = runs_->GetDecryptConfig(); + if (!decrypt_config) { + *err = true; + return false; + } subsamples = decrypt_config->subsamples(); } |