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/TurnCustomizer.java b/sdk/android/api/org/webrtc/TurnCustomizer.java
index bfc72ea..41bedb7 100644
--- a/sdk/android/api/org/webrtc/TurnCustomizer.java
+++ b/sdk/android/api/org/webrtc/TurnCustomizer.java
@@ -12,20 +12,30 @@
 
 /** Java wrapper for a C++ TurnCustomizer. */
 public class TurnCustomizer {
-  final long nativeTurnCustomizer;
+  private long nativeTurnCustomizer;
 
   public TurnCustomizer(long nativeTurnCustomizer) {
     this.nativeTurnCustomizer = nativeTurnCustomizer;
   }
 
   public void dispose() {
+    checkTurnCustomizerExists();
     nativeFreeTurnCustomizer(nativeTurnCustomizer);
+    nativeTurnCustomizer = 0;
   }
 
   private static native void nativeFreeTurnCustomizer(long turnCustomizer);
 
+  /** Return a pointer to webrtc::TurnCustomizer. */
   @CalledByNative
   long getNativeTurnCustomizer() {
+    checkTurnCustomizerExists();
     return nativeTurnCustomizer;
   }
+
+  private void checkTurnCustomizerExists() {
+    if (nativeTurnCustomizer == 0) {
+      throw new IllegalStateException("TurnCustomizer has been disposed.");
+    }
+  }
 }