Throw IllegalStateException if native objects are used after dispose.

This makes it easier to debug issues related to double dispose /
use after dispose.

Bug: webrtc:7566, webrtc:8297
Change-Id: I07429b2b794deabb62b5f3ea1cf92eea6f66a149
Reviewed-on: https://webrtc-review.googlesource.com/102540
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Paulina Hensman <phensman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24894}
diff --git a/sdk/android/api/org/webrtc/VideoTrack.java b/sdk/android/api/org/webrtc/VideoTrack.java
index 5495ee8..5e33e1e 100644
--- a/sdk/android/api/org/webrtc/VideoTrack.java
+++ b/sdk/android/api/org/webrtc/VideoTrack.java
@@ -10,8 +10,8 @@
 
 package org.webrtc;
 
-import java.util.IdentityHashMap;
 import java.util.ArrayList;
+import java.util.IdentityHashMap;
 import java.util.List;
 
 /** Java version of VideoTrackInterface. */
@@ -39,7 +39,7 @@
     if (!sinks.containsKey(sink)) {
       final long nativeSink = nativeWrapSink(sink);
       sinks.put(sink, nativeSink);
-      nativeAddSink(nativeTrack, nativeSink);
+      nativeAddSink(getNativeMediaStreamTrack(), nativeSink);
     }
   }
 
@@ -51,7 +51,7 @@
   public void removeSink(VideoSink sink) {
     final Long nativeSink = sinks.remove(sink);
     if (nativeSink != null) {
-      nativeRemoveSink(nativeTrack, nativeSink);
+      nativeRemoveSink(getNativeMediaStreamTrack(), nativeSink);
       nativeFreeSink(nativeSink);
     }
   }
@@ -59,13 +59,18 @@
   @Override
   public void dispose() {
     for (long nativeSink : sinks.values()) {
-      nativeRemoveSink(nativeTrack, nativeSink);
+      nativeRemoveSink(getNativeMediaStreamTrack(), nativeSink);
       nativeFreeSink(nativeSink);
     }
     sinks.clear();
     super.dispose();
   }
 
+  /** Returns a pointer to webrtc::VideoTrackInterface. */
+  long getNativeVideoTrack() {
+    return getNativeMediaStreamTrack();
+  }
+
   private static native void nativeAddSink(long track, long nativeSink);
   private static native void nativeRemoveSink(long track, long nativeSink);
   private static native long nativeWrapSink(VideoSink sink);