summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecConfig.java15
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java45
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()));