diff options
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecConfig.java | 15 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java | 45 |
2 files changed, 59 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java index 3224d31fd0b0..652bf5a7a67f 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java @@ -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()) { diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java index 8fe1f042b120..a1eb0378a210 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java @@ -64,6 +64,12 @@ public final class HdmiCecConfigTest { } @Test + public void getAllCecSettings_NoMasterXml() { + HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null); + assertThat(hdmiCecConfig.getAllSettings()).isEmpty(); + } + + @Test public void getAllCecSettings_Empty() { HdmiCecConfig hdmiCecConfig = createHdmiCecConfig( "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>" @@ -101,6 +107,12 @@ public final class HdmiCecConfigTest { } @Test + public void getUserCecSettings_NoMasterXml() { + HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null); + assertThat(hdmiCecConfig.getUserSettings()).isEmpty(); + } + + @Test public void getUserCecSettings_Empty() { HdmiCecConfig hdmiCecConfig = createHdmiCecConfig( "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>" @@ -177,6 +189,13 @@ public final class HdmiCecConfigTest { } @Test + public void getAllowedValues_NoMasterXml() { + HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null); + assertThrows(IllegalArgumentException.class, + () -> hdmiCecConfig.getAllowedValues("foo")); + } + + @Test public void getAllowedValues_InvalidSetting() { HdmiCecConfig hdmiCecConfig = createHdmiCecConfig( "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>" @@ -209,6 +228,13 @@ public final class HdmiCecConfigTest { } @Test + public void getDefaultValue_NoMasterXml() { + HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null); + assertThrows(IllegalArgumentException.class, + () -> hdmiCecConfig.getDefaultValue("foo")); + } + + @Test public void getDefaultValue_InvalidSetting() { HdmiCecConfig hdmiCecConfig = createHdmiCecConfig( "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>" @@ -239,6 +265,13 @@ public final class HdmiCecConfigTest { } @Test + public void getValue_NoMasterXml() { + HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null); + assertThrows(IllegalArgumentException.class, + () -> hdmiCecConfig.getValue("foo")); + } + + @Test public void getValue_InvalidSetting() { HdmiCecConfig hdmiCecConfig = createHdmiCecConfig( "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>" @@ -299,6 +332,13 @@ public final class HdmiCecConfigTest { } @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( "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>" @@ -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())); |