[CEC Configuration] Modify FakeHdmiCecConfig to not persist changes

Bug: 187275931
Bug: 187480852
Test: atest HdmiControlServiceTest
Change-Id: I01b57336f4aac4af0afe447cecb6ce2af5411604
This commit is contained in:
Michal Olech
2021-05-07 15:10:27 +02:00
parent 006f1a69d0
commit cd151f0269
3 changed files with 19 additions and 25 deletions

View File

@@ -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<SettingChangeListener, Executor> listeners =
mSettingChangeListeners.get(setting);

View File

@@ -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<String, String> 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);
}
}

View File

@@ -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(