summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Michal Olech <molech@google.com> 2020-10-23 13:35:38 +0200
committer Michal Olech <molech@google.com> 2020-10-23 14:48:27 +0200
commit9677b5aefeec59edcb1bf6aec86091a6bb1a93d0 (patch)
treebb36180cf584e0d72e443561fd581c0cc2f6fede
parent896b3833298fcf2be3b66eb991bc2559dcb9d300 (diff)
[CEC Configuration] Move context to constructor
Simplifies the interface Bug: 168020131 Test: atest HdmiCecConfigTest Change-Id: I5751c861b9752b13d5ddc7697fabc8a970091153
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecConfig.java45
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiControlService.java9
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java19
3 files changed, 37 insertions, 36 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java
index 2b4d51522e41..3224d31fd0b0 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java
@@ -58,10 +58,6 @@ public class HdmiCecConfig {
private static final String ETC_DIR = "etc";
private static final String CONFIG_FILE = "cec_config.xml";
- @Nullable private CecSettings mProductConfig = null;
- @Nullable private CecSettings mVendorOverride = null;
- @Nullable private StorageAdapter mStorageAdapter = null;
-
@IntDef({
STORAGE_SYSPROPS,
STORAGE_GLOBAL_SETTINGS,
@@ -83,6 +79,11 @@ public class HdmiCecConfig {
public static final String SYSPROP_SYSTEM_AUDIO_MODE_MUTING =
"ro.hdmi.cec.audio.system_audio_mode_muting.enabled";
+ @NonNull private final Context mContext;
+ @NonNull private final StorageAdapter mStorageAdapter;
+ @Nullable private final CecSettings mProductConfig;
+ @Nullable private final CecSettings mVendorOverride;
+
/**
* Setting storage input/output helper class.
*/
@@ -126,20 +127,22 @@ public class HdmiCecConfig {
}
@VisibleForTesting
- HdmiCecConfig(@Nullable CecSettings productConfig,
- @Nullable CecSettings vendorOverride,
- @Nullable StorageAdapter storageAdapter) {
+ HdmiCecConfig(@NonNull Context context,
+ @NonNull StorageAdapter storageAdapter,
+ @Nullable CecSettings productConfig,
+ @Nullable CecSettings vendorOverride) {
+ mContext = context;
+ mStorageAdapter = storageAdapter;
mProductConfig = productConfig;
mVendorOverride = vendorOverride;
- mStorageAdapter = storageAdapter;
}
- HdmiCecConfig() {
- this(readSettingsFromFile(Environment.buildPath(Environment.getProductDirectory(),
+ HdmiCecConfig(@NonNull Context context) {
+ this(context, new StorageAdapter(),
+ readSettingsFromFile(Environment.buildPath(Environment.getProductDirectory(),
ETC_DIR, CONFIG_FILE)),
readSettingsFromFile(Environment.buildPath(Environment.getVendorDirectory(),
- ETC_DIR, CONFIG_FILE)),
- new StorageAdapter());
+ ETC_DIR, CONFIG_FILE)));
}
@Nullable
@@ -211,7 +214,7 @@ public class HdmiCecConfig {
}
}
- private String retrieveValue(@NonNull Context context, @NonNull Setting setting) {
+ private String retrieveValue(@NonNull Setting setting) {
@Storage int storage = getStorage(setting);
String storageKey = getStorageKey(setting);
if (storage == STORAGE_SYSPROPS) {
@@ -220,14 +223,13 @@ public class HdmiCecConfig {
setting.getDefaultValue().getStringValue());
} else if (storage == STORAGE_GLOBAL_SETTINGS) {
Slog.d(TAG, "Reading '" + storageKey + "' global setting.");
- return mStorageAdapter.retrieveGlobalSetting(context, storageKey,
+ return mStorageAdapter.retrieveGlobalSetting(mContext, storageKey,
setting.getDefaultValue().getStringValue());
}
return null;
}
- private void storeValue(@NonNull Context context, @NonNull Setting setting,
- @NonNull String value) {
+ private void storeValue(@NonNull Setting setting, @NonNull String value) {
@Storage int storage = getStorage(setting);
String storageKey = getStorageKey(setting);
if (storage == STORAGE_SYSPROPS) {
@@ -235,7 +237,7 @@ public class HdmiCecConfig {
mStorageAdapter.storeSystemProperty(storageKey, value);
} else if (storage == STORAGE_GLOBAL_SETTINGS) {
Slog.d(TAG, "Setting '" + storageKey + "' global setting.");
- mStorageAdapter.storeGlobalSetting(context, storageKey, value);
+ mStorageAdapter.storeGlobalSetting(mContext, storageKey, value);
}
}
@@ -303,20 +305,19 @@ public class HdmiCecConfig {
/**
* For a given setting name returns the current value of that setting.
*/
- public String getValue(@NonNull Context context, @NonNull @CecSettingName String name) {
+ public String getValue(@NonNull @CecSettingName String name) {
Setting setting = getSetting(name);
if (setting == null) {
throw new IllegalArgumentException("Setting '" + name + "' does not exist.");
}
Slog.d(TAG, "Getting CEC setting value '" + name + "'.");
- return retrieveValue(context, setting);
+ return retrieveValue(setting);
}
/**
* For a given setting name and value sets the current value of that setting.
*/
- public void setValue(@NonNull Context context, @NonNull @CecSettingName String name,
- @NonNull String value) {
+ public void setValue(@NonNull @CecSettingName String name, @NonNull String value) {
Setting setting = getSetting(name);
if (setting == null) {
throw new IllegalArgumentException("Setting '" + name + "' does not exist.");
@@ -329,6 +330,6 @@ public class HdmiCecConfig {
+ "' value: '" + value + "'.");
}
Slog.d(TAG, "Updating CEC setting '" + name + "' to '" + value + "'.");
- storeValue(context, setting, value);
+ storeValue(setting, value);
}
}
diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java
index 0034df3b373a..8bb89da5726f 100644
--- a/services/core/java/com/android/server/hdmi/HdmiControlService.java
+++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java
@@ -190,7 +190,7 @@ public class HdmiControlService extends SystemService {
private boolean mHdmiCecVolumeControlEnabled;
// Make sure HdmiCecConfig is instantiated and the XMLs are read.
- private final HdmiCecConfig mHdmiCecConfig = new HdmiCecConfig();
+ private final HdmiCecConfig mHdmiCecConfig;
/**
* Interface to report send result.
@@ -488,6 +488,7 @@ public class HdmiControlService extends SystemService {
}
mLocalDevices = deviceTypes;
mSettingsObserver = new SettingsObserver(mHandler);
+ mHdmiCecConfig = new HdmiCecConfig(context);
}
protected static List<Integer> getIntList(String string) {
@@ -2328,7 +2329,7 @@ public class HdmiControlService extends SystemService {
List<String> allSettings = hdmiCecConfig.getAllSettings();
Set<String> userSettings = new HashSet<>(hdmiCecConfig.getUserSettings());
for (String setting : allSettings) {
- pw.println(setting + ": " + hdmiCecConfig.getValue(getContext(), setting)
+ pw.println(setting + ": " + hdmiCecConfig.getValue(setting)
+ " (default: " + hdmiCecConfig.getDefaultValue(setting) + ")"
+ (userSettings.contains(setting) ? " [modifiable]" : ""));
}
@@ -2375,7 +2376,7 @@ public class HdmiControlService extends SystemService {
enforceAccessPermission();
long token = Binder.clearCallingIdentity();
try {
- return HdmiControlService.this.getHdmiCecConfig().getValue(getContext(), name);
+ return HdmiControlService.this.getHdmiCecConfig().getValue(name);
} finally {
Binder.restoreCallingIdentity(token);
}
@@ -2386,7 +2387,7 @@ public class HdmiControlService extends SystemService {
enforceAccessPermission();
long token = Binder.clearCallingIdentity();
try {
- HdmiControlService.this.getHdmiCecConfig().setValue(getContext(), name, value);
+ HdmiControlService.this.getHdmiCecConfig().setValue(name, value);
} finally {
Binder.restoreCallingIdentity(token);
}
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 bbda1684f8a5..8fe1f042b120 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java
@@ -245,7 +245,7 @@ public final class HdmiCecConfigTest {
+ "<cec-settings>"
+ "</cec-settings>", null);
assertThrows(IllegalArgumentException.class,
- () -> hdmiCecConfig.getValue(mContext, "foo"));
+ () -> hdmiCecConfig.getValue("foo"));
}
@Test
@@ -267,7 +267,7 @@ public final class HdmiCecConfigTest {
+ " <default-value string-value=\"to_tv\" />"
+ " </setting>"
+ "</cec-settings>", null);
- assertThat(hdmiCecConfig.getValue(mContext,
+ assertThat(hdmiCecConfig.getValue(
HdmiControlManager.CEC_SETTING_NAME_SEND_STANDBY_ON_SLEEP))
.isEqualTo(HdmiControlManager.SEND_STANDBY_ON_SLEEP_BROADCAST);
}
@@ -292,7 +292,7 @@ public final class HdmiCecConfigTest {
+ " <default-value string-value=\"none\" />"
+ " </setting>"
+ "</cec-settings>", null);
- assertThat(hdmiCecConfig.getValue(mContext,
+ assertThat(hdmiCecConfig.getValue(
HdmiControlManager.CEC_SETTING_NAME_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST))
.isEqualTo(HdmiProperties.power_state_change_on_active_source_lost_values
.STANDBY_NOW.name().toLowerCase());
@@ -305,7 +305,7 @@ public final class HdmiCecConfigTest {
+ "<cec-settings>"
+ "</cec-settings>", null);
assertThrows(IllegalArgumentException.class,
- () -> hdmiCecConfig.setValue(mContext, "foo", "bar"));
+ () -> hdmiCecConfig.setValue("foo", "bar"));
}
@Test
@@ -324,7 +324,7 @@ public final class HdmiCecConfigTest {
+ " </setting>"
+ "</cec-settings>", null);
assertThrows(IllegalArgumentException.class,
- () -> hdmiCecConfig.setValue(mContext,
+ () -> hdmiCecConfig.setValue(
HdmiControlManager.CEC_SETTING_NAME_SEND_STANDBY_ON_SLEEP,
HdmiControlManager.SEND_STANDBY_ON_SLEEP_BROADCAST));
}
@@ -345,7 +345,7 @@ public final class HdmiCecConfigTest {
+ " </setting>"
+ "</cec-settings>", null);
assertThrows(IllegalArgumentException.class,
- () -> hdmiCecConfig.setValue(mContext,
+ () -> hdmiCecConfig.setValue(
HdmiControlManager.CEC_SETTING_NAME_SEND_STANDBY_ON_SLEEP,
"bar"));
}
@@ -365,8 +365,7 @@ public final class HdmiCecConfigTest {
+ " <default-value string-value=\"to_tv\" />"
+ " </setting>"
+ "</cec-settings>", null);
- hdmiCecConfig.setValue(mContext,
- HdmiControlManager.CEC_SETTING_NAME_SEND_STANDBY_ON_SLEEP,
+ hdmiCecConfig.setValue(HdmiControlManager.CEC_SETTING_NAME_SEND_STANDBY_ON_SLEEP,
HdmiControlManager.SEND_STANDBY_ON_SLEEP_BROADCAST);
verify(mStorageAdapter).storeGlobalSetting(mContext,
Global.HDMI_CONTROL_SEND_STANDBY_ON_SLEEP,
@@ -387,7 +386,7 @@ public final class HdmiCecConfigTest {
+ " <default-value string-value=\"none\" />"
+ " </setting>"
+ "</cec-settings>", null);
- hdmiCecConfig.setValue(mContext,
+ hdmiCecConfig.setValue(
HdmiControlManager.CEC_SETTING_NAME_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST,
HdmiProperties.power_state_change_on_active_source_lost_values
.STANDBY_NOW.name().toLowerCase());
@@ -409,6 +408,6 @@ public final class HdmiCecConfigTest {
} catch (IOException | DatatypeConfigurationException | XmlPullParserException e) {
Slog.e(TAG, "Encountered an error while reading/parsing CEC config strings", e);
}
- return new HdmiCecConfig(productConfig, vendorOverride, mStorageAdapter);
+ return new HdmiCecConfig(mContext, mStorageAdapter, productConfig, vendorOverride);
}
}