text: // Copyright 2013 The Chromium Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style license that can be
  // found in the LICENSE file.
  
  #ifndef MEDIA_BASE_FAKE_TEXT_TRACK_STREAM_H_
  #define MEDIA_BASE_FAKE_TEXT_TRACK_STREAM_H_
  
  #include "base/macros.h"
  #include "media/base/audio_decoder_config.h"
  #include "media/base/demuxer_stream.h"
  #include "media/base/video_decoder_config.h"
  #include "testing/gmock/include/gmock/gmock.h"
  
  namespace base {
  class SingleThreadTaskRunner;
  }
  
  namespace media {
  
  // Fake implementation of the DemuxerStream.  These are the stream objects
  // we pass to the text renderer object when streams are added and removed.
  class FakeTextTrackStream : public DemuxerStream {
   public:
    FakeTextTrackStream();
  
    FakeTextTrackStream(const FakeTextTrackStream&) = delete;
    FakeTextTrackStream& operator=(const FakeTextTrackStream&) = delete;
  
    ~FakeTextTrackStream() override;
  
    // DemuxerStream implementation.
    void Read(ReadCB) override;
    MOCK_METHOD0(audio_decoder_config, AudioDecoderConfig());
    MOCK_METHOD0(video_decoder_config, VideoDecoderConfig());
    Type type() const override;
    MOCK_METHOD0(EnableBitstreamConverter, void());
    bool SupportsConfigChanges() override;
  
    void SatisfyPendingRead(const base::TimeDelta& start,
                            const base::TimeDelta& duration,
                            const std::string& id,
                            const std::string& content,
                            const std::string& settings);
    void AbortPendingRead();
    void SendEosNotification();
  
    void Stop();
  
    MOCK_METHOD0(OnRead, void());
  
   private:
    scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
    ReadCB read_cb_;
    bool stopping_;
  };
  
  }  // namespace media
  
  #endif  // MEDIA_BASE_FAKE_TEXT_TRACK_STREAM_H_
  