Add separate native library for instrumentationtests
Also adds api in PCF for specifying which library to load.
This is in preparation for a CL adding a native function
to be used only in tests.
Bug: webrtc:9225
Change-Id: I72eff272350404729424176758bfa81f7da81836
Reviewed-on: https://webrtc-review.googlesource.com/84125
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Paulina Hensman <phensman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23663}
diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index 6d23594..58d692e 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -1045,6 +1045,7 @@
"instrumentationtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
"instrumentationtests/src/org/webrtc/Camera2CapturerTest.java",
"instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
+ "instrumentationtests/src/org/webrtc/TestConstants.java",
"instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java",
"instrumentationtests/src/org/webrtc/EglRendererTest.java",
"instrumentationtests/src/org/webrtc/FileVideoCapturerTest.java",
@@ -1081,10 +1082,29 @@
"//third_party/junit",
]
- shared_libraries = [ "../../sdk/android:libjingle_peerconnection_so" ]
+ shared_libraries =
+ [ "../../sdk/android:libjingle_peerconnection_instrumentationtests_so" ]
}
}
+rtc_shared_library("libjingle_peerconnection_instrumentationtests_so") {
+ testonly = true
+ sources = [
+ "src/jni/jni_onload.cc",
+ ]
+
+ suppressed_configs += [ "//build/config/android:hide_all_but_jni_onload" ]
+ configs += [ "//build/config/android:hide_all_but_jni" ]
+
+ deps = [
+ ":libjingle_peerconnection_jni",
+ ":libjingle_peerconnection_metrics_default_jni",
+ "../../pc:libjingle_peerconnection",
+ "../../rtc_base:rtc_base",
+ ]
+ output_extension = "so"
+}
+
# The native API is currently experimental and may change without notice.
group("native_api") {
deps = [
diff --git a/sdk/android/api/org/webrtc/PeerConnectionFactory.java b/sdk/android/api/org/webrtc/PeerConnectionFactory.java
index 07afac6..96c196c 100644
--- a/sdk/android/api/org/webrtc/PeerConnectionFactory.java
+++ b/sdk/android/api/org/webrtc/PeerConnectionFactory.java
@@ -41,15 +41,17 @@
final boolean enableInternalTracer;
final boolean enableVideoHwAcceleration;
final NativeLibraryLoader nativeLibraryLoader;
+ final String nativeLibraryName;
private InitializationOptions(Context applicationContext, String fieldTrials,
boolean enableInternalTracer, boolean enableVideoHwAcceleration,
- NativeLibraryLoader nativeLibraryLoader) {
+ NativeLibraryLoader nativeLibraryLoader, String nativeLibraryName) {
this.applicationContext = applicationContext;
this.fieldTrials = fieldTrials;
this.enableInternalTracer = enableInternalTracer;
this.enableVideoHwAcceleration = enableVideoHwAcceleration;
this.nativeLibraryLoader = nativeLibraryLoader;
+ this.nativeLibraryName = nativeLibraryName;
}
public static Builder builder(Context applicationContext) {
@@ -62,6 +64,7 @@
private boolean enableInternalTracer = false;
private boolean enableVideoHwAcceleration = true;
private NativeLibraryLoader nativeLibraryLoader = new NativeLibrary.DefaultLoader();
+ private String nativeLibraryName = "jingle_peerconnection_so";
Builder(Context applicationContext) {
this.applicationContext = applicationContext;
@@ -86,10 +89,15 @@
this.nativeLibraryLoader = nativeLibraryLoader;
return this;
}
+ public Builder setNativeLibraryName(String nativeLibraryName) {
+ this.nativeLibraryName = nativeLibraryName;
+ return this;
+ }
public PeerConnectionFactory.InitializationOptions createInitializationOptions() {
return new PeerConnectionFactory.InitializationOptions(applicationContext, fieldTrials,
- enableInternalTracer, enableVideoHwAcceleration, nativeLibraryLoader);
+ enableInternalTracer, enableVideoHwAcceleration, nativeLibraryLoader,
+ nativeLibraryName);
}
}
}
@@ -193,7 +201,7 @@
*/
public static void initialize(InitializationOptions options) {
ContextUtils.initialize(options.applicationContext);
- NativeLibrary.initialize(options.nativeLibraryLoader);
+ NativeLibrary.initialize(options.nativeLibraryLoader, options.nativeLibraryName);
nativeInitializeAndroidGlobals(options.enableVideoHwAcceleration);
nativeInitializeFieldTrials(options.fieldTrials);
if (options.enableInternalTracer && !internalTracerInitialized) {
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java b/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java
index f20608b..05a5a54 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java
@@ -334,6 +334,7 @@
CameraVideoCapturerTestFixtures(TestObjectFactory testObjectFactory) {
PeerConnectionFactory.initialize(
PeerConnectionFactory.InitializationOptions.builder(testObjectFactory.getAppContext())
+ .setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
this.peerConnectionFactory = PeerConnectionFactory.builder().createPeerConnectionFactory();
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java b/sdk/android/instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java
index b805dd4..4d2fe5c 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java
@@ -64,7 +64,7 @@
@Before
public void setUp() {
- NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
+ NativeLibrary.initialize(new NativeLibrary.DefaultLoader(), TestConstants.NATIVE_LIBRARY);
}
@SmallTest
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/EglRendererTest.java b/sdk/android/instrumentationtests/src/org/webrtc/EglRendererTest.java
index b873383..29d822f 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/EglRendererTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/EglRendererTest.java
@@ -115,6 +115,7 @@
public void setUp() throws Exception {
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
+ .setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
eglRenderer = new EglRenderer("TestRenderer: ");
eglRenderer.init(null /* sharedContext */, EglBase.CONFIG_RGBA, new GlRectDrawer());
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/FileVideoCapturerTest.java b/sdk/android/instrumentationtests/src/org/webrtc/FileVideoCapturerTest.java
index 667a343..48af276 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/FileVideoCapturerTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/FileVideoCapturerTest.java
@@ -61,7 +61,7 @@
@Before
public void setUp() {
- NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
+ NativeLibrary.initialize(new NativeLibrary.DefaultLoader(), TestConstants.NATIVE_LIBRARY);
}
@Test
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoDecoderTest.java b/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoDecoderTest.java
index b3b9588..6ca92de 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoDecoderTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoDecoderTest.java
@@ -155,7 +155,7 @@
@Before
public void setUp() {
- NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
+ NativeLibrary.initialize(new NativeLibrary.DefaultLoader(), TestConstants.NATIVE_LIBRARY);
TEST_FRAMES = generateTestFrames();
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java b/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java
index 9789db8..7782fc2 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java
@@ -354,7 +354,7 @@
// # Tests
@Before
public void setUp() {
- NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
+ NativeLibrary.initialize(new NativeLibrary.DefaultLoader(), TestConstants.NATIVE_LIBRARY);
eglBase = new EglBase14(null, EglBase.CONFIG_PLAIN);
eglBase.createDummyPbufferSurface();
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionFactoryTest.java b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionFactoryTest.java
index 01e618d..907067a 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionFactoryTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionFactoryTest.java
@@ -23,6 +23,7 @@
public void testInitialize() {
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
+ .setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
}
@@ -31,9 +32,11 @@
public void testInitializeTwice() {
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
+ .setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
+ .setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
}
@@ -43,10 +46,12 @@
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
.setEnableInternalTracer(true)
+ .setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
.setEnableInternalTracer(true)
+ .setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
}
@@ -56,6 +61,7 @@
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
.setEnableInternalTracer(true)
+ .setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
PeerConnectionFactory.shutdownInternalTracer();
}
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java
index 5ef5599..c83d6bf 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java
@@ -56,6 +56,7 @@
public void setUp() {
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
+ .setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
}
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/SurfaceTextureHelperTest.java b/sdk/android/instrumentationtests/src/org/webrtc/SurfaceTextureHelperTest.java
index cf2529d..7eeb54d 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/SurfaceTextureHelperTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/SurfaceTextureHelperTest.java
@@ -106,7 +106,7 @@
@Before
public void setUp() {
// Load the JNI library for textureToYuv.
- NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
+ NativeLibrary.initialize(new NativeLibrary.DefaultLoader(), TestConstants.NATIVE_LIBRARY);
}
/**
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/TestConstants.java b/sdk/android/instrumentationtests/src/org/webrtc/TestConstants.java
new file mode 100644
index 0000000..6c7904c
--- /dev/null
+++ b/sdk/android/instrumentationtests/src/org/webrtc/TestConstants.java
@@ -0,0 +1,15 @@
+/*
+ * Copyright 2018 The WebRTC Project Authors. All rights reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+package org.webrtc;
+
+class TestConstants {
+ public static final String NATIVE_LIBRARY = "jingle_peerconnection_instrumentationtests_so";
+}
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/VideoFileRendererTest.java b/sdk/android/instrumentationtests/src/org/webrtc/VideoFileRendererTest.java
index e314680..02bff40 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/VideoFileRendererTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/VideoFileRendererTest.java
@@ -31,7 +31,7 @@
public class VideoFileRendererTest {
@Before
public void setUp() {
- NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
+ NativeLibrary.initialize(new NativeLibrary.DefaultLoader(), TestConstants.NATIVE_LIBRARY);
}
@Test
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/VideoFrameBufferTest.java b/sdk/android/instrumentationtests/src/org/webrtc/VideoFrameBufferTest.java
index 889d807..955e8cd 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/VideoFrameBufferTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/VideoFrameBufferTest.java
@@ -61,7 +61,7 @@
@BeforeClass
public static void setUp() {
// Needed for JniCommon.nativeAllocateByteBuffer() to work, which is used from JavaI420Buffer.
- System.loadLibrary("jingle_peerconnection_so");
+ System.loadLibrary(TestConstants.NATIVE_LIBRARY);
}
private final BufferType bufferType;
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java b/sdk/android/instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java
index 3b4f092..e6c4328 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java
@@ -27,6 +27,7 @@
public void testJniLoadsWithoutError() throws InterruptedException {
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
+ .setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
PeerConnectionFactory.builder().createPeerConnectionFactory();
}
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/YuvHelperTest.java b/sdk/android/instrumentationtests/src/org/webrtc/YuvHelperTest.java
index 8ee8921..c8a88f0 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/YuvHelperTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/YuvHelperTest.java
@@ -55,7 +55,7 @@
@Before
public void setUp() {
- NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
+ NativeLibrary.initialize(new NativeLibrary.DefaultLoader(), TestConstants.NATIVE_LIBRARY);
}
@SmallTest
diff --git a/sdk/android/src/java/org/webrtc/NativeLibrary.java b/sdk/android/src/java/org/webrtc/NativeLibrary.java
index 3b88f14..91ec4ca 100644
--- a/sdk/android/src/java/org/webrtc/NativeLibrary.java
+++ b/sdk/android/src/java/org/webrtc/NativeLibrary.java
@@ -34,14 +34,14 @@
* Loads the native library. Clients should call PeerConnectionFactory.initialize. It will call
* this method for them.
*/
- static void initialize(NativeLibraryLoader loader) {
+ static void initialize(NativeLibraryLoader loader, String libraryName) {
synchronized (lock) {
if (libraryLoaded) {
Logging.d(TAG, "Native library has already been loaded.");
return;
}
- Logging.d(TAG, "Loading native library.");
- libraryLoaded = loader.load("jingle_peerconnection_so");
+ Logging.d(TAG, "Loading native library: " + libraryName);
+ libraryLoaded = loader.load(libraryName);
}
}