| Index: media/remoting/demuxer_stream_adapter.cc
 | 
| diff --git a/media/remoting/demuxer_stream_adapter.cc b/media/remoting/demuxer_stream_adapter.cc
 | 
| index c12ee005f6a702ea8f9d6dec3aee3c0c22e8287b..de8bfd0024d5ced496a58e89da63e9be02d792c5 100644
 | 
| --- a/media/remoting/demuxer_stream_adapter.cc
 | 
| +++ b/media/remoting/demuxer_stream_adapter.cc
 | 
| @@ -57,7 +57,7 @@ DemuxerStreamAdapter::DemuxerStreamAdapter(
 | 
|        pending_flush_(false),
 | 
|        current_pending_frame_offset_(0),
 | 
|        pending_frame_is_eos_(false),
 | 
| -      write_watcher_(FROM_HERE),
 | 
| +      write_watcher_(FROM_HERE, mojo::SimpleWatcher::ArmingPolicy::MANUAL),
 | 
|        media_status_(DemuxerStream::kOk),
 | 
|        producer_handle_(std::move(producer_handle)),
 | 
|        bytes_written_to_pipe_(0),
 | 
| @@ -202,9 +202,10 @@ void DemuxerStreamAdapter::Initialize(int remote_callback_handle) {
 | 
|    // Starts Mojo watcher.
 | 
|    if (!write_watcher_.IsWatching()) {
 | 
|      DEMUXER_VLOG(2) << "Start Mojo data pipe watcher";
 | 
| -    write_watcher_.Start(producer_handle_.get(), MOJO_HANDLE_SIGNAL_WRITABLE,
 | 
| +    write_watcher_.Watch(producer_handle_.get(), MOJO_HANDLE_SIGNAL_WRITABLE,
 | 
|                           base::Bind(&DemuxerStreamAdapter::TryWriteData,
 | 
|                                      weak_factory_.GetWeakPtr()));
 | 
| +    write_watcher_.ArmOrNotify();
 | 
|    }
 | 
|  }
 | 
|  
 | 
| @@ -326,15 +327,17 @@ void DemuxerStreamAdapter::TryWriteData(MojoResult result) {
 | 
|        WriteDataRaw(producer_handle_.get(),
 | 
|                     pending_frame_.data() + current_pending_frame_offset_,
 | 
|                     &num_bytes, MOJO_WRITE_DATA_FLAG_NONE);
 | 
| -  if (mojo_result != MOJO_RESULT_OK) {
 | 
| -    if (mojo_result != MOJO_RESULT_SHOULD_WAIT) {
 | 
| -      DEMUXER_VLOG(1) << "Pipe was closed unexpectedly (or a bug). result:"
 | 
| -                      << mojo_result;
 | 
| -      OnFatalError(MOJO_PIPE_ERROR);
 | 
| -    }
 | 
| +  if (mojo_result != MOJO_RESULT_OK && mojo_result != MOJO_RESULT_SHOULD_WAIT) {
 | 
| +    DEMUXER_VLOG(1) << "Pipe was closed unexpectedly (or a bug). result:"
 | 
| +                    << mojo_result;
 | 
| +    OnFatalError(MOJO_PIPE_ERROR);
 | 
|      return;
 | 
|    }
 | 
|  
 | 
| +  write_watcher_.ArmOrNotify();
 | 
| +  if (mojo_result != MOJO_RESULT_OK)
 | 
| +    return;
 | 
| +
 | 
|    stream_sender_->ConsumeDataChunk(current_pending_frame_offset_, num_bytes,
 | 
|                                     pending_frame_.size());
 | 
|    current_pending_frame_offset_ += num_bytes;
 | 
| 
 |