diff options
author | Nick Chalko <nchalko@google.com> | 2020-01-31 17:21:40 -0800 |
---|---|---|
committer | Nick Chalko <nchalko@google.com> | 2020-01-31 17:38:47 -0800 |
commit | 85dcba06ddc06edde27c79a655a2c6db440f42b2 (patch) | |
tree | 16b597cb8cc63e37aae85d612e1e55a7d074ab5c | |
parent | 99ac9b0a28c0131fda54eec542ede3eb20cbda98 (diff) | |
download | TV-85dcba06ddc06edde27c79a655a2c6db440f42b2.tar.gz |
Add test for CustomizationManager
PiperOrigin-RevId: 292646515
Change-Id: I3c8cc0fe9483f3718d2100194e4349e8604c5f92
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) |