Remove static library loading from WebRTC Android SDK.

Bug: webrtc:7474
Change-Id: Ie75a5c12638be82d7bd91073744946ac21c48155
Reviewed-on: https://webrtc-review.googlesource.com/22962
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20865}
diff --git a/examples/androidapp/src/org/appspot/apprtc/CallActivity.java b/examples/androidapp/src/org/appspot/apprtc/CallActivity.java
index 8da9dc7..dabff97 100644
--- a/examples/androidapp/src/org/appspot/apprtc/CallActivity.java
+++ b/examples/androidapp/src/org/appspot/apprtc/CallActivity.java
@@ -69,18 +69,6 @@
                                                       CallFragment.OnCallEvents {
   private static final String TAG = "CallRTCClient";
 
-  // Fix for devices running old Android versions not finding the libraries.
-  // https://bugs.chromium.org/p/webrtc/issues/detail?id=6751
-  static {
-    try {
-      System.loadLibrary("c++_shared");
-      System.loadLibrary("boringssl.cr");
-      System.loadLibrary("protobuf_lite.cr");
-    } catch (UnsatisfiedLinkError e) {
-      Logging.w(TAG, "Failed to load native dependencies: ", e);
-    }
-  }
-
   public static final String EXTRA_ROOMID = "org.appspot.apprtc.ROOMID";
   public static final String EXTRA_URLPARAMETERS = "org.appspot.apprtc.URLPARAMETERS";
   public static final String EXTRA_LOOPBACK = "org.appspot.apprtc.LOOPBACK";
diff --git a/rtc_base/java/src/org/webrtc/Logging.java b/rtc_base/java/src/org/webrtc/Logging.java
index 1e1b3d8..f143d2f 100644
--- a/rtc_base/java/src/org/webrtc/Logging.java
+++ b/rtc_base/java/src/org/webrtc/Logging.java
@@ -30,8 +30,6 @@
 public class Logging {
   private static final Logger fallbackLogger = createFallbackLogger();
   private static volatile boolean loggingEnabled;
-  private static enum NativeLibStatus { UNINITIALIZED, LOADED, FAILED }
-  private static volatile NativeLibStatus nativeLibStatus = NativeLibStatus.UNINITIALIZED;
 
   private static Logger createFallbackLogger() {
     final Logger fallbackLogger = Logger.getLogger("org.webrtc.Logging");
@@ -39,19 +37,6 @@
     return fallbackLogger;
   }
 
-  private static boolean loadNativeLibrary() {
-    if (nativeLibStatus == NativeLibStatus.UNINITIALIZED) {
-      try {
-        System.loadLibrary("jingle_peerconnection_so");
-        nativeLibStatus = NativeLibStatus.LOADED;
-      } catch (UnsatisfiedLinkError t) {
-        nativeLibStatus = NativeLibStatus.FAILED;
-        fallbackLogger.log(Level.WARNING, "Failed to load jingle_peerconnection_so: ", t);
-      }
-    }
-    return nativeLibStatus == NativeLibStatus.LOADED;
-  }
-
   // TODO(solenberg): Remove once dependent projects updated.
   @Deprecated
   public enum TraceLevel {
@@ -81,19 +66,10 @@
   public enum Severity { LS_SENSITIVE, LS_VERBOSE, LS_INFO, LS_WARNING, LS_ERROR, LS_NONE }
 
   public static void enableLogThreads() {
-    if (!loadNativeLibrary()) {
-      fallbackLogger.log(Level.WARNING, "Cannot enable log thread because native lib not loaded.");
-      return;
-    }
     nativeEnableLogThreads();
   }
 
   public static void enableLogTimeStamps() {
-    if (!loadNativeLibrary()) {
-      fallbackLogger.log(
-          Level.WARNING, "Cannot enable log timestamps because native lib not loaded.");
-      return;
-    }
     nativeEnableLogTimeStamps();
   }
 
@@ -107,10 +83,6 @@
   // TODO(bugs.webrtc.org/8491): Remove NoSynchronizedMethodCheck suppression.
   @SuppressWarnings("NoSynchronizedMethodCheck")
   public static synchronized void enableLogToDebugOutput(Severity severity) {
-    if (!loadNativeLibrary()) {
-      fallbackLogger.log(Level.WARNING, "Cannot enable logging because native lib not loaded.");
-      return;
-    }
     nativeEnableLogToDebugOutput(severity.ordinal());
     loggingEnabled = true;
   }
diff --git a/sdk/android/api/org/webrtc/CallSessionFileRotatingLogSink.java b/sdk/android/api/org/webrtc/CallSessionFileRotatingLogSink.java
index 9b53ce4..1322487 100644
--- a/sdk/android/api/org/webrtc/CallSessionFileRotatingLogSink.java
+++ b/sdk/android/api/org/webrtc/CallSessionFileRotatingLogSink.java
@@ -11,10 +11,6 @@
 package org.webrtc;
 
 public class CallSessionFileRotatingLogSink {
-  static {
-    System.loadLibrary("jingle_peerconnection_so");
-  }
-
   private long nativeSink;
 
   public static byte[] getLogData(String dirPath) {
diff --git a/sdk/android/api/org/webrtc/FileVideoCapturer.java b/sdk/android/api/org/webrtc/FileVideoCapturer.java
index 6b1fe6f..331f9a7 100644
--- a/sdk/android/api/org/webrtc/FileVideoCapturer.java
+++ b/sdk/android/api/org/webrtc/FileVideoCapturer.java
@@ -21,10 +21,6 @@
 import java.util.concurrent.TimeUnit;
 
 public class FileVideoCapturer implements VideoCapturer {
-  static {
-    System.loadLibrary("jingle_peerconnection_so");
-  }
-
   private interface VideoReader {
     VideoFrame getNextFrame();
     void close();
diff --git a/sdk/android/api/org/webrtc/Metrics.java b/sdk/android/api/org/webrtc/Metrics.java
index fac41ed..010e839 100644
--- a/sdk/android/api/org/webrtc/Metrics.java
+++ b/sdk/android/api/org/webrtc/Metrics.java
@@ -32,9 +32,6 @@
 public class Metrics {
   private static final String TAG = "Metrics";
 
-  static {
-    System.loadLibrary("jingle_peerconnection_so");
-  }
   public final Map<String, HistogramInfo> map =
       new HashMap<String, HistogramInfo>(); // <name, HistogramInfo>
 
diff --git a/sdk/android/api/org/webrtc/PeerConnection.java b/sdk/android/api/org/webrtc/PeerConnection.java
index b6beea0..9bc4ebf 100644
--- a/sdk/android/api/org/webrtc/PeerConnection.java
+++ b/sdk/android/api/org/webrtc/PeerConnection.java
@@ -10,8 +10,8 @@
 
 package org.webrtc;
 
-import java.util.Collections;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -21,10 +21,6 @@
  * http://www.w3.org/TR/mediacapture-streams/
  */
 public class PeerConnection {
-  static {
-    System.loadLibrary("jingle_peerconnection_so");
-  }
-
   /** Tracks PeerConnectionInterface::IceGatheringState */
   public enum IceGatheringState { NEW, GATHERING, COMPLETE }
 
diff --git a/sdk/android/api/org/webrtc/PeerConnectionFactory.java b/sdk/android/api/org/webrtc/PeerConnectionFactory.java
index d911504..cc1d83f 100644
--- a/sdk/android/api/org/webrtc/PeerConnectionFactory.java
+++ b/sdk/android/api/org/webrtc/PeerConnectionFactory.java
@@ -18,12 +18,6 @@
  * the PeerConnection API for clients.
  */
 public class PeerConnectionFactory {
-  static {
-    // TODO(sakal): Remove once all dependencies have started using
-    // PeerConnectionFactory.initialize.
-    NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
-  }
-
   public static final String TRIAL_ENABLED = "Enabled";
   public static final String VIDEO_FRAME_EMIT_TRIAL = "VideoFrameEmit";
 
@@ -140,24 +134,7 @@
   private static native void nativeInitializeAndroidGlobals(
       Context context, boolean videoHwAcceleration);
 
-  // Deprecated, use PeerConnectionFactory.initialize instead.
-  @Deprecated
-  public static void initializeAndroidGlobals(Context context, boolean videoHwAcceleration) {
-    ContextUtils.initialize(context);
-    nativeInitializeAndroidGlobals(context, videoHwAcceleration);
-  }
-
-  // Older signature of initializeAndroidGlobals. The extra parameters are now meaningless.
-  // Deprecated, use PeerConnectionFactory.initialize instead.
-  @Deprecated
-  public static boolean initializeAndroidGlobals(Object context, boolean initializeAudio,
-      boolean initializeVideo, boolean videoHwAcceleration) {
-    initializeAndroidGlobals((Context) context, videoHwAcceleration);
-    return true;
-  }
-
-  @Deprecated
-  public static void initializeInternalTracer() {
+  private static void initializeInternalTracer() {
     internalTracerInitialized = true;
     nativeInitializeInternalTracer();
   }
diff --git a/sdk/android/api/org/webrtc/VideoFileRenderer.java b/sdk/android/api/org/webrtc/VideoFileRenderer.java
index 2f2e422..06b433c 100644
--- a/sdk/android/api/org/webrtc/VideoFileRenderer.java
+++ b/sdk/android/api/org/webrtc/VideoFileRenderer.java
@@ -23,10 +23,6 @@
  * Can be used to save the video frames to file.
  */
 public class VideoFileRenderer implements VideoRenderer.Callbacks {
-  static {
-    System.loadLibrary("jingle_peerconnection_so");
-  }
-
   private static final String TAG = "VideoFileRenderer";
 
   private final HandlerThread renderThread;
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/VideoFileRendererTest.java b/sdk/android/instrumentationtests/src/org/webrtc/VideoFileRendererTest.java
index 08b8e22..cfcdd65 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/VideoFileRendererTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/VideoFileRendererTest.java
@@ -23,11 +23,17 @@
 import java.util.ArrayList;
 import java.util.Random;
 import org.chromium.base.test.BaseJUnit4ClassRunner;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
 @RunWith(BaseJUnit4ClassRunner.class)
 public class VideoFileRendererTest {
+  @Before
+  public void setUp() {
+    NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
+  }
+
   @Test
   @SmallTest
   public void testYuvRenderingToFile() throws InterruptedException, IOException {