From 460a24ba06f0f95b59a5ed3340232956c135e8c2 Mon Sep 17 00:00:00 2001 From: Michal Olech Date: Fri, 23 Oct 2020 15:51:17 +0200 Subject: [PATCH] [CEC Configuration] Add HdmiCecConfig.createFromStrings method To facilitate testing Bug: 168020131 Test: atest HdmiCecConfigTest Change-Id: I7918afecca3620ce563e108a898678ea332d92cf --- .../android/server/hdmi/HdmiCecConfig.java | 24 +++++ .../server/hdmi/HdmiCecConfigTest.java | 97 +++++++++---------- 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 00fd586477080..e906a7c8132c1 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 a1eb0378a210f..ae9c6188619f5 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, "" + "" + "", null); @@ -80,7 +72,8 @@ public final class HdmiCecConfigTest { @Test public void getAllCecSettings_BasicSanity() { - HdmiCecConfig hdmiCecConfig = createHdmiCecConfig( + HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings( + mContext, mStorageAdapter, "" + "" + " " + "" + "", null); @@ -123,7 +118,8 @@ public final class HdmiCecConfigTest { @Test public void getUserCecSettings_OnlyMasterXml() { - HdmiCecConfig hdmiCecConfig = createHdmiCecConfig( + HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings( + mContext, mStorageAdapter, "" + "" + " " + "" + " hdmiCecConfig.getAllowedValues("foo")); } @Test public void getAllowedValues_InvalidSetting() { - HdmiCecConfig hdmiCecConfig = createHdmiCecConfig( + HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings( + mContext, mStorageAdapter, "" + "" + "", null); @@ -207,7 +206,8 @@ public final class HdmiCecConfigTest { @Test public void getAllowedValues_BasicSanity() { - HdmiCecConfig hdmiCecConfig = createHdmiCecConfig( + HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings( + mContext, mStorageAdapter, "" + "" + " hdmiCecConfig.getDefaultValue("foo")); } @Test public void getDefaultValue_InvalidSetting() { - HdmiCecConfig hdmiCecConfig = createHdmiCecConfig( + HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings( + mContext, mStorageAdapter, "" + "" + "", null); @@ -246,7 +248,8 @@ public final class HdmiCecConfigTest { @Test public void getDefaultValue_BasicSanity() { - HdmiCecConfig hdmiCecConfig = createHdmiCecConfig( + HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings( + mContext, mStorageAdapter, "" + "" + " hdmiCecConfig.getValue("foo")); } @Test public void getValue_InvalidSetting() { - HdmiCecConfig hdmiCecConfig = createHdmiCecConfig( + HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings( + mContext, mStorageAdapter, "" + "" + "", 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, "" + "" + " " + "" + " hdmiCecConfig.setValue("foo", "bar")); } @Test public void setValue_InvalidSetting() { - HdmiCecConfig hdmiCecConfig = createHdmiCecConfig( + HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings( + mContext, mStorageAdapter, "" + "" + "", null); @@ -350,7 +359,8 @@ public final class HdmiCecConfigTest { @Test public void setValue_NotConfigurable() { - HdmiCecConfig hdmiCecConfig = createHdmiCecConfig( + HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings( + mContext, mStorageAdapter, "" + "" + " " + "" + " " + "" + " " + "" + "