Bug 1208371 - Add convenience method for checking track forwarding to MediaStreamTrack. r?roc draft
authorAndreas Pehrson <pehrsons@gmail.com>
Tue, 05 Jan 2016 10:16:29 +0800
changeset 342144 ddf2c4ddcae7d9589476421ba8bd680741a9cfc5
parent 342143 d7fca177e825faf42e40af201a2982671ce1e478
child 342145 19dcbb152b8a78178846c3aa2a6ef3431c6a68df
push id13352
push userpehrsons@gmail.com
push dateFri, 18 Mar 2016 13:49:47 +0000
reviewersroc
bugs1208371
milestone47.0a1
Bug 1208371 - Add convenience method for checking track forwarding to MediaStreamTrack. r?roc MozReview-Commit-ID: 2rhLzZi72Yh
dom/media/MediaStreamTrack.cpp
dom/media/MediaStreamTrack.h
--- a/dom/media/MediaStreamTrack.cpp
+++ b/dom/media/MediaStreamTrack.cpp
@@ -255,16 +255,29 @@ MediaStreamTrack::RemoveListener(MediaSt
                         this, aListener));
 
   GetOwnedStream()->RemoveTrackListener(aListener, mTrackID);
 }
 
 already_AddRefed<MediaInputPort>
 MediaStreamTrack::ForwardTrackContentsTo(ProcessedMediaStream* aStream)
 {
+  MOZ_ASSERT(NS_IsMainThread());
   MOZ_RELEASE_ASSERT(aStream);
   RefPtr<MediaInputPort> port =
     aStream->AllocateInputPort(GetOwnedStream(), mTrackID);
   return port.forget();
 }
 
+bool
+MediaStreamTrack::IsForwardedThrough(MediaInputPort* aPort)
+{
+  MOZ_ASSERT(NS_IsMainThread());
+  MOZ_ASSERT(aPort);
+  if (!aPort) {
+    return false;
+  }
+  return aPort->GetSource() == GetOwnedStream() &&
+         aPort->PassTrackThrough(mTrackID);
+}
+
 } // namespace dom
 } // namespace mozilla
--- a/dom/media/MediaStreamTrack.h
+++ b/dom/media/MediaStreamTrack.h
@@ -302,16 +302,22 @@ public:
   void RemoveListener(MediaStreamTrackListener* aListener);
 
   /**
    * Sets up a MediaInputPort from the underlying track that this
    * MediaStreamTrack represents, to aStream, and returns it.
    */
   already_AddRefed<MediaInputPort> ForwardTrackContentsTo(ProcessedMediaStream* aStream);
 
+  /**
+   * Returns true if this track is connected to aPort and forwarded to aPort's
+   * output stream.
+   */
+  bool IsForwardedThrough(MediaInputPort* aPort);
+
 protected:
   virtual ~MediaStreamTrack();
 
   // Returns the original DOMMediaStream's underlying input stream.
   MediaStream* GetInputStream();
 
   // Returns the owning DOMMediaStream's underlying owned stream.
   ProcessedMediaStream* GetOwnedStream();