diff --git a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java index cb05f8fe757ad..fefe9530fa834 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java @@ -221,7 +221,7 @@ public class HdmiCecConfig { } } - private class Setting { + protected class Setting { @NonNull private final Context mContext; @NonNull private final @CecSettingName String mName; private final boolean mUserConfigurable; @@ -566,7 +566,7 @@ public class HdmiCecConfig { } } - private String retrieveValue(@NonNull Setting setting, @NonNull String defaultValue) { + protected String retrieveValue(@NonNull Setting setting, @NonNull String defaultValue) { @Storage int storage = getStorage(setting); String storageKey = getStorageKey(setting); if (storage == STORAGE_SYSPROPS) { @@ -582,7 +582,7 @@ public class HdmiCecConfig { return null; } - private void storeValue(@NonNull Setting setting, @NonNull String value) { + protected void storeValue(@NonNull Setting setting, @NonNull String value) { @Storage int storage = getStorage(setting); String storageKey = getStorageKey(setting); if (storage == STORAGE_SYSPROPS) { @@ -626,7 +626,7 @@ public class HdmiCecConfig { notifySettingChanged(setting); } - private void notifySettingChanged(@NonNull Setting setting) { + protected void notifySettingChanged(@NonNull Setting setting) { synchronized (mLock) { ArrayMap listeners = mSettingChangeListeners.get(setting); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java b/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java index e2b6a99bb9781..41946fb8ec63a 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java @@ -26,6 +26,8 @@ import android.content.res.Resources; import com.android.internal.R; +import java.util.HashMap; + /** * Fake class which stubs default system configuration with user-configurable * settings (useful for testing). @@ -33,6 +35,8 @@ import com.android.internal.R; final class FakeHdmiCecConfig extends HdmiCecConfig { private static final String TAG = "FakeHdmiCecConfig"; + private final HashMap mSettings = new HashMap<>(); + public static Context buildContext(Context context) { Context contextSpy = spy(new ContextWrapper(context)); doReturn(buildResources(context)).when(contextSpy).getResources(); @@ -218,4 +222,15 @@ final class FakeHdmiCecConfig extends HdmiCecConfig { FakeHdmiCecConfig(@NonNull Context context) { super(buildContext(context), new StorageAdapter(context)); } + + @Override + protected String retrieveValue(@NonNull Setting setting, @NonNull String defaultValue) { + return mSettings.getOrDefault(setting.getName(), defaultValue); + } + + @Override + protected void storeValue(@NonNull Setting setting, @NonNull String value) { + mSettings.put(setting.getName(), value); + notifySettingChanged(setting); + } } diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java index 68aa96a1be7fe..b1d77d02c55b2 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java @@ -47,7 +47,6 @@ import android.os.PowerManager; import android.os.RemoteException; import android.os.test.TestLooper; import android.platform.test.annotations.Presubmit; -import android.provider.Settings; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; @@ -237,9 +236,6 @@ public class HdmiControlServiceTest { mHdmiPortInfo[3] = new HdmiPortInfo(4, HdmiPortInfo.PORT_INPUT, 0x3000, true, false, false); mNativeWrapper.setPortInfo(mHdmiPortInfo); - mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue( - HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED, - HdmiControlManager.HDMI_CEC_CONTROL_ENABLED); mHdmiControlServiceSpy.initService(); mHdmiControlServiceSpy.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); @@ -361,23 +357,6 @@ public class HdmiControlServiceTest { HdmiControlManager.VOLUME_CONTROL_ENABLED); } - @Test - public void setAndGetCecVolumeControlEnabled_changesSetting() { - mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue( - HdmiControlManager.CEC_SETTING_NAME_VOLUME_CONTROL_MODE, - HdmiControlManager.VOLUME_CONTROL_DISABLED); - assertThat(mHdmiControlServiceSpy.readIntSetting( - Settings.Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, -1)).isEqualTo( - HdmiControlManager.VOLUME_CONTROL_DISABLED); - - mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue( - HdmiControlManager.CEC_SETTING_NAME_VOLUME_CONTROL_MODE, - HdmiControlManager.VOLUME_CONTROL_ENABLED); - assertThat(mHdmiControlServiceSpy.readIntSetting( - Settings.Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, -1)).isEqualTo( - HdmiControlManager.VOLUME_CONTROL_ENABLED); - } - @Test public void setAndGetCecVolumeControlEnabledInternal_doesNotChangeSetting() { mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue(