summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecConfig.java24
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java97
2 files changed, 70 insertions, 51 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java
index 00fd58647708..e906a7c8132c 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java
@@ -37,6 +37,7 @@ import com.android.server.hdmi.cec.config.XmlParser;
import org.xmlpull.v1.XmlPullParserException;
import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -168,6 +169,29 @@ public class HdmiCecConfig {
return null;
}
+ @NonNull
+ @VisibleForTesting
+ static HdmiCecConfig createFromStrings(@NonNull Context context,
+ @NonNull StorageAdapter storageAdapter,
+ @Nullable String systemConfigXml,
+ @Nullable String vendorOverrideXml) {
+ CecSettings systemConfig = null;
+ CecSettings vendorOverride = null;
+ try {
+ if (systemConfigXml != null) {
+ systemConfig = XmlParser.read(
+ new ByteArrayInputStream(systemConfigXml.getBytes()));
+ }
+ if (vendorOverrideXml != null) {
+ vendorOverride = XmlParser.read(
+ new ByteArrayInputStream(vendorOverrideXml.getBytes()));
+ }
+ } catch (IOException | DatatypeConfigurationException | XmlPullParserException e) {
+ Slog.e(TAG, "Encountered an error while reading/parsing CEC config strings", e);
+ }
+ return new HdmiCecConfig(context, storageAdapter, systemConfig, vendorOverride);
+ }
+
@Nullable
private Setting getSetting(@NonNull String name) {
if (mSystemConfig == null) {
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 a1eb0378a210..ae9c6188619f 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java
@@ -26,26 +26,16 @@ import android.hardware.hdmi.HdmiControlManager;
import android.platform.test.annotations.Presubmit;
import android.provider.Settings.Global;
import android.sysprop.HdmiProperties;
-import android.util.Slog;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
-import com.android.server.hdmi.cec.config.CecSettings;
-import com.android.server.hdmi.cec.config.XmlParser;
-
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-
-import javax.xml.datatype.DatatypeConfigurationException;
@SmallTest
@Presubmit
@@ -65,13 +55,15 @@ public final class HdmiCecConfigTest {
@Test
public void getAllCecSettings_NoMasterXml() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null);
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter, null, null);
assertThat(hdmiCecConfig.getAllSettings()).isEmpty();
}
@Test
public void getAllCecSettings_Empty() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ "</cec-settings>", null);
@@ -80,7 +72,8 @@ public final class HdmiCecConfigTest {
@Test
public void getAllCecSettings_BasicSanity() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ " <setting name=\"hdmi_cec_enabled\""
@@ -108,13 +101,15 @@ public final class HdmiCecConfigTest {
@Test
public void getUserCecSettings_NoMasterXml() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null);
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter, null, null);
assertThat(hdmiCecConfig.getUserSettings()).isEmpty();
}
@Test
public void getUserCecSettings_Empty() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ "</cec-settings>", null);
@@ -123,7 +118,8 @@ public final class HdmiCecConfigTest {
@Test
public void getUserCecSettings_OnlyMasterXml() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ " <setting name=\"hdmi_cec_enabled\""
@@ -151,7 +147,8 @@ public final class HdmiCecConfigTest {
@Test
public void getUserCecSettings_WithOverride() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ " <setting name=\"hdmi_cec_enabled\""
@@ -190,14 +187,16 @@ public final class HdmiCecConfigTest {
@Test
public void getAllowedValues_NoMasterXml() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null);
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter, null, null);
assertThrows(IllegalArgumentException.class,
() -> hdmiCecConfig.getAllowedValues("foo"));
}
@Test
public void getAllowedValues_InvalidSetting() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ "</cec-settings>", null);
@@ -207,7 +206,8 @@ public final class HdmiCecConfigTest {
@Test
public void getAllowedValues_BasicSanity() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ " <setting name=\"send_standby_on_sleep\""
@@ -229,14 +229,16 @@ public final class HdmiCecConfigTest {
@Test
public void getDefaultValue_NoMasterXml() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null);
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter, null, null);
assertThrows(IllegalArgumentException.class,
() -> hdmiCecConfig.getDefaultValue("foo"));
}
@Test
public void getDefaultValue_InvalidSetting() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ "</cec-settings>", null);
@@ -246,7 +248,8 @@ public final class HdmiCecConfigTest {
@Test
public void getDefaultValue_BasicSanity() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ " <setting name=\"send_standby_on_sleep\""
@@ -266,14 +269,16 @@ public final class HdmiCecConfigTest {
@Test
public void getValue_NoMasterXml() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null);
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter, null, null);
assertThrows(IllegalArgumentException.class,
() -> hdmiCecConfig.getValue("foo"));
}
@Test
public void getValue_InvalidSetting() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ "</cec-settings>", null);
@@ -287,7 +292,8 @@ public final class HdmiCecConfigTest {
Global.HDMI_CONTROL_SEND_STANDBY_ON_SLEEP,
HdmiControlManager.SEND_STANDBY_ON_SLEEP_TO_TV))
.thenReturn(HdmiControlManager.SEND_STANDBY_ON_SLEEP_BROADCAST);
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ " <setting name=\"send_standby_on_sleep\""
@@ -313,7 +319,8 @@ public final class HdmiCecConfigTest {
.NONE.name().toLowerCase()))
.thenReturn(HdmiProperties.power_state_change_on_active_source_lost_values
.STANDBY_NOW.name().toLowerCase());
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ " <setting name=\"power_state_change_on_active_source_lost\""
@@ -333,14 +340,16 @@ public final class HdmiCecConfigTest {
@Test
public void setValue_NoMasterXml() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(null, null);
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter, null, null);
assertThrows(IllegalArgumentException.class,
() -> hdmiCecConfig.setValue("foo", "bar"));
}
@Test
public void setValue_InvalidSetting() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ "</cec-settings>", null);
@@ -350,7 +359,8 @@ public final class HdmiCecConfigTest {
@Test
public void setValue_NotConfigurable() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ " <setting name=\"send_standby_on_sleep\""
@@ -371,7 +381,8 @@ public final class HdmiCecConfigTest {
@Test
public void setValue_InvalidValue() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ " <setting name=\"send_standby_on_sleep\""
@@ -392,7 +403,8 @@ public final class HdmiCecConfigTest {
@Test
public void setValue_GlobalSetting_BasicSanity() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ " <setting name=\"send_standby_on_sleep\""
@@ -414,7 +426,8 @@ public final class HdmiCecConfigTest {
@Test
public void setValue_SystemProperty_BasicSanity() {
- HdmiCecConfig hdmiCecConfig = createHdmiCecConfig(
+ HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
+ mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
+ "<cec-settings>"
+ " <setting name=\"power_state_change_on_active_source_lost\""
@@ -435,22 +448,4 @@ public final class HdmiCecConfigTest {
HdmiProperties.power_state_change_on_active_source_lost_values
.STANDBY_NOW.name().toLowerCase());
}
-
- private HdmiCecConfig createHdmiCecConfig(String productConfigXml, String vendorOverrideXml) {
- CecSettings productConfig = null;
- CecSettings vendorOverride = null;
- try {
- if (productConfigXml != null) {
- productConfig = XmlParser.read(
- new ByteArrayInputStream(productConfigXml.getBytes()));
- }
- if (vendorOverrideXml != null) {
- vendorOverride = XmlParser.read(
- new ByteArrayInputStream(vendorOverrideXml.getBytes()));
- }
- } catch (IOException | DatatypeConfigurationException | XmlPullParserException e) {
- Slog.e(TAG, "Encountered an error while reading/parsing CEC config strings", e);
- }
- return new HdmiCecConfig(mContext, mStorageAdapter, productConfig, vendorOverride);
- }
}