Merge "[CEC Configuration] Return empty list of settings when no master XML present on a device"

This commit is contained in:
TreeHugger Robot
2020-10-24 00:46:06 +00:00
committed by Android (Google) Code Review
2 changed files with 59 additions and 1 deletions

View File

@@ -135,6 +135,12 @@ public class HdmiCecConfig {
mStorageAdapter = storageAdapter;
mProductConfig = productConfig;
mVendorOverride = vendorOverride;
if (mProductConfig == null) {
Slog.i(TAG, "CEC master configuration XML missing.");
}
if (mVendorOverride == null) {
Slog.i(TAG, "CEC OEM configuration override XML missing.");
}
}
HdmiCecConfig(@NonNull Context context) {
@@ -164,6 +170,9 @@ public class HdmiCecConfig {
@Nullable
private Setting getSetting(@NonNull String name) {
if (mProductConfig == null) {
return null;
}
if (mVendorOverride != null) {
// First read from the vendor override.
for (Setting setting : mVendorOverride.getSetting()) {
@@ -245,6 +254,9 @@ public class HdmiCecConfig {
* Returns a list of all settings based on the XML metadata.
*/
public @CecSettingName List<String> getAllSettings() {
if (mProductConfig == null) {
return new ArrayList<String>();
}
List<String> allSettings = new ArrayList<String>();
for (Setting setting : mProductConfig.getSetting()) {
allSettings.add(setting.getName());
@@ -256,6 +268,9 @@ public class HdmiCecConfig {
* Returns a list of user-modifiable settings based on the XML metadata.
*/
public @CecSettingName List<String> getUserSettings() {
if (mProductConfig == null) {
return new ArrayList<String>();
}
Set<String> userSettings = new HashSet<String>();
// First read from the product config.
for (Setting setting : mProductConfig.getSetting()) {

View File

@@ -63,6 +63,12 @@ public final class HdmiCecConfigTest {
mContext = InstrumentationRegistry.getTargetContext();
}
@Test
public void getAllCecSettings_NoMasterXml() {
HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null);
assertThat(hdmiCecConfig.getAllSettings()).isEmpty();
}
@Test
public void getAllCecSettings_Empty() {
HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
@@ -100,6 +106,12 @@ public final class HdmiCecConfigTest {
HdmiControlManager.CEC_SETTING_NAME_SEND_STANDBY_ON_SLEEP);
}
@Test
public void getUserCecSettings_NoMasterXml() {
HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null);
assertThat(hdmiCecConfig.getUserSettings()).isEmpty();
}
@Test
public void getUserCecSettings_Empty() {
HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
@@ -176,6 +188,13 @@ public final class HdmiCecConfigTest {
.containsExactly(HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED);
}
@Test
public void getAllowedValues_NoMasterXml() {
HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null);
assertThrows(IllegalArgumentException.class,
() -> hdmiCecConfig.getAllowedValues("foo"));
}
@Test
public void getAllowedValues_InvalidSetting() {
HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
@@ -208,6 +227,13 @@ public final class HdmiCecConfigTest {
HdmiControlManager.SEND_STANDBY_ON_SLEEP_NONE);
}
@Test
public void getDefaultValue_NoMasterXml() {
HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null);
assertThrows(IllegalArgumentException.class,
() -> hdmiCecConfig.getDefaultValue("foo"));
}
@Test
public void getDefaultValue_InvalidSetting() {
HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
@@ -238,6 +264,13 @@ public final class HdmiCecConfigTest {
.isEqualTo(HdmiControlManager.SEND_STANDBY_ON_SLEEP_TO_TV);
}
@Test
public void getValue_NoMasterXml() {
HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null);
assertThrows(IllegalArgumentException.class,
() -> hdmiCecConfig.getValue("foo"));
}
@Test
public void getValue_InvalidSetting() {
HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
@@ -298,6 +331,13 @@ public final class HdmiCecConfigTest {
.STANDBY_NOW.name().toLowerCase());
}
@Test
public void setValue_NoMasterXml() {
HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null);
assertThrows(IllegalArgumentException.class,
() -> hdmiCecConfig.setValue("foo", "bar"));
}
@Test
public void setValue_InvalidSetting() {
HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
@@ -400,7 +440,10 @@ public final class HdmiCecConfigTest {
CecSettings productConfig = null;
CecSettings vendorOverride = null;
try {
productConfig = XmlParser.read(new ByteArrayInputStream(productConfigXml.getBytes()));
if (productConfigXml != null) {
productConfig = XmlParser.read(
new ByteArrayInputStream(productConfigXml.getBytes()));
}
if (vendorOverrideXml != null) {
vendorOverride = XmlParser.read(
new ByteArrayInputStream(vendorOverrideXml.getBytes()));