summaryrefslogtreecommitdiff
path: root/Settings/tests/robotests/src/com/android/tv/settings/device
diff options
context:
space:
mode:
Diffstat (limited to 'Settings/tests/robotests/src/com/android/tv/settings/device')
-rw-r--r--Settings/tests/robotests/src/com/android/tv/settings/device/apps/NotificationsPreferenceTest.java38
-rw-r--r--Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/AdvancedVolumeFragmentTest.java97
-rw-r--r--Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/DisplaySoundFragmentTest.java1
-rw-r--r--Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/HdrFormatSelectionFragmentTest.java82
-rw-r--r--Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/MatchContentFrameRateFragmentTest.java2
-rw-r--r--Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/PreferredDynamicRangeFragmentTest.java185
-rw-r--r--Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/ResolutionSelectionFragmentTest.java29
7 files changed, 374 insertions, 60 deletions
diff --git a/Settings/tests/robotests/src/com/android/tv/settings/device/apps/NotificationsPreferenceTest.java b/Settings/tests/robotests/src/com/android/tv/settings/device/apps/NotificationsPreferenceTest.java
index 4bc952827..720a70818 100644
--- a/Settings/tests/robotests/src/com/android/tv/settings/device/apps/NotificationsPreferenceTest.java
+++ b/Settings/tests/robotests/src/com/android/tv/settings/device/apps/NotificationsPreferenceTest.java
@@ -51,9 +51,6 @@ public class NotificationsPreferenceTest {
private static final String PACKAGE_NAME = "com.example.test";
private static final int PACKAGE_UID = 20;
- // private final String[] mFilledNonBlockableAppsList = {PACKAGE_NAME};
- private final String[] mEmptyNonBlockableAppsList = {};
-
@Mock
ApplicationInfo mApplicationInfo;
@Mock
@@ -87,13 +84,15 @@ public class NotificationsPreferenceTest {
mApplicationInfo.packageName = PACKAGE_NAME;
mApplicationInfo.uid = PACKAGE_UID;
mAppEntry.info = mApplicationInfo;
+ mPackageInfo.applicationInfo = mApplicationInfo;
+ mPackageInfo.packageName = PACKAGE_NAME;
}
@Test
public void testNotificationsPreference_systemAppNotificationsEnabledInRes() {
setSystemApp(true);
setNotificationsEnabledForPackage(PACKAGE_NAME, true);
- setNotificationsUnblockableByResList(PACKAGE_NAME, true);
+ setNotificationsUnblockableByImportanceLocked(mApplicationInfo, true);
mNotificationsPreference = new NotificationsPreference(mContext, mAppEntry);
mNotificationsPreference.refresh();
@@ -105,7 +104,7 @@ public class NotificationsPreferenceTest {
public void testNotificationsPreference_systemAppNotificationsEnabledNotInRes() {
setSystemApp(true);
setNotificationsEnabledForPackage(PACKAGE_NAME, true);
- setNotificationsUnblockableByResList(PACKAGE_NAME, false);
+ setNotificationsUnblockableByImportanceLocked(mApplicationInfo, false);
mNotificationsPreference = new NotificationsPreference(mContext, mAppEntry);
mNotificationsPreference.refresh();
@@ -117,7 +116,7 @@ public class NotificationsPreferenceTest {
public void testNotificationsPreference_notSystemAppNotificationsEnabledInRes() {
setSystemApp(false);
setNotificationsEnabledForPackage(PACKAGE_NAME, true);
- setNotificationsUnblockableByResList(PACKAGE_NAME, true);
+ setNotificationsUnblockableByImportanceLocked(mApplicationInfo, true);
mNotificationsPreference = new NotificationsPreference(mContext, mAppEntry);
mNotificationsPreference.refresh();
@@ -129,7 +128,7 @@ public class NotificationsPreferenceTest {
public void testNotificationsPreference_notSystemAppNotificationsEnabledNotInRes() {
setSystemApp(false);
setNotificationsEnabledForPackage(PACKAGE_NAME, true);
- setNotificationsUnblockableByResList(PACKAGE_NAME, false);
+ setNotificationsUnblockableByImportanceLocked(mApplicationInfo, false);
mNotificationsPreference = new NotificationsPreference(mContext, mAppEntry);
mNotificationsPreference.refresh();
@@ -141,7 +140,7 @@ public class NotificationsPreferenceTest {
public void testNotificationsPreference_systemAppNotificationsDisabledNotInRes() {
setSystemApp(true);
setNotificationsEnabledForPackage(PACKAGE_NAME, false);
- setNotificationsUnblockableByResList(PACKAGE_NAME, false);
+ setNotificationsUnblockableByImportanceLocked(mApplicationInfo, false);
mNotificationsPreference = new NotificationsPreference(mContext, mAppEntry);
mNotificationsPreference.refresh();
@@ -153,7 +152,7 @@ public class NotificationsPreferenceTest {
public void testNotificationsPreference_notSystemAppNotificationsEDisabledInRes() {
setSystemApp(false);
setNotificationsEnabledForPackage(PACKAGE_NAME, false);
- setNotificationsUnblockableByResList(PACKAGE_NAME, true);
+ setNotificationsUnblockableByImportanceLocked(mApplicationInfo, true);
mNotificationsPreference = new NotificationsPreference(mContext, mAppEntry);
mNotificationsPreference.refresh();
@@ -165,7 +164,7 @@ public class NotificationsPreferenceTest {
public void testNotificationsPreference_notSystemAppNotificationsDisabledNotInRes() {
setSystemApp(false);
setNotificationsEnabledForPackage(PACKAGE_NAME, false);
- setNotificationsUnblockableByResList(PACKAGE_NAME, false);
+ setNotificationsUnblockableByImportanceLocked(mApplicationInfo, false);
mNotificationsPreference = new NotificationsPreference(mContext, mAppEntry);
mNotificationsPreference.refresh();
@@ -177,7 +176,7 @@ public class NotificationsPreferenceTest {
public void testNotificationsPreference_systemAppNotificationsDisabledInRes() {
setSystemApp(true);
setNotificationsEnabledForPackage(PACKAGE_NAME, false);
- setNotificationsUnblockableByResList(PACKAGE_NAME, true);
+ setNotificationsUnblockableByImportanceLocked(mApplicationInfo, true);
mNotificationsPreference = new NotificationsPreference(mContext, mAppEntry);
mNotificationsPreference.refresh();
@@ -199,15 +198,14 @@ public class NotificationsPreferenceTest {
}
}
- private void setNotificationsUnblockableByResList(String packageName,
- boolean inUnblockableResList) {
- String[] unblockableResList =
- inUnblockableResList ? new String[]{packageName} : mEmptyNonBlockableAppsList;
-
- when(mResources.getStringArray(
- mResources.getIdentifier("config_nonBlockableNotificationPackages",
- "array", "android")
- )).thenReturn(unblockableResList);
+ private void setNotificationsUnblockableByImportanceLocked(ApplicationInfo applicationInfo,
+ boolean isUnblockable) {
+ try {
+ when(mNotificationManager.isImportanceLocked(applicationInfo.packageName,
+ applicationInfo.uid)).thenReturn(isUnblockable);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
}
}
diff --git a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/AdvancedVolumeFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/AdvancedVolumeFragmentTest.java
index 569219e93..a1ce37670 100644
--- a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/AdvancedVolumeFragmentTest.java
+++ b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/AdvancedVolumeFragmentTest.java
@@ -61,7 +61,8 @@ import java.util.stream.IntStream;
@RunWith(RobolectricTestRunner.class)
public class AdvancedVolumeFragmentTest {
- @Spy private AudioManager mAudioManager;
+ @Spy
+ private AudioManager mAudioManager;
@Before
public void setUp() {
@@ -161,6 +162,100 @@ public class AdvancedVolumeFragmentTest {
}
@Test
+ public void testOnPreferenceTreeClick_withDTSFormatsDisabled_disablesFormatInAudioManager() {
+ Map<Integer, Boolean> formats = ImmutableMap.of(
+ AudioFormat.ENCODING_DTS_HD, true,
+ AudioFormat.ENCODING_DTS_HD_MA, true,
+ AudioFormat.ENCODING_DTS_UHD_P1, true,
+ AudioFormat.ENCODING_DTS_UHD_P2, true);
+ List<Integer> reportedFormats = Arrays.asList(
+ AudioFormat.ENCODING_DTS_HD,
+ AudioFormat.ENCODING_DTS_HD_MA,
+ AudioFormat.ENCODING_DTS_UHD_P1,
+ AudioFormat.ENCODING_DTS_UHD_P2);
+ AdvancedVolumeFragment fragment =
+ createAdvancedVolumeFragmentWithAudioManagerReturning(formats, reportedFormats);
+
+ Preference preference = fragment.findPreference(KEY_SURROUND_SOUND_MANUAL);
+ fragment.onPreferenceTreeClick(preference);
+
+ SwitchPreference pref = (SwitchPreference) fragment.findPreference(
+ KEY_SURROUND_SOUND_FORMAT_PREFIX + AudioFormat.ENCODING_DTS_HD);
+ pref.setChecked(false);
+ fragment.onPreferenceTreeClick(pref);
+
+ pref = (SwitchPreference) fragment.findPreference(
+ KEY_SURROUND_SOUND_FORMAT_PREFIX + AudioFormat.ENCODING_DTS_UHD_P1);
+ pref.setChecked(false);
+ fragment.onPreferenceTreeClick(pref);
+
+ ArgumentCaptor<Integer> audioFormat = ArgumentCaptor.forClass(Integer.class);
+ ArgumentCaptor<Boolean> formatEnabled = ArgumentCaptor.forClass(Boolean.class);
+ verify(mAudioManager, times(8)).setSurroundFormatEnabled(
+ audioFormat.capture(), formatEnabled.capture());
+ List<Integer> expectedFormats = Arrays.asList(
+ AudioFormat.ENCODING_DTS_HD,
+ AudioFormat.ENCODING_DTS_HD_MA,
+ AudioFormat.ENCODING_DTS_UHD_P1,
+ AudioFormat.ENCODING_DTS_UHD_P2,
+ AudioFormat.ENCODING_DTS_HD,
+ AudioFormat.ENCODING_DTS_HD_MA,
+ AudioFormat.ENCODING_DTS_UHD_P1,
+ AudioFormat.ENCODING_DTS_UHD_P2);
+ List<Boolean> expectedValues = Arrays.asList(
+ true, true, true, true, false, false, false, false);
+ assertThat(audioFormat.getAllValues()).containsExactlyElementsIn(expectedFormats);
+ assertThat(formatEnabled.getAllValues()).containsExactlyElementsIn(expectedValues);
+ }
+
+ @Test
+ public void testOnPreferenceTreeClick_withDTSFormatsEnabled_enablesFormatInAudioManager() {
+ Map<Integer, Boolean> formats = ImmutableMap.of(
+ AudioFormat.ENCODING_DTS_HD, false,
+ AudioFormat.ENCODING_DTS_HD_MA, false,
+ AudioFormat.ENCODING_DTS_UHD_P1, false,
+ AudioFormat.ENCODING_DTS_UHD_P2, false);
+ List<Integer> reportedFormats = Arrays.asList(
+ AudioFormat.ENCODING_DTS_HD,
+ AudioFormat.ENCODING_DTS_HD_MA,
+ AudioFormat.ENCODING_DTS_UHD_P1,
+ AudioFormat.ENCODING_DTS_UHD_P2);
+ AdvancedVolumeFragment fragment =
+ createAdvancedVolumeFragmentWithAudioManagerReturning(formats, reportedFormats);
+
+ Preference preference = fragment.findPreference(KEY_SURROUND_SOUND_MANUAL);
+ fragment.onPreferenceTreeClick(preference);
+
+ SwitchPreference pref = (SwitchPreference) fragment.findPreference(
+ KEY_SURROUND_SOUND_FORMAT_PREFIX + AudioFormat.ENCODING_DTS_HD);
+ pref.setChecked(true);
+ fragment.onPreferenceTreeClick(pref);
+
+ pref = (SwitchPreference) fragment.findPreference(
+ KEY_SURROUND_SOUND_FORMAT_PREFIX + AudioFormat.ENCODING_DTS_UHD_P1);
+ pref.setChecked(true);
+ fragment.onPreferenceTreeClick(pref);
+
+ ArgumentCaptor<Integer> audioFormat = ArgumentCaptor.forClass(Integer.class);
+ ArgumentCaptor<Boolean> formatEnabled = ArgumentCaptor.forClass(Boolean.class);
+ verify(mAudioManager, times(8)).setSurroundFormatEnabled(
+ audioFormat.capture(), formatEnabled.capture());
+ List<Integer> expectedFormats = Arrays.asList(
+ AudioFormat.ENCODING_DTS_HD,
+ AudioFormat.ENCODING_DTS_HD_MA,
+ AudioFormat.ENCODING_DTS_UHD_P1,
+ AudioFormat.ENCODING_DTS_UHD_P2,
+ AudioFormat.ENCODING_DTS_HD,
+ AudioFormat.ENCODING_DTS_HD_MA,
+ AudioFormat.ENCODING_DTS_UHD_P1,
+ AudioFormat.ENCODING_DTS_UHD_P2);
+ List<Boolean> expectedValues = Arrays.asList(
+ true, true, true, true, true, true, true, true);
+ assertThat(audioFormat.getAllValues()).containsExactlyElementsIn(expectedFormats);
+ assertThat(formatEnabled.getAllValues()).containsExactlyElementsIn(expectedValues);
+ }
+
+ @Test
public void testGetPreferenceScreen_whenManual_returnsFormatsInCorrectPreferenceGroup() {
Map<Integer, Boolean> formats = ImmutableMap.of(
AudioFormat.ENCODING_DTS, true,
diff --git a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/DisplaySoundFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/DisplaySoundFragmentTest.java
index 9ad847dee..64014b79b 100644
--- a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/DisplaySoundFragmentTest.java
+++ b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/DisplaySoundFragmentTest.java
@@ -80,6 +80,7 @@ public class DisplaySoundFragmentTest {
Display display = spy(Display.class);
doReturn(supportedModes).when(display).getSupportedModes();
doReturn(systemPreferredMode).when(display).getSystemPreferredDisplayMode();
+ doReturn(new int[]{}).when(mDisplayManager).getSupportedHdrOutputTypes();
doReturn(display).when(mDisplayManager).getDisplay(Display.DEFAULT_DISPLAY);
DisplaySoundFragment fragment = spy(DisplaySoundFragment.class);
diff --git a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/HdrFormatSelectionFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/HdrFormatSelectionFragmentTest.java
index e5f301ffc..9b8c9af3c 100644
--- a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/HdrFormatSelectionFragmentTest.java
+++ b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/HdrFormatSelectionFragmentTest.java
@@ -51,10 +51,7 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.shadows.androidx.fragment.FragmentController;
-import java.util.Arrays;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@@ -94,10 +91,11 @@ public class HdrFormatSelectionFragmentTest {
HDR_TYPE_HDR10, HDR_TYPE_HLG, HDR_TYPE_HDR10_PLUS };
int[] displayReportedHdrTypes = { HDR_TYPE_DOLBY_VISION, HDR_TYPE_HDR10, HDR_TYPE_HLG };
int[] userDisabledHdrTypes = { HDR_TYPE_DOLBY_VISION };
+ Display.Mode mode = new Display.Mode(0, 0, 0, 0, new float[0], displayReportedHdrTypes);
HdrFormatSelectionFragment fragment =
createHdrFormatSelectionFragmentWithDisplayManagerReturning(
- deviceHdrTypes, displayReportedHdrTypes, userDisabledHdrTypes);
+ deviceHdrTypes, new Display.Mode[]{mode}, userDisabledHdrTypes);
RadioPreference preference = fragment.findPreference(KEY_HDR_FORMAT_SELECTION_MANUAL);
fragment.onPreferenceTreeClick(preference);
@@ -121,10 +119,11 @@ public class HdrFormatSelectionFragmentTest {
HDR_TYPE_HDR10, HDR_TYPE_HLG, HDR_TYPE_HDR10_PLUS };
int[] displayReportedHdrTypes = { HDR_TYPE_DOLBY_VISION, HDR_TYPE_HDR10, HDR_TYPE_HLG };
int[] userDisabledTypes = { HDR_TYPE_DOLBY_VISION, HDR_TYPE_HDR10 };
+ Display.Mode mode = new Display.Mode(0, 0, 0, 0, new float[0], displayReportedHdrTypes);
HdrFormatSelectionFragment fragment =
createHdrFormatSelectionFragmentWithDisplayManagerReturning(
- deviceHdrTypes, displayReportedHdrTypes, userDisabledTypes);
+ deviceHdrTypes, new Display.Mode[]{mode}, userDisabledTypes);
RadioPreference preference = fragment.findPreference(KEY_HDR_FORMAT_SELECTION_MANUAL);
fragment.onPreferenceTreeClick(preference);
@@ -148,10 +147,11 @@ public class HdrFormatSelectionFragmentTest {
int[] deviceHdrTypes = { HDR_TYPE_DOLBY_VISION, HDR_TYPE_HDR10, HDR_TYPE_HLG };
int[] displayReportedHdrTypes = { HDR_TYPE_DOLBY_VISION, HDR_TYPE_HLG };
int[] userDisabledTypes = { HDR_TYPE_HLG };
+ Display.Mode mode = new Display.Mode(0, 0, 0, 0, new float[0], displayReportedHdrTypes);
HdrFormatSelectionFragment fragment =
createHdrFormatSelectionFragmentWithDisplayManagerReturning(
- deviceHdrTypes, displayReportedHdrTypes, userDisabledTypes);
+ deviceHdrTypes, new Display.Mode[]{mode}, userDisabledTypes);
RadioPreference preference = fragment.findPreference(KEY_HDR_FORMAT_SELECTION_MANUAL);
fragment.onPreferenceTreeClick(preference);
@@ -178,10 +178,11 @@ public class HdrFormatSelectionFragmentTest {
int[] deviceHdrTypes = { HDR_TYPE_DOLBY_VISION, HDR_TYPE_HDR10, HDR_TYPE_HLG };
int[] displayReportedHdrTypes = { HDR_TYPE_DOLBY_VISION, HDR_TYPE_HLG };
int[] userDisabledTypes = { HDR_TYPE_HLG };
+ Display.Mode mode = new Display.Mode(0, 0, 0, 0, new float[0], displayReportedHdrTypes);
HdrFormatSelectionFragment fragment =
createHdrFormatSelectionFragmentWithDisplayManagerReturning(
- deviceHdrTypes, displayReportedHdrTypes, userDisabledTypes);
+ deviceHdrTypes, new Display.Mode[]{mode}, userDisabledTypes);
RadioPreference preference = fragment.findPreference(KEY_HDR_FORMAT_SELECTION_MANUAL);
fragment.onPreferenceTreeClick(preference);
@@ -204,10 +205,11 @@ public class HdrFormatSelectionFragmentTest {
int[] deviceHdrTypes = { HDR_TYPE_DOLBY_VISION, HDR_TYPE_HDR10, HDR_TYPE_HLG };
int[] displayReportedHdrTypes = { HDR_TYPE_DOLBY_VISION, HDR_TYPE_HLG };
int[] userDisabledTypes = { HDR_TYPE_HLG };
+ Display.Mode mode = new Display.Mode(0, 0, 0, 0, new float[0], displayReportedHdrTypes);
HdrFormatSelectionFragment fragment =
createHdrFormatSelectionFragmentWithDisplayManagerReturning(
- deviceHdrTypes, displayReportedHdrTypes, userDisabledTypes);
+ deviceHdrTypes, new Display.Mode[]{mode}, userDisabledTypes);
RadioPreference preference = fragment.findPreference(KEY_HDR_FORMAT_SELECTION_AUTO);
fragment.onPreferenceTreeClick(preference);
@@ -219,10 +221,11 @@ public class HdrFormatSelectionFragmentTest {
int[] deviceHdrTypes = { HDR_TYPE_DOLBY_VISION, HDR_TYPE_HDR10, HDR_TYPE_HLG };
int[] displayReportedHdrTypes = { HDR_TYPE_DOLBY_VISION, HDR_TYPE_HLG };
int[] userDisabledTypes = { HDR_TYPE_HLG };
+ Display.Mode mode = new Display.Mode(0, 0, 0, 0, new float[0], displayReportedHdrTypes);
HdrFormatSelectionFragment fragment =
createHdrFormatSelectionFragmentWithDisplayManagerReturning(
- deviceHdrTypes, displayReportedHdrTypes, userDisabledTypes);
+ deviceHdrTypes, new Display.Mode[]{mode}, userDisabledTypes);
Preference preference = fragment.findPreference(KEY_HDR_FORMAT_SELECTION_AUTO);
fragment.onPreferenceTreeClick(preference);
@@ -244,10 +247,11 @@ public class HdrFormatSelectionFragmentTest {
int[] deviceHdrTypes = { HDR_TYPE_DOLBY_VISION, HDR_TYPE_HDR10 };
int[] displayReportedHdrTypes = { HDR_TYPE_DOLBY_VISION };
int[] userDisabledTypes = { HDR_TYPE_DOLBY_VISION };
+ Display.Mode mode = new Display.Mode(0, 0, 0, 0, new float[0], displayReportedHdrTypes);
HdrFormatSelectionFragment fragment =
createHdrFormatSelectionFragmentWithDisplayManagerReturning(
- deviceHdrTypes, displayReportedHdrTypes, userDisabledTypes);
+ deviceHdrTypes, new Display.Mode[]{mode}, userDisabledTypes);
Preference preference = fragment.findPreference(KEY_HDR_FORMAT_SELECTION_AUTO);
fragment.onPreferenceTreeClick(preference);
@@ -276,6 +280,37 @@ public class HdrFormatSelectionFragmentTest {
fragment.getContext().getString(R.string.hdr_format_hdr10));
}
+ @Test
+ public void testGetPreferenceScreen_whenManual_enablesDisplayModeSpecificHdrFormats() {
+ int[] deviceHdrTypes = { HDR_TYPE_DOLBY_VISION,
+ HDR_TYPE_HDR10, HDR_TYPE_HLG, HDR_TYPE_HDR10_PLUS };
+ int[] mode1SupportedHdrFormats = { HDR_TYPE_HDR10 };
+ int[] mode2SupportedHdrFormats = { HDR_TYPE_DOLBY_VISION, HDR_TYPE_HDR10 };
+
+ Display.Mode mode1 = new Display.Mode(0, 0, 0, 0, new float[0], mode1SupportedHdrFormats);
+ Display.Mode mode2 = new Display.Mode(1, 0, 0, 0, new float[0], mode2SupportedHdrFormats);
+
+ HdrFormatSelectionFragment fragment =
+ createHdrFormatSelectionFragmentWithDisplayManagerReturning(
+ deviceHdrTypes, new Display.Mode[]{mode1, mode2}, new int[0]);
+
+ Preference preference = fragment.findPreference(KEY_HDR_FORMAT_SELECTION_MANUAL);
+ fragment.onPreferenceTreeClick(preference);
+
+ PreferenceCategory supportedFormatPreference =
+ (PreferenceCategory) fragment.getPreferenceScreen().getPreference(1);
+ SwitchPreference dolbyVisionPref =
+ (SwitchPreference) supportedFormatPreference.getPreference(0);
+ assertThat(dolbyVisionPref.getTitle().toString())
+ .isEqualTo(fragment.getContext().getString(R.string.hdr_format_dolby_vision));
+ assertThat(dolbyVisionPref.isChecked()).isFalse();
+ SwitchPreference hdr10Pref =
+ (SwitchPreference) supportedFormatPreference.getPreference(1);
+ assertThat(hdr10Pref.getTitle().toString())
+ .isEqualTo(fragment.getContext().getString(R.string.hdr_format_hdr10));
+ assertThat(hdr10Pref.isChecked()).isTrue();
+ }
+
private List<String> getChildrenTitles(Preference preference) {
PreferenceCategory category = (PreferenceCategory) preference;
@@ -285,22 +320,17 @@ public class HdrFormatSelectionFragmentTest {
}
private HdrFormatSelectionFragment createDefaultHdrFormatSelectionFragment() {
+ Display.Mode mode = new Display.Mode(0, 0, 0, 0, new float[0], new int[0]);
return createHdrFormatSelectionFragmentWithDisplayManagerReturning(
- new int[]{}, new int[]{}, new int[]{});
+ new int[]{}, new Display.Mode[]{mode}, new int[]{});
}
private HdrFormatSelectionFragment createHdrFormatSelectionFragmentWithDisplayManagerReturning(
- int[] deviceHdrTypes, int[] displayReportedHdrTypes, int[] userDisabledHdrTypes) {
+ int[] deviceHdrTypes, Display.Mode[] displayModes, int[] userDisabledHdrTypes) {
doReturn(userDisabledHdrTypes).when(mDisplayManager).getUserDisabledHdrTypes();
Display display = spy(Display.class);
- doReturn(displayReportedHdrTypes).when(display).getReportedHdrTypes();
-
- int[] hdrCapabilitiesReportedFormats =
- difference(displayReportedHdrTypes, userDisabledHdrTypes);
- Display.HdrCapabilities hdrCapabilities = new Display.HdrCapabilities(
- hdrCapabilitiesReportedFormats, -1 /*maxLuminance*/,
- -1 /* maxAverageLuminance*/, -1 /* minLuminance */);
- doReturn(hdrCapabilities).when(display).getHdrCapabilities();
+ doReturn(displayModes).when(display).getSupportedModes();
+ doReturn(displayModes[0]).when(display).getMode();
doReturn(display).when(mDisplayManager).getDisplay(Display.DEFAULT_DISPLAY);
@@ -313,16 +343,4 @@ public class HdrFormatSelectionFragmentTest {
.start()
.get();
}
-
- private int[] difference(int[] array1, int[] array2) {
- Set<Integer> set2 = Arrays.stream(array2).boxed().collect(Collectors.toSet());
- Set<Integer> differenceSet = new HashSet<>();
- for (int i : array1) {
- if (!set2.contains(i)) {
- differenceSet.add(i);
- }
- }
- return differenceSet.stream().mapToInt(Number::intValue).toArray();
- }
-
}
diff --git a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/MatchContentFrameRateFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/MatchContentFrameRateFragmentTest.java
index 562647de7..769a643a4 100644
--- a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/MatchContentFrameRateFragmentTest.java
+++ b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/MatchContentFrameRateFragmentTest.java
@@ -67,6 +67,8 @@ public class MatchContentFrameRateFragmentTest {
mMatchContentFrameRateFragment.onAttach(RuntimeEnvironment.application);
doReturn(mPreferenceGroup).when(mMatchContentFrameRateFragment).getPreferenceGroup();
+ doReturn(true).when(mMatchContentFrameRateFragment)
+ .isSeamlessSwitchingSupported();
mAutoPreference = new RadioPreference(mMatchContentFrameRateFragment.getContext());
mAutoPreference.setKey(KEY_MATCH_CONTENT_FRAME_RATE_SEAMLESS);
diff --git a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/PreferredDynamicRangeFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/PreferredDynamicRangeFragmentTest.java
new file mode 100644
index 000000000..28c89f00a
--- /dev/null
+++ b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/PreferredDynamicRangeFragmentTest.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2023 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.settings.device.displaysound;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.hardware.display.DisplayManager;
+import android.hardware.display.HdrConversionMode;
+import android.view.Display;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+
+import com.android.tv.settings.R;
+import com.android.tv.settings.RadioPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.shadows.androidx.fragment.FragmentController;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
+@RunWith(RobolectricTestRunner.class)
+public class PreferredDynamicRangeFragmentTest {
+ private static final Display.Mode TEST_MODE = new Display.Mode(0, 0, 0, 0, new float[0],
+ new int[]{2, 3});
+
+ @Mock
+ private DisplayManager mDisplayManager;
+ @Mock
+ private Display mDisplay;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ }
+
+ @Test
+ public void testOnPreferenceTreeClick_selectSystem() {
+ PreferredDynamicRangeFragment fragment = createPreferredDynamicRangeFragment();
+ RadioPreference preference = fragment.findPreference(
+ PreferredDynamicRangeFragment.KEY_DYNAMIC_RANGE_SELECTION_SYSTEM);
+
+ fragment.onPreferenceTreeClick(preference);
+
+ ArgumentCaptor<HdrConversionMode> mode = ArgumentCaptor.forClass(HdrConversionMode.class);
+ verify(mDisplayManager).setHdrConversionMode(mode.capture());
+ assertThat(mode.getValue()).isEqualTo(
+ new HdrConversionMode(HdrConversionMode.HDR_CONVERSION_SYSTEM));
+ assertThat(preference.isChecked()).isTrue();
+ }
+
+ @Test
+ public void testOnPreferenceTreeClick_selectMatchContent() {
+ PreferredDynamicRangeFragment fragment = createPreferredDynamicRangeFragment();
+ RadioPreference preference = fragment.findPreference(
+ PreferredDynamicRangeFragment.KEY_DYNAMIC_RANGE_SELECTION_PASSTHROUGH);
+
+ fragment.onPreferenceTreeClick(preference);
+
+ ArgumentCaptor<HdrConversionMode> mode = ArgumentCaptor.forClass(HdrConversionMode.class);
+ verify(mDisplayManager).setHdrConversionMode(mode.capture());
+ assertThat(mode.getValue()).isEqualTo(
+ new HdrConversionMode(HdrConversionMode.HDR_CONVERSION_PASSTHROUGH));
+ assertThat(preference.isChecked()).isTrue();
+ }
+
+ @Test
+ public void testGetPreferenceScreen_returnsCorrectDescriptions() {
+ PreferredDynamicRangeFragment fragment = createPreferredDynamicRangeFragment();
+
+ assertThat(fragment.getPreferenceScreen().getPreferenceCount()).isEqualTo(1);
+ Preference dynamicRangePreference = fragment.getPreferenceScreen().getPreference(0);
+ assertThat(getChildrenTitles(dynamicRangePreference)).containsExactly(
+ fragment.getContext().getString(
+ R.string.preferred_dynamic_range_selection_system_title),
+ fragment.getContext().getString(
+ R.string.match_content_dynamic_range_title),
+ fragment.getContext().getString(
+ R.string.preferred_dynamic_range_selection_force_title));
+
+ assertThat(getChildrenSummaries(dynamicRangePreference)).containsExactly(
+ fragment.getContext().getString(
+ R.string.preferred_dynamic_range_selection_system_desc),
+ fragment.getContext().getString(
+ R.string.preferred_dynamic_range_selection_passthrough_desc),
+ fragment.getContext().getString(
+ R.string.preferred_dynamic_range_selection_force_desc));
+ }
+
+ @Test
+ public void testDynamicRangeForcePreferenceScreen_returnsCorrectDescriptions() {
+ PreferredDynamicRangeForceFragment fragment =
+ createPreferredDynamicRangeForceFragmentWith(new int[]{1, 2, 3});
+ assertThat(fragment.getPreferenceScreen().getPreferenceCount()).isEqualTo(1);
+ Preference dynamicRangePreference = fragment.getPreferenceScreen().getPreference(0);
+ assertThat(getChildrenTitles(dynamicRangePreference)).containsExactly(
+ fragment.getContext().getString(
+ R.string.preferred_dynamic_range_selection_force_hdr_title,
+ fragment.getContext().getString(R.string.hdr_format_hdr10)),
+ fragment.getContext().getString(
+ R.string.preferred_dynamic_range_selection_force_hdr_title,
+ fragment.getContext().getString(R.string.hdr_format_hlg)),
+ fragment.getContext().getString(
+ R.string.preferred_dynamic_range_selection_force_sdr_title));
+ }
+
+ private PreferredDynamicRangeFragment createPreferredDynamicRangeFragment() {
+ return createPreferredDynamicRangeFragmentWith(new int[]{1, 2, 3});
+ }
+
+ private PreferredDynamicRangeFragment createPreferredDynamicRangeFragmentWith(int[] hdrTypes) {
+ doReturn(mDisplay).when(mDisplayManager).getDisplay(Display.DEFAULT_DISPLAY);
+ doReturn(new Display.Mode[]{TEST_MODE}).when(mDisplay).getSupportedModes();
+ doReturn(hdrTypes).when(mDisplayManager).getSupportedHdrOutputTypes();
+ doReturn(new HdrConversionMode(HdrConversionMode.HDR_CONVERSION_PASSTHROUGH))
+ .when(mDisplayManager).getHdrConversionModeSetting();
+
+ PreferredDynamicRangeFragment fragment = spy(PreferredDynamicRangeFragment.class);
+ doReturn(mDisplayManager).when(fragment).getDisplayManager();
+
+ return FragmentController.of(fragment)
+ .create()
+ .start()
+ .get();
+ }
+
+ private PreferredDynamicRangeForceFragment createPreferredDynamicRangeForceFragmentWith(
+ int[] hdrTypes) {
+ doReturn(mDisplay).when(mDisplayManager).getDisplay(Display.DEFAULT_DISPLAY);
+ doReturn(new Display.Mode[]{TEST_MODE}).when(mDisplay).getSupportedModes();
+ doReturn(hdrTypes).when(mDisplayManager).getSupportedHdrOutputTypes();
+ doReturn(new HdrConversionMode(HdrConversionMode.HDR_CONVERSION_PASSTHROUGH))
+ .when(mDisplayManager).getHdrConversionModeSetting();
+
+ PreferredDynamicRangeForceFragment fragment = spy(PreferredDynamicRangeForceFragment.class);
+ doReturn(mDisplayManager).when(fragment).getDisplayManager();
+
+ return FragmentController.of(fragment)
+ .create()
+ .start()
+ .get();
+ }
+
+ private List<String> getChildrenTitles(Preference preference) {
+ PreferenceCategory category = (PreferenceCategory) preference;
+
+ return IntStream.range(0, category.getPreferenceCount())
+ .mapToObj(i -> category.getPreference(i).getTitle().toString())
+ .collect(Collectors.toList());
+ }
+
+ private List<String> getChildrenSummaries(Preference preference) {
+ PreferenceCategory category = (PreferenceCategory) preference;
+
+ return IntStream.range(0, category.getPreferenceCount())
+ .mapToObj(i -> category.getPreference(i).getSummary().toString())
+ .collect(Collectors.toList());
+ }
+}
diff --git a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/ResolutionSelectionFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/ResolutionSelectionFragmentTest.java
index ec9372922..40969edb1 100644
--- a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/ResolutionSelectionFragmentTest.java
+++ b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/ResolutionSelectionFragmentTest.java
@@ -33,6 +33,7 @@ import androidx.preference.PreferenceCategory;
import com.android.tv.settings.R;
import com.android.tv.settings.RadioPreference;
+import com.android.tv.settings.util.ResolutionSelectionUtils;
import org.junit.Before;
import org.junit.Test;
@@ -115,13 +116,27 @@ public class ResolutionSelectionFragmentTest {
Preference modePreference = fragment.getPreferenceScreen().getPreference(0);
assertThat(getChildrenTitles(modePreference)).containsExactly(
fragment.getContext().getString(R.string.resolution_selection_auto_title),
- "4k (60 Hz)",
- "4k (59.94 Hz)",
- "576p (60 Hz)",
- "800p (120 Hz)",
- "800p (60 Hz)",
- "600p (120 Hz)",
- "600p (59.94 Hz)");
+ fragment.getContext().getString(R.string.resolution_display_mode,
+ ResolutionSelectionUtils.getResolutionString(2160, 2160),
+ ResolutionSelectionUtils.getRefreshRateString(60)),
+ fragment.getContext().getString(R.string.resolution_display_mode,
+ ResolutionSelectionUtils.getResolutionString(2160, 2160),
+ ResolutionSelectionUtils.getRefreshRateString(59.944f)),
+ fragment.getContext().getString(R.string.resolution_display_mode,
+ ResolutionSelectionUtils.getResolutionString(576, 576),
+ ResolutionSelectionUtils.getRefreshRateString(60)),
+ fragment.getContext().getString(R.string.resolution_display_mode,
+ ResolutionSelectionUtils.getResolutionString(800, 1200),
+ ResolutionSelectionUtils.getRefreshRateString(120)),
+ fragment.getContext().getString(R.string.resolution_display_mode,
+ ResolutionSelectionUtils.getResolutionString(800, 1200),
+ ResolutionSelectionUtils.getRefreshRateString(60)),
+ fragment.getContext().getString(R.string.resolution_display_mode,
+ ResolutionSelectionUtils.getResolutionString(600, 800),
+ ResolutionSelectionUtils.getRefreshRateString(120)),
+ fragment.getContext().getString(R.string.resolution_display_mode,
+ ResolutionSelectionUtils.getResolutionString(600, 800),
+ ResolutionSelectionUtils.getRefreshRateString(59.944f)));
assertThat(getChildrenSummaries(modePreference)).containsExactly(
"2160 x 2160",