| Index: media/base/media_resource.h
 | 
| diff --git a/media/base/media_resource.h b/media/base/media_resource.h
 | 
| index 2cd90192c013d892759f7ee2f939dfa31280d60f..9d911b3c3d8a7cbd6090eb16f20cb179a64ecca1 100644
 | 
| --- a/media/base/media_resource.h
 | 
| +++ b/media/base/media_resource.h
 | 
| @@ -5,7 +5,11 @@
 | 
|  #ifndef MEDIA_BASE_MEDIA_RESOURCE_H_
 | 
|  #define MEDIA_BASE_MEDIA_RESOURCE_H_
 | 
|  
 | 
| +#include <vector>
 | 
| +
 | 
| +#include "base/callback.h"
 | 
|  #include "base/macros.h"
 | 
| +#include "base/time/time.h"
 | 
|  #include "media/base/demuxer_stream.h"
 | 
|  #include "media/base/media_export.h"
 | 
|  #include "media/base/media_url_params.h"
 | 
| @@ -13,6 +17,14 @@
 | 
|  
 | 
|  namespace media {
 | 
|  
 | 
| +// The callback that is used to notify clients about streams being enabled and
 | 
| +// disabled. The first parameter is the DemuxerStream whose status changed. The
 | 
| +// second parameter is a bool indicating whether the stream got enabled or
 | 
| +// disabled. The third parameter specifies the media playback position at the
 | 
| +// time the status change happened.
 | 
| +using StreamStatusChangeCB =
 | 
| +    base::RepeatingCallback<void(DemuxerStream*, bool, base::TimeDelta)>;
 | 
| +
 | 
|  // Abstract class that defines how to retrieve "media resources" in
 | 
|  // DemuxerStream form (for most cases) or URL form (for the MediaPlayerRenderer
 | 
|  // case).
 | 
| @@ -30,9 +42,8 @@ class MEDIA_EXPORT MediaResource {
 | 
|    virtual ~MediaResource();
 | 
|  
 | 
|    // For Type::STREAM:
 | 
| -  //   Returns the first stream of the given stream type (which is not allowed
 | 
| -  //   to be DemuxerStream::TEXT), or NULL if that type of stream is not
 | 
| -  //   present.
 | 
| +  // Returns a collection of available DemuxerStream objects. Note that some of
 | 
| +  // those streams might be in disabled state (check DemuxerStream::enabled() ).
 | 
|    //   NOTE: Once a DemuxerStream pointer is returned from GetStream it is
 | 
|    //   guaranteed to stay valid for as long as the Demuxer/MediaResource
 | 
|    //   is alive. But make no assumption that once GetStream returned a non-null
 | 
| @@ -40,9 +51,7 @@ class MEDIA_EXPORT MediaResource {
 | 
|    //   non-null pointer for the same stream type. In MSE Javascript code can
 | 
|    //   remove SourceBuffer from a MediaSource at any point and this will make
 | 
|    //   some previously existing streams inaccessible/unavailable.
 | 
| -  // Other types:
 | 
| -  //   Should not be called.
 | 
| -  virtual DemuxerStream* GetStream(DemuxerStream::Type type) = 0;
 | 
| +  virtual std::vector<DemuxerStream*> GetStreams() = 0;
 | 
|  
 | 
|    // For Type::URL:
 | 
|    //   Returns the URL parameters of the media to play. Empty URLs are legal,
 | 
| @@ -53,6 +62,10 @@ class MEDIA_EXPORT MediaResource {
 | 
|  
 | 
|    virtual MediaResource::Type GetType() const;
 | 
|  
 | 
| +  // The StreamStatusChangeCB allows clients to receive notifications about one
 | 
| +  // of the streams being disabled or enabled.
 | 
| +  virtual void SetStreamStatusChangeCB(const StreamStatusChangeCB& cb) = 0;
 | 
| +
 | 
|   private:
 | 
|    DISALLOW_COPY_AND_ASSIGN(MediaResource);
 | 
|  };
 | 
| 
 |