Index: content/child/web_data_consumer_handle_impl.cc |
diff --git a/content/child/web_data_consumer_handle_impl.cc b/content/child/web_data_consumer_handle_impl.cc |
index c111cca36035cb5863d525749d0a6bbf71930bf9..efb4f47084592ab01ab4b192644fc6aadc9df078 100644 |
--- a/content/child/web_data_consumer_handle_impl.cc |
+++ b/content/child/web_data_consumer_handle_impl.cc |
@@ -63,6 +63,12 @@ Result WebDataConsumerHandleImpl::ReaderImpl::read(void* data, |
if (rv == MOJO_RESULT_OK) |
*read_size = size_to_pass; |
+ // Even if there is unread data available, mojo::ReadDataRaw() returns |
+ // FAILED_PRECONDITION when |size| is 0 and the producer handle was closed. |
+ // But in this case, WebDataConsumerHandle::Reader::read() must return Ok. |
+ if (!size && rv == MOJO_RESULT_FAILED_PRECONDITION) |
+ return Ok; |
+ |
return HandleReadResult(rv); |
} |