aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Chalko <nchalko@google.com>2020-01-31 17:21:40 -0800
committerNick Chalko <nchalko@google.com>2020-01-31 17:38:47 -0800
commit85dcba06ddc06edde27c79a655a2c6db440f42b2 (patch)
tree16b597cb8cc63e37aae85d612e1e55a7d074ab5c
parent99ac9b0a28c0131fda54eec542ede3eb20cbda98 (diff)
downloadTV-85dcba06ddc06edde27c79a655a2c6db440f42b2.tar.gz
Add test for CustomizationManager
PiperOrigin-RevId: 292646515 Change-Id: I3c8cc0fe9483f3718d2100194e4349e8604c5f92
-rw-r--r--common/src/com/android/tv/common/customization/CustomizationManager.java35
-rw-r--r--common/tests/robotests/src/com/android/tv/common/customization/CustomizationManagerTest.java85
-rw-r--r--tests/robotests/src/com/android/tv/dvr/provider/DvrDbSyncTest.java10
-rw-r--r--tests/robotests/src/com/android/tv/dvr/recorder/InputTaskSchedulerTest.java11
-rw-r--r--tests/robotests/src/com/android/tv/dvr/recorder/RecordingTaskTest.java7
-rw-r--r--tests/robotests/src/com/android/tv/dvr/recorder/SchedulerTest.java7
6 files changed, 118 insertions, 37 deletions
diff --git a/common/src/com/android/tv/common/customization/CustomizationManager.java b/common/src/com/android/tv/common/customization/CustomizationManager.java
index acdad2c9..6ec60fe4 100644
--- a/common/src/com/android/tv/common/customization/CustomizationManager.java
+++ b/common/src/com/android/tv/common/customization/CustomizationManager.java
@@ -26,6 +26,7 @@ import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.support.annotation.IntDef;
import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import android.util.Log;
@@ -159,27 +160,33 @@ public class CustomizationManager {
private static String getCustomizationPackageName(Context context) {
if (sCustomizationPackage == null) {
- sCustomizationPackage = "";
+
List<PackageInfo> packageInfos =
context.getPackageManager()
.getPackagesHoldingPermissions(CUSTOMIZE_PERMISSIONS, 0);
- if (!packageInfos.isEmpty()) {
- /** Iterate through all packages returning the first vendor customizer */
- for (PackageInfo packageInfo : packageInfos) {
- if (packageInfo.packageName.startsWith("com.android") == false) {
- sCustomizationPackage = packageInfo.packageName;
- break;
- }
- }
+ sCustomizationPackage = getCustomizationPackageName(packageInfos);
+ }
+
+ return sCustomizationPackage;
+ }
- /** If no vendor package found, return first in the list */
- if (TextUtils.isEmpty(sCustomizationPackage)) {
- sCustomizationPackage = packageInfos.get(0).packageName;
+ @VisibleForTesting
+ static String getCustomizationPackageName(List<PackageInfo> packageInfos) {
+ String packageName = "";
+ if (!packageInfos.isEmpty()) {
+ /** Iterate through all packages returning the first vendor customizer */
+ for (PackageInfo packageInfo : packageInfos) {
+ if (packageInfo.packageName.startsWith("com.android") == false) {
+ packageName = packageInfo.packageName;
+ break;
}
}
+ /** If no vendor package found, return first in the list */
+ if (TextUtils.isEmpty(packageName)) {
+ packageName = packageInfos.get(0).packageName;
+ }
}
-
- return sCustomizationPackage;
+ return packageName;
}
/** Initialize TV customization options. Run this API only on the main thread. */
diff --git a/common/tests/robotests/src/com/android/tv/common/customization/CustomizationManagerTest.java b/common/tests/robotests/src/com/android/tv/common/customization/CustomizationManagerTest.java
new file mode 100644
index 00000000..bbf9f22a
--- /dev/null
+++ b/common/tests/robotests/src/com/android/tv/common/customization/CustomizationManagerTest.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.tv.common.customization;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.pm.PackageInfo;
+
+import androidx.test.core.content.pm.PackageInfoBuilder;
+
+import com.android.tv.testing.constants.ConfigConstants;
+
+import com.google.common.collect.ImmutableList;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+
+/** Tests for {@link CustomizationManager}. */
+@RunWith(RobolectricTestRunner.class)
+@Config(sdk = ConfigConstants.SDK)
+public class CustomizationManagerTest {
+
+ @Test
+ public void getCustomizationPackageName_empty() {
+ assertThat(CustomizationManager.getCustomizationPackageName(ImmutableList.of())).isEmpty();
+ }
+
+ @Test
+ public void getCustomizationPackageName_one() {
+ assertThat(
+ CustomizationManager.getCustomizationPackageName(
+ ImmutableList.of(createPackageInfo("com.example.one"))))
+ .isEqualTo("com.example.one");
+ }
+
+ @Test
+ public void getCustomizationPackageName_first() {
+ assertThat(
+ CustomizationManager.getCustomizationPackageName(
+ ImmutableList.of(
+ createPackageInfo("com.example.one"),
+ createPackageInfo("com.example.two"))))
+ .isEqualTo("com.example.one");
+ }
+
+ @Test
+ public void getCustomizationPackageName_firstNotAndroid() {
+ assertThat(
+ CustomizationManager.getCustomizationPackageName(
+ ImmutableList.of(
+ createPackageInfo("com.android.one"),
+ createPackageInfo("com.example.two"),
+ createPackageInfo("com.example.three"))))
+ .isEqualTo("com.example.two");
+ }
+
+ @Test
+ public void getCustomizationPackageName_androidOnly() {
+ assertThat(
+ CustomizationManager.getCustomizationPackageName(
+ ImmutableList.of(
+ createPackageInfo("com.android.one"),
+ createPackageInfo("com.android.two"))))
+ .isEqualTo("com.android.one");
+ }
+
+ private static PackageInfo createPackageInfo(String packageName) {
+ return PackageInfoBuilder.newBuilder().setPackageName(packageName).build();
+ }
+}
diff --git a/tests/robotests/src/com/android/tv/dvr/provider/DvrDbSyncTest.java b/tests/robotests/src/com/android/tv/dvr/provider/DvrDbSyncTest.java
index c7ae5240..0ee6b38d 100644
--- a/tests/robotests/src/com/android/tv/dvr/provider/DvrDbSyncTest.java
+++ b/tests/robotests/src/com/android/tv/dvr/provider/DvrDbSyncTest.java
@@ -20,13 +20,12 @@ import static com.google.common.truth.Truth.assertThat;
import static java.lang.Math.abs;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Matchers.refEq;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.refEq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import com.android.tv.common.flags.DvrFlags;
import com.android.tv.common.flags.impl.DefaultDvrFlags;
import com.android.tv.data.ChannelDataManager;
import com.android.tv.data.ProgramImpl;
@@ -38,7 +37,8 @@ import com.android.tv.dvr.data.SeriesRecording;
import com.android.tv.dvr.recorder.SeriesRecordingScheduler;
import com.android.tv.testing.TestSingletonApp;
import com.android.tv.testing.constants.ConfigConstants;
-
+import com.android.tv.common.flags.DvrFlags;
+import java.util.concurrent.TimeUnit;
import org.junit.Assume;
import org.junit.Before;
import org.junit.Test;
@@ -51,8 +51,6 @@ import org.robolectric.RuntimeEnvironment;
import org.robolectric.android.util.concurrent.RoboExecutorService;
import org.robolectric.annotation.Config;
-import java.util.concurrent.TimeUnit;
-
/** Tests for {@link com.android.tv.dvr.DvrScheduleManager} */
@RunWith(RobolectricTestRunner.class)
@Config(sdk = ConfigConstants.SDK, application = TestSingletonApp.class)
diff --git a/tests/robotests/src/com/android/tv/dvr/recorder/InputTaskSchedulerTest.java b/tests/robotests/src/com/android/tv/dvr/recorder/InputTaskSchedulerTest.java
index 40069f62..8ab8a317 100644
--- a/tests/robotests/src/com/android/tv/dvr/recorder/InputTaskSchedulerTest.java
+++ b/tests/robotests/src/com/android/tv/dvr/recorder/InputTaskSchedulerTest.java
@@ -19,7 +19,7 @@ package com.android.tv.dvr.recorder;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
-import static org.mockito.Matchers.eq;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.timeout;
@@ -31,7 +31,6 @@ import android.media.tv.TvInputInfo;
import android.os.Build;
import android.os.Looper;
import android.os.SystemClock;
-
import com.android.tv.InputSessionManager;
import com.android.tv.common.util.Clock;
import com.android.tv.data.ChannelDataManager;
@@ -44,7 +43,9 @@ import com.android.tv.testing.TestSingletonApp;
import com.android.tv.testing.dvr.RecordingTestUtils;
import com.android.tv.testing.fakes.FakeClock;
import com.android.tv.testing.utils.TestUtils;
-
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -54,10 +55,6 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
/** Tests for {@link InputTaskScheduler}. */
@RunWith(RobolectricTestRunner.class)
@Config(sdk = Build.VERSION_CODES.N, application = TestSingletonApp.class)
diff --git a/tests/robotests/src/com/android/tv/dvr/recorder/RecordingTaskTest.java b/tests/robotests/src/com/android/tv/dvr/recorder/RecordingTaskTest.java
index 55ee270c..501087ff 100644
--- a/tests/robotests/src/com/android/tv/dvr/recorder/RecordingTaskTest.java
+++ b/tests/robotests/src/com/android/tv/dvr/recorder/RecordingTaskTest.java
@@ -22,7 +22,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Matchers.eq;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
@@ -31,7 +31,6 @@ import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
-
import com.android.tv.InputSessionManager;
import com.android.tv.InputSessionManager.RecordingSession;
import com.android.tv.common.feature.CommonFeatures;
@@ -45,7 +44,7 @@ import com.android.tv.testing.TestSingletonApp;
import com.android.tv.testing.dvr.DvrDataManagerInMemoryImpl;
import com.android.tv.testing.dvr.RecordingTestUtils;
import com.android.tv.testing.fakes.FakeClock;
-
+import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -56,8 +55,6 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
-import java.util.concurrent.TimeUnit;
-
/** Tests for {@link RecordingTask}. */
@RunWith(RobolectricTestRunner.class)
@Config(sdk = Build.VERSION_CODES.N, application = TestSingletonApp.class)
diff --git a/tests/robotests/src/com/android/tv/dvr/recorder/SchedulerTest.java b/tests/robotests/src/com/android/tv/dvr/recorder/SchedulerTest.java
index d2bd2ff1..062947bc 100644
--- a/tests/robotests/src/com/android/tv/dvr/recorder/SchedulerTest.java
+++ b/tests/robotests/src/com/android/tv/dvr/recorder/SchedulerTest.java
@@ -19,7 +19,7 @@ package com.android.tv.dvr.recorder;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Matchers.eq;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
@@ -27,7 +27,6 @@ import android.app.AlarmManager;
import android.app.PendingIntent;
import android.os.Build;
import android.os.Looper;
-
import com.android.tv.InputSessionManager;
import com.android.tv.common.feature.CommonFeatures;
import com.android.tv.common.feature.TestableFeature;
@@ -39,7 +38,7 @@ import com.android.tv.testing.dvr.DvrDataManagerInMemoryImpl;
import com.android.tv.testing.dvr.RecordingTestUtils;
import com.android.tv.testing.fakes.FakeClock;
import com.android.tv.util.TvInputManagerHelper;
-
+import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -51,8 +50,6 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
-import java.util.concurrent.TimeUnit;
-
/** Tests for {@link RecordingScheduler}. */
@RunWith(RobolectricTestRunner.class)
@Config(sdk = Build.VERSION_CODES.N, application = TestSingletonApp.class)