diff --git a/library/core/build.gradle b/library/core/build.gradle
index bb0adaa4c7..ad1c150fe7 100644
--- a/library/core/build.gradle
+++ b/library/core/build.gradle
@@ -22,6 +22,7 @@ android {
targetSdkVersion project.ext.targetSdkVersion
}
+ // Workaround to prevent circular dependency on project :testutils.
sourceSets {
androidTest {
java.srcDirs += "../../testutils/src/main/java/"
diff --git a/library/dash/build.gradle b/library/dash/build.gradle
index ebad5a8603..36d3edfbae 100644
--- a/library/dash/build.gradle
+++ b/library/dash/build.gradle
@@ -22,12 +22,6 @@ android {
targetSdkVersion project.ext.targetSdkVersion
}
- sourceSets {
- androidTest {
- java.srcDirs += "../../testutils/src/main/java/"
- }
- }
-
buildTypes {
debug {
testCoverageEnabled = true
@@ -39,6 +33,7 @@ dependencies {
compile project(':library-core')
compile 'com.android.support:support-annotations:' + supportLibraryVersion
compile 'com.android.support:support-core-utils:' + supportLibraryVersion
+ androidTestCompile project(':testutils')
androidTestCompile 'com.google.dexmaker:dexmaker:' + dexmakerVersion
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:' + dexmakerVersion
androidTestCompile 'org.mockito:mockito-core:' + mockitoVersion
diff --git a/library/smoothstreaming/build.gradle b/library/smoothstreaming/build.gradle
index 81f8234672..28ebd74758 100644
--- a/library/smoothstreaming/build.gradle
+++ b/library/smoothstreaming/build.gradle
@@ -22,12 +22,6 @@ android {
targetSdkVersion project.ext.targetSdkVersion
}
- sourceSets {
- androidTest {
- java.srcDirs += "../../testutils/src/main/java/"
- }
- }
-
buildTypes {
debug {
testCoverageEnabled = true
@@ -38,6 +32,7 @@ android {
dependencies {
compile project(':library-core')
compile 'com.android.support:support-annotations:' + supportLibraryVersion
+ androidTestCompile project(':testutils')
androidTestCompile 'com.google.dexmaker:dexmaker:' + dexmakerVersion
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:' + dexmakerVersion
androidTestCompile 'org.mockito:mockito-core:' + mockitoVersion
diff --git a/playbacktests/build.gradle b/playbacktests/build.gradle
index 6a09eac49e..199077f2b2 100644
--- a/playbacktests/build.gradle
+++ b/playbacktests/build.gradle
@@ -24,7 +24,8 @@ android {
}
dependencies {
- compile project(':library-core')
+ androidTestCompile project(':library-core')
androidTestCompile project(':library-dash')
androidTestCompile project(':library-hls')
+ androidTestCompile project(':testutils')
}
diff --git a/playbacktests/src/androidTest/AndroidManifest.xml b/playbacktests/src/androidTest/AndroidManifest.xml
index 64b927655f..053fe4e61c 100644
--- a/playbacktests/src/androidTest/AndroidManifest.xml
+++ b/playbacktests/src/androidTest/AndroidManifest.xml
@@ -28,7 +28,7 @@
tools:ignore="MissingApplicationIcon,HardcodedDebugMode">
-
diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashStreamingTest.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashStreamingTest.java
index 24f73e9d08..669241e65c 100644
--- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashStreamingTest.java
+++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashStreamingTest.java
@@ -20,8 +20,8 @@ import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.mediacodec.MediaCodecInfo;
import com.google.android.exoplayer2.mediacodec.MediaCodecUtil;
import com.google.android.exoplayer2.mediacodec.MediaCodecUtil.DecoderQueryException;
-import com.google.android.exoplayer2.playbacktests.util.ActionSchedule;
-import com.google.android.exoplayer2.playbacktests.util.HostActivity;
+import com.google.android.exoplayer2.testutil.ActionSchedule;
+import com.google.android.exoplayer2.testutil.HostActivity;
import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.util.Util;
diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java
index 381a873d94..7d80acd9e4 100644
--- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java
+++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java
@@ -38,18 +38,18 @@ import com.google.android.exoplayer2.drm.HttpMediaDrmCallback;
import com.google.android.exoplayer2.drm.MediaDrmCallback;
import com.google.android.exoplayer2.drm.UnsupportedDrmException;
import com.google.android.exoplayer2.mediacodec.MediaCodecUtil;
-import com.google.android.exoplayer2.playbacktests.util.ActionSchedule;
-import com.google.android.exoplayer2.playbacktests.util.DebugRenderersFactory;
-import com.google.android.exoplayer2.playbacktests.util.DecoderCountersUtil;
-import com.google.android.exoplayer2.playbacktests.util.ExoHostedTest;
-import com.google.android.exoplayer2.playbacktests.util.HostActivity;
-import com.google.android.exoplayer2.playbacktests.util.HostActivity.HostedTest;
-import com.google.android.exoplayer2.playbacktests.util.MetricsLogger;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.TrackGroup;
import com.google.android.exoplayer2.source.TrackGroupArray;
import com.google.android.exoplayer2.source.dash.DashMediaSource;
import com.google.android.exoplayer2.source.dash.DefaultDashChunkSource;
+import com.google.android.exoplayer2.testutil.ActionSchedule;
+import com.google.android.exoplayer2.testutil.DebugRenderersFactory;
+import com.google.android.exoplayer2.testutil.DecoderCountersUtil;
+import com.google.android.exoplayer2.testutil.ExoHostedTest;
+import com.google.android.exoplayer2.testutil.HostActivity;
+import com.google.android.exoplayer2.testutil.HostActivity.HostedTest;
+import com.google.android.exoplayer2.testutil.MetricsLogger;
import com.google.android.exoplayer2.trackselection.FixedTrackSelection;
import com.google.android.exoplayer2.trackselection.MappingTrackSelector;
import com.google.android.exoplayer2.trackselection.RandomTrackSelection;
diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashWidevineOfflineTest.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashWidevineOfflineTest.java
index 44f25b49d9..e43eab5dc3 100644
--- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashWidevineOfflineTest.java
+++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashWidevineOfflineTest.java
@@ -22,10 +22,10 @@ import com.google.android.exoplayer2.drm.DrmInitData;
import com.google.android.exoplayer2.drm.DrmSession.DrmSessionException;
import com.google.android.exoplayer2.drm.FrameworkMediaCrypto;
import com.google.android.exoplayer2.drm.OfflineLicenseHelper;
-import com.google.android.exoplayer2.playbacktests.util.ActionSchedule;
-import com.google.android.exoplayer2.playbacktests.util.HostActivity;
import com.google.android.exoplayer2.source.dash.DashUtil;
import com.google.android.exoplayer2.source.dash.manifest.DashManifest;
+import com.google.android.exoplayer2.testutil.ActionSchedule;
+import com.google.android.exoplayer2.testutil.HostActivity;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory;
import com.google.android.exoplayer2.util.MimeTypes;
diff --git a/testutils/src/main/AndroidManifest.xml b/testutils/src/main/AndroidManifest.xml
index 31db3e2f12..ef1411d737 100644
--- a/testutils/src/main/AndroidManifest.xml
+++ b/testutils/src/main/AndroidManifest.xml
@@ -14,4 +14,4 @@
limitations under the License.
-->
-
+
diff --git a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/Action.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java
similarity index 98%
rename from playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/Action.java
rename to testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java
index edb0fa59bf..b1c6f081cf 100644
--- a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/Action.java
+++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.google.android.exoplayer2.playbacktests.util;
+package com.google.android.exoplayer2.testutil;
import android.util.Log;
import android.view.Surface;
diff --git a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/ActionSchedule.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ActionSchedule.java
similarity index 92%
rename from playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/ActionSchedule.java
rename to testutils/src/main/java/com/google/android/exoplayer2/testutil/ActionSchedule.java
index 94204ca1b5..ede4dc5553 100644
--- a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/ActionSchedule.java
+++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ActionSchedule.java
@@ -13,17 +13,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.google.android.exoplayer2.playbacktests.util;
+package com.google.android.exoplayer2.testutil;
import android.os.Handler;
import android.view.Surface;
import com.google.android.exoplayer2.SimpleExoPlayer;
-import com.google.android.exoplayer2.playbacktests.util.Action.ClearVideoSurface;
-import com.google.android.exoplayer2.playbacktests.util.Action.Seek;
-import com.google.android.exoplayer2.playbacktests.util.Action.SetPlayWhenReady;
-import com.google.android.exoplayer2.playbacktests.util.Action.SetRendererDisabled;
-import com.google.android.exoplayer2.playbacktests.util.Action.SetVideoSurface;
-import com.google.android.exoplayer2.playbacktests.util.Action.Stop;
+import com.google.android.exoplayer2.testutil.Action.ClearVideoSurface;
+import com.google.android.exoplayer2.testutil.Action.Seek;
+import com.google.android.exoplayer2.testutil.Action.SetPlayWhenReady;
+import com.google.android.exoplayer2.testutil.Action.SetRendererDisabled;
+import com.google.android.exoplayer2.testutil.Action.SetVideoSurface;
+import com.google.android.exoplayer2.testutil.Action.Stop;
import com.google.android.exoplayer2.trackselection.MappingTrackSelector;
/**
diff --git a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/DebugRenderersFactory.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/DebugRenderersFactory.java
similarity index 98%
rename from playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/DebugRenderersFactory.java
rename to testutils/src/main/java/com/google/android/exoplayer2/testutil/DebugRenderersFactory.java
index 6cb7673ebd..af7c1a3e2a 100644
--- a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/DebugRenderersFactory.java
+++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/DebugRenderersFactory.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.google.android.exoplayer2.playbacktests.util;
+package com.google.android.exoplayer2.testutil;
import android.annotation.TargetApi;
import android.content.Context;
diff --git a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/DecoderCountersUtil.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/DecoderCountersUtil.java
similarity index 97%
rename from playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/DecoderCountersUtil.java
rename to testutils/src/main/java/com/google/android/exoplayer2/testutil/DecoderCountersUtil.java
index aafb828345..448ec79c2d 100644
--- a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/DecoderCountersUtil.java
+++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/DecoderCountersUtil.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.google.android.exoplayer2.playbacktests.util;
+package com.google.android.exoplayer2.testutil;
import com.google.android.exoplayer2.decoder.DecoderCounters;
import junit.framework.TestCase;
diff --git a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/ExoHostedTest.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java
similarity index 98%
rename from playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/ExoHostedTest.java
rename to testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java
index 56f11d86e3..7af3e990af 100644
--- a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/ExoHostedTest.java
+++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.google.android.exoplayer2.playbacktests.util;
+package com.google.android.exoplayer2.testutil;
import android.os.Handler;
import android.os.SystemClock;
@@ -33,9 +33,9 @@ import com.google.android.exoplayer2.audio.AudioTrack;
import com.google.android.exoplayer2.decoder.DecoderCounters;
import com.google.android.exoplayer2.drm.DrmSessionManager;
import com.google.android.exoplayer2.drm.FrameworkMediaCrypto;
-import com.google.android.exoplayer2.playbacktests.util.HostActivity.HostedTest;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.TrackGroupArray;
+import com.google.android.exoplayer2.testutil.HostActivity.HostedTest;
import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.MappingTrackSelector;
diff --git a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/HostActivity.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/HostActivity.java
similarity index 96%
rename from playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/HostActivity.java
rename to testutils/src/main/java/com/google/android/exoplayer2/testutil/HostActivity.java
index 9c2ced3a8a..ecbe00b487 100644
--- a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/HostActivity.java
+++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/HostActivity.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.google.android.exoplayer2.playbacktests.util;
+package com.google.android.exoplayer2.testutil;
import static junit.framework.Assert.fail;
@@ -32,7 +32,6 @@ import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;
-import com.google.android.exoplayer2.playbacktests.R;
import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Util;
@@ -142,8 +141,9 @@ public final class HostActivity extends Activity implements SurfaceHolder.Callba
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.host_activity);
- surfaceView = (SurfaceView) findViewById(R.id.surface_view);
+ setContentView(getResources().getIdentifier("host_activity", "layout", getPackageName()));
+ surfaceView = (SurfaceView) findViewById(
+ getResources().getIdentifier("surface_view", "id", getPackageName()));
surfaceView.getHolder().addCallback(this);
mainHandler = new Handler();
checkCanStopRunnable = new CheckCanStopRunnable();
diff --git a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/LogcatMetricsLogger.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/LogcatMetricsLogger.java
similarity index 95%
rename from playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/LogcatMetricsLogger.java
rename to testutils/src/main/java/com/google/android/exoplayer2/testutil/LogcatMetricsLogger.java
index 4c44f77143..fdff47dd2c 100644
--- a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/LogcatMetricsLogger.java
+++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/LogcatMetricsLogger.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.google.android.exoplayer2.playbacktests.util;
+package com.google.android.exoplayer2.testutil;
import android.util.Log;
diff --git a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/MetricsLogger.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/MetricsLogger.java
similarity index 97%
rename from playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/MetricsLogger.java
rename to testutils/src/main/java/com/google/android/exoplayer2/testutil/MetricsLogger.java
index 6e36ff728f..64d1944927 100644
--- a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/MetricsLogger.java
+++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/MetricsLogger.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.google.android.exoplayer2.playbacktests.util;
+package com.google.android.exoplayer2.testutil;
import android.app.Instrumentation;
diff --git a/playbacktests/src/main/res/layout/host_activity.xml b/testutils/src/main/res/layout/host_activity.xml
similarity index 100%
rename from playbacktests/src/main/res/layout/host_activity.xml
rename to testutils/src/main/res/layout/host_activity.xml