summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/hardware/hdmi/HdmiControlManager.java75
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecConfig.java6
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiControlService.java12
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiUtils.java3
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java37
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java30
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java9
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java8
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java17
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java8
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java52
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java76
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java13
16 files changed, 271 insertions, 96 deletions
diff --git a/core/java/android/hardware/hdmi/HdmiControlManager.java b/core/java/android/hardware/hdmi/HdmiControlManager.java
index bf325609b1a6..500b2998e009 100644
--- a/core/java/android/hardware/hdmi/HdmiControlManager.java
+++ b/core/java/android/hardware/hdmi/HdmiControlManager.java
@@ -344,6 +344,29 @@ public final class HdmiControlManager {
@Retention(RetentionPolicy.SOURCE)
public @interface HdmiCecControl {}
+ // -- Supported HDM-CEC versions.
+ /**
+ * Version constant for HDMI-CEC v1.4b.
+ *
+ * @hide
+ */
+ public static final int HDMI_CEC_VERSION_1_4_b = 0x05;
+ /**
+ * Version constant for HDMI-CEC v2.0.
+ *
+ * @hide
+ */
+ public static final int HDMI_CEC_VERSION_2_0 = 0x06;
+ /**
+ * @hide
+ */
+ @IntDef({
+ HDMI_CEC_VERSION_1_4_b,
+ HDMI_CEC_VERSION_2_0
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface HdmiCecVersion {}
+
// -- Which devices the playback device can send a <Standby> message to upon going to sleep.
/**
* Send <Standby> to TV only.
@@ -428,6 +451,12 @@ public final class HdmiControlManager {
*/
public static final String CEC_SETTING_NAME_HDMI_CEC_ENABLED = "hdmi_cec_enabled";
/**
+ * Name of a setting controlling the version of HDMI-CEC used.
+ *
+ * @hide
+ */
+ public static final String CEC_SETTING_NAME_HDMI_CEC_VERSION = "hdmi_cec_version";
+ /**
* Name of a setting deciding on the Standby message behaviour on sleep.
*
* @hide
@@ -452,6 +481,7 @@ public final class HdmiControlManager {
*/
@StringDef({
CEC_SETTING_NAME_HDMI_CEC_ENABLED,
+ CEC_SETTING_NAME_HDMI_CEC_VERSION,
CEC_SETTING_NAME_SEND_STANDBY_ON_SLEEP,
CEC_SETTING_NAME_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST,
CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING,
@@ -1415,6 +1445,51 @@ public final class HdmiControlManager {
}
/**
+ * Set the 'hdmi_cec_version' option.
+ *
+ * @param value the desired value
+ * @throws IllegalArgumentException when the new value is not allowed.
+ * @throws RuntimeException when the HdmiControlService is not available.
+ *
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.HDMI_CEC)
+ public void setHdmiCecVersion(@NonNull @HdmiCecVersion int value) {
+ if (mService == null) {
+ Log.e(TAG, "HdmiControlService is not available");
+ throw new RuntimeException("HdmiControlService is not available");
+ }
+ try {
+ mService.setCecSettingIntValue(CEC_SETTING_NAME_HDMI_CEC_VERSION, value);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Get the value of 'hdmi_cec_enabled' option.
+ *
+ * @return the current value.
+ * @throws RuntimeException when the HdmiControlService is not available.
+ *
+ * @hide
+ */
+ @NonNull
+ @HdmiCecVersion
+ @RequiresPermission(android.Manifest.permission.HDMI_CEC)
+ public int getHdmiCecVersion() {
+ if (mService == null) {
+ Log.e(TAG, "HdmiControlService is not available");
+ throw new RuntimeException("HdmiControlService is not available");
+ }
+ try {
+ return mService.getCecSettingIntValue(CEC_SETTING_NAME_HDMI_CEC_VERSION);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
* Set the 'send_standby_on_sleep' option.
*
* @param value the desired value
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java
index ca78f35b9f1f..3794da398c01 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java
@@ -229,6 +229,8 @@ public class HdmiCecConfig {
switch (setting.getName()) {
case HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED:
return STORAGE_GLOBAL_SETTINGS;
+ case HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION:
+ return STORAGE_GLOBAL_SETTINGS;
case HdmiControlManager.CEC_SETTING_NAME_SEND_STANDBY_ON_SLEEP:
return STORAGE_GLOBAL_SETTINGS;
case HdmiControlManager.CEC_SETTING_NAME_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST:
@@ -237,7 +239,7 @@ public class HdmiCecConfig {
return STORAGE_SYSPROPS;
default:
throw new RuntimeException("Invalid CEC setting '" + setting.getName()
- + "' storage.");
+ + "' storage.");
}
}
@@ -245,6 +247,8 @@ public class HdmiCecConfig {
switch (setting.getName()) {
case HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED:
return Global.HDMI_CONTROL_ENABLED;
+ case HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION:
+ return Global.HDMI_CEC_VERSION;
case HdmiControlManager.CEC_SETTING_NAME_SEND_STANDBY_ON_SLEEP:
return Global.HDMI_CONTROL_SEND_STANDBY_ON_SLEEP;
case HdmiControlManager.CEC_SETTING_NAME_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST:
diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java
index 2fc9acb4a2ab..dcd6c0260cff 100644
--- a/services/core/java/com/android/server/hdmi/HdmiControlService.java
+++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java
@@ -26,7 +26,6 @@ import static com.android.server.hdmi.Constants.OPTION_MHL_ENABLE;
import static com.android.server.hdmi.Constants.OPTION_MHL_INPUT_SWITCHING;
import static com.android.server.hdmi.Constants.OPTION_MHL_POWER_CHARGE;
import static com.android.server.hdmi.Constants.OPTION_MHL_SERVICE_CONTROL;
-import static com.android.server.hdmi.Constants.VERSION_1_4;
import static com.android.server.power.ShutdownThread.SHUTDOWN_ACTION_PROPERTY;
import android.annotation.IntDef;
@@ -81,7 +80,6 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.SystemService;
-import com.android.server.hdmi.Constants.CecVersion;
import com.android.server.hdmi.HdmiAnnotations.ServiceThreadOnly;
import com.android.server.hdmi.HdmiCecController.AllocateAddressCallback;
import com.android.server.hdmi.HdmiCecLocalDevice.ActiveSource;
@@ -391,8 +389,8 @@ public class HdmiControlService extends SystemService {
@Nullable
private Looper mIoLooper;
- @CecVersion
- private int mCecVersion = Constants.VERSION_1_4;
+ @HdmiControlManager.HdmiCecVersion
+ private int mCecVersion;
// Last input port before switching to the MHL port. Should switch back to this port
// when the mobile device sends the request one touch play with off.
@@ -820,7 +818,8 @@ public class HdmiControlService extends SystemService {
private void initializeCec(int initiatedBy) {
mAddressAllocated = false;
- mCecVersion = readIntSetting(Global.HDMI_CEC_VERSION, VERSION_1_4);
+ mCecVersion = getHdmiCecConfig().getIntValue(
+ HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION);
mCecController.setOption(OptionKey.SYSTEM_CEC_CONTROL, true);
mCecController.setLanguage(mMenuLanguage);
@@ -1028,7 +1027,7 @@ public class HdmiControlService extends SystemService {
/**
* Returns version of CEC.
*/
- @CecVersion
+ @HdmiControlManager.HdmiCecVersion
int getCecVersion() {
return mCecVersion;
}
@@ -2191,7 +2190,6 @@ public class HdmiControlService extends SystemService {
if (!DumpUtils.checkDumpPermission(getContext(), TAG, writer)) return;
final IndentingPrintWriter pw = new IndentingPrintWriter(writer, " ");
- pw.println("mCecVersion: " + mCecVersion);
pw.println("mProhibitMode: " + mProhibitMode);
pw.println("mPowerStatus: " + mPowerStatus);
diff --git a/services/core/java/com/android/server/hdmi/HdmiUtils.java b/services/core/java/com/android/server/hdmi/HdmiUtils.java
index 45aaa73b757b..cdc28e687316 100644
--- a/services/core/java/com/android/server/hdmi/HdmiUtils.java
+++ b/services/core/java/com/android/server/hdmi/HdmiUtils.java
@@ -21,6 +21,7 @@ import static com.android.server.hdmi.Constants.ADDR_BACKUP_2;
import static com.android.server.hdmi.Constants.ADDR_TV;
import android.annotation.Nullable;
+import android.hardware.hdmi.HdmiControlManager;
import android.hardware.hdmi.HdmiDeviceInfo;
import android.util.Slog;
import android.util.SparseArray;
@@ -134,7 +135,7 @@ final class HdmiUtils {
static boolean isEligibleAddressForCecVersion(int cecVersion, int logicalAddress) {
if (isValidAddress(logicalAddress)) {
if (logicalAddress == ADDR_BACKUP_1 || logicalAddress == ADDR_BACKUP_2) {
- return cecVersion == Constants.VERSION_2_0;
+ return cecVersion >= HdmiControlManager.HDMI_CEC_VERSION_2_0;
}
return true;
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java
index 8af7332e24ed..6debc893ea1b 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java
@@ -74,6 +74,8 @@ public class ActiveSourceActionTest {
when(mContextSpy.getSystemService(PowerManager.class)).thenReturn(powerManager);
when(mIPowerManagerMock.isInteractive()).thenReturn(true);
+ HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(mContextSpy);
+
mHdmiControlService = new HdmiControlService(mContextSpy) {
@Override
AudioManager getAudioManager() {
@@ -104,6 +106,11 @@ public class ActiveSourceActionTest {
void writeStringSystemProperty(String key, String value) {
// do nothing
}
+
+ @Override
+ HdmiCecConfig getHdmiCecConfig() {
+ return hdmiCecConfig;
+ }
};
Looper looper = mTestLooper.getLooper();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
index 37a75e3822aa..a19336eeb5ea 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
@@ -76,6 +76,8 @@ public class ArcInitiationActionFromAvrTest {
when(mContextSpy.getSystemService(PowerManager.class)).thenReturn(powerManager);
when(mIPowerManagerMock.isInteractive()).thenReturn(true);
+ HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(mContextSpy);
+
HdmiControlService hdmiControlService =
new HdmiControlService(mContextSpy) {
@Override
@@ -106,6 +108,11 @@ public class ArcInitiationActionFromAvrTest {
Looper getServiceLooper() {
return mTestLooper.getLooper();
}
+
+ @Override
+ HdmiCecConfig getHdmiCecConfig() {
+ return hdmiCecConfig;
+ }
};
mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(hdmiControlService) {
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java
index 6027c3e4eeab..cd6977524943 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java
@@ -77,6 +77,8 @@ public class ArcTerminationActionFromAvrTest {
when(mContextSpy.getSystemService(PowerManager.class)).thenReturn(powerManager);
when(mIPowerManagerMock.isInteractive()).thenReturn(true);
+ HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(mContextSpy);
+
HdmiControlService hdmiControlService =
new HdmiControlService(mContextSpy) {
@Override
@@ -107,6 +109,11 @@ public class ArcTerminationActionFromAvrTest {
Looper getServiceLooper() {
return mTestLooper.getLooper();
}
+
+ @Override
+ HdmiCecConfig getHdmiCecConfig() {
+ return hdmiCecConfig;
+ }
};
Looper looper = mTestLooper.getLooper();
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 fb6266d89005..52899faf0ed7 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java
@@ -31,26 +31,35 @@ import java.io.IOException;
import javax.xml.datatype.DatatypeConfigurationException;
/**
- * Fake class which loads default system configuration with user-configurable
- * settings (useful for testing).
+ * Fake class which loads default system configuration with user-configurable
+ * settings (useful for testing).
*/
final class FakeHdmiCecConfig extends HdmiCecConfig {
private static final String TAG = "FakeHdmiCecConfig";
private static final String SYSTEM_CONFIG_XML =
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
- + "<cec-settings>"
- + " <setting name=\"send_standby_on_sleep\""
- + " value-type=\"string\""
- + " user-configurable=\"true\">"
- + " <allowed-values>"
- + " <value string-value=\"to_tv\" />"
- + " <value string-value=\"broadcast\" />"
- + " <value string-value=\"none\" />"
- + " </allowed-values>"
- + " <default-value string-value=\"to_tv\" />"
- + " </setting>"
- + "</cec-settings>";
+ + "<cec-settings>"
+ + " <setting name=\"send_standby_on_sleep\""
+ + " value-type=\"string\""
+ + " user-configurable=\"true\">"
+ + " <allowed-values>"
+ + " <value string-value=\"to_tv\" />"
+ + " <value string-value=\"broadcast\" />"
+ + " <value string-value=\"none\" />"
+ + " </allowed-values>"
+ + " <default-value string-value=\"to_tv\" />"
+ + " </setting>"
+ + " <setting name=\"hdmi_cec_version\""
+ + " value-type=\"int\""
+ + " user-configurable=\"true\">"
+ + " <allowed-values>"
+ + " <value int-value=\"0x05\" />"
+ + " <value int-value=\"0x06\" />"
+ + " </allowed-values>"
+ + " <default-value int-value=\"0x05\" />"
+ + " </setting>"
+ + "</cec-settings>";
FakeHdmiCecConfig(@NonNull Context context) {
super(context, new StorageAdapter(), parseFromString(SYSTEM_CONFIG_XML), 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 a27f7331e407..dd74f22c78b7 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java
@@ -1006,22 +1006,22 @@ public final class HdmiCecConfigTest {
HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
mContext, mStorageAdapter,
"<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
- + "<cec-settings>"
- + " <setting name=\"system_audio_mode_muting\""
- + " value-type=\"int\""
- + " user-configurable=\"true\">"
- + " <allowed-values>"
- + " <value int-value=\"0\" />"
- + " <value int-value=\"1\" />"
- + " </allowed-values>"
- + " <default-value int-value=\"1\" />"
- + " </setting>"
- + "</cec-settings>", null);
+ + "<cec-settings>"
+ + " <setting name=\"system_audio_mode_muting\""
+ + " value-type=\"int\""
+ + " user-configurable=\"true\">"
+ + " <allowed-values>"
+ + " <value int-value=\"0\" />"
+ + " <value int-value=\"1\" />"
+ + " </allowed-values>"
+ + " <default-value int-value=\"1\" />"
+ + " </setting>"
+ + "</cec-settings>", null);
hdmiCecConfig.setIntValue(
- HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING,
- HdmiControlManager.SYSTEM_AUDIO_MODE_MUTING_DISABLED);
+ HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING,
+ HdmiControlManager.SYSTEM_AUDIO_MODE_MUTING_DISABLED);
verify(mStorageAdapter).storeSystemProperty(
- HdmiCecConfig.SYSPROP_SYSTEM_AUDIO_MODE_MUTING,
- Integer.toString(HdmiControlManager.SYSTEM_AUDIO_MODE_MUTING_DISABLED));
+ HdmiCecConfig.SYSPROP_SYSTEM_AUDIO_MODE_MUTING,
+ Integer.toString(HdmiControlManager.SYSTEM_AUDIO_MODE_MUTING_DISABLED));
}
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java
index 81c3be5f9f75..0a3d545da0a9 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java
@@ -32,6 +32,7 @@ import static com.android.server.hdmi.Constants.ADDR_UNREGISTERED;
import static junit.framework.Assert.assertEquals;
import android.content.Context;
+import android.hardware.hdmi.HdmiControlManager;
import android.hardware.tv.cec.V1_0.SendMessageResult;
import android.os.Looper;
import android.os.test.TestLooper;
@@ -78,7 +79,7 @@ public class HdmiCecControllerTest {
}
private HdmiCecController mHdmiCecController;
- private int mCecVersion = Constants.VERSION_1_4;
+ private int mCecVersion = HdmiControlManager.HDMI_CEC_VERSION_1_4_b;
private int mLogicalAddress = 16;
private AllocateAddressCallback mCallback =
new AllocateAddressCallback() {
@@ -202,7 +203,7 @@ public class HdmiCecControllerTest {
@Test
public void testAllocateLogicalAddress_PlaybackNonPreferred_2_0_BackupOne() {
- mCecVersion = Constants.VERSION_2_0;
+ mCecVersion = HdmiControlManager.HDMI_CEC_VERSION_2_0;
mNativeWrapper.setPollAddressResponse(ADDR_PLAYBACK_1, SendMessageResult.SUCCESS);
mNativeWrapper.setPollAddressResponse(ADDR_PLAYBACK_2, SendMessageResult.SUCCESS);
@@ -214,7 +215,7 @@ public class HdmiCecControllerTest {
@Test
public void testAllocateLogicalAddress_PlaybackNonPreferred_2_0_BackupTwo() {
- mCecVersion = Constants.VERSION_2_0;
+ mCecVersion = HdmiControlManager.HDMI_CEC_VERSION_2_0;
mNativeWrapper.setPollAddressResponse(ADDR_PLAYBACK_1, SendMessageResult.SUCCESS);
mNativeWrapper.setPollAddressResponse(ADDR_PLAYBACK_2, SendMessageResult.SUCCESS);
@@ -245,7 +246,7 @@ public class HdmiCecControllerTest {
@Test
public void testAllocateLogicalAddress_PlaybackNonPreferred_2_0_AllOccupied() {
- mCecVersion = Constants.VERSION_2_0;
+ mCecVersion = HdmiControlManager.HDMI_CEC_VERSION_2_0;
mNativeWrapper.setPollAddressResponse(ADDR_PLAYBACK_1, SendMessageResult.SUCCESS);
mNativeWrapper.setPollAddressResponse(ADDR_PLAYBACK_2, SendMessageResult.SUCCESS);
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
index 433f6e7938e2..25530940e964 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
@@ -96,6 +96,9 @@ public class HdmiCecLocalDeviceAudioSystemTest {
mMyLooper = mTestLooper.getLooper();
PowerManager powerManager = new PowerManager(context, mIPowerManagerMock,
mIThermalServiceMock, new Handler(mMyLooper));
+
+ HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(context);
+
mHdmiControlService =
new HdmiControlService(InstrumentationRegistry.getTargetContext()) {
@Override
@@ -184,6 +187,11 @@ public class HdmiCecLocalDeviceAudioSystemTest {
PowerManager getPowerManager() {
return powerManager;
}
+
+ @Override
+ HdmiCecConfig getHdmiCecConfig() {
+ return hdmiCecConfig;
+ }
};
mHdmiControlService.setHdmiCecVolumeControlEnabled(true);
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
index 647da95c242d..9646b5d2ec2c 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
@@ -82,6 +82,8 @@ public class HdmiCecLocalDevicePlaybackTest {
mMyLooper = mTestLooper.getLooper();
PowerManager powerManager = new PowerManager(context, mIPowerManagerMock,
mIThermalServiceMock, new Handler(mMyLooper));
+ HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(context);
+
mHdmiControlService =
new HdmiControlService(InstrumentationRegistry.getTargetContext()) {
@Override
@@ -114,11 +116,16 @@ public class HdmiCecLocalDevicePlaybackTest {
return false;
}
- @Override
- PowerManager getPowerManager() {
- return powerManager;
- }
- };
+ @Override
+ PowerManager getPowerManager() {
+ return powerManager;
+ }
+
+ @Override
+ HdmiCecConfig getHdmiCecConfig() {
+ return hdmiCecConfig;
+ }
+ };
mHdmiCecLocalDevicePlayback = new HdmiCecLocalDevicePlayback(mHdmiControlService);
mHdmiCecLocalDevicePlayback.init();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java
index aa72d074a85f..12414d99d991 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java
@@ -72,6 +72,9 @@ public class HdmiCecLocalDeviceTvTest {
mMyLooper = mTestLooper.getLooper();
PowerManager powerManager = new PowerManager(context, mIPowerManagerMock,
mIThermalServiceMock, new Handler(mMyLooper));
+
+ HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(context);
+
mHdmiControlService =
new HdmiControlService(InstrumentationRegistry.getTargetContext()) {
@Override
@@ -93,6 +96,11 @@ public class HdmiCecLocalDeviceTvTest {
PowerManager getPowerManager() {
return powerManager;
}
+
+ @Override
+ HdmiCecConfig getHdmiCecConfig() {
+ return hdmiCecConfig;
+ }
};
mHdmiCecLocalDeviceTv = new HdmiCecLocalDeviceTv(mHdmiControlService);
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 dea3896f1b77..2e4bed97dbec 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
@@ -142,11 +142,18 @@ public class HdmiControlServiceTest {
when(mContextSpy.getSystemService(Context.POWER_SERVICE)).thenReturn(powerManager);
when(mIPowerManagerMock.isInteractive()).thenReturn(true);
+ HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(mContextSpy);
+
mHdmiControlService = new HdmiControlService(mContextSpy) {
@Override
boolean isStandbyMessageReceived() {
return mStandbyMessageReceived;
}
+
+ @Override
+ HdmiCecConfig getHdmiCecConfig() {
+ return hdmiCecConfig;
+ }
};
mMyLooper = mTestLooper.getLooper();
@@ -390,42 +397,52 @@ public class HdmiControlServiceTest {
Settings.Global.HDMI_CEC_VERSION,
null);
mHdmiControlService.setControlEnabled(true);
- assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_1_4);
+ assertThat(mHdmiControlService.getCecVersion()).isEqualTo(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b);
}
@Test
public void getCecVersion_1_4() {
- Settings.Global.putInt(mContextSpy.getContentResolver(), Settings.Global.HDMI_CEC_VERSION,
- Constants.VERSION_1_4);
+ mHdmiControlService.getHdmiCecConfig().setIntValue(
+ HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b);
mHdmiControlService.setControlEnabled(true);
- assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_1_4);
+ assertThat(mHdmiControlService.getCecVersion()).isEqualTo(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b);
}
@Test
public void getCecVersion_2_0() {
- Settings.Global.putInt(mContextSpy.getContentResolver(), Settings.Global.HDMI_CEC_VERSION,
- Constants.VERSION_2_0);
+ mHdmiControlService.getHdmiCecConfig().setIntValue(
+ HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
+ HdmiControlManager.HDMI_CEC_VERSION_2_0);
mHdmiControlService.setControlEnabled(true);
- assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_2_0);
+ assertThat(mHdmiControlService.getCecVersion()).isEqualTo(
+ HdmiControlManager.HDMI_CEC_VERSION_2_0);
}
@Test
public void getCecVersion_change() {
- Settings.Global.putInt(mContextSpy.getContentResolver(), Settings.Global.HDMI_CEC_VERSION,
- Constants.VERSION_1_4);
+ mHdmiControlService.getHdmiCecConfig().setIntValue(
+ HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b);
mHdmiControlService.setControlEnabled(true);
- assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_1_4);
+ assertThat(mHdmiControlService.getCecVersion()).isEqualTo(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b);
- Settings.Global.putInt(mContextSpy.getContentResolver(), Settings.Global.HDMI_CEC_VERSION,
- Constants.VERSION_2_0);
+ mHdmiControlService.getHdmiCecConfig().setIntValue(
+ HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
+ HdmiControlManager.HDMI_CEC_VERSION_2_0);
mHdmiControlService.setControlEnabled(true);
- assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_2_0);
+ assertThat(mHdmiControlService.getCecVersion()).isEqualTo(
+ HdmiControlManager.HDMI_CEC_VERSION_2_0);
}
@Test
public void handleGiveFeatures_cec14_featureAbort() {
- Settings.Global.putInt(mContextSpy.getContentResolver(), Settings.Global.HDMI_CEC_VERSION,
- Constants.VERSION_1_4);
+ mHdmiControlService.getHdmiCecConfig().setIntValue(
+ HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b);
mHdmiControlService.setControlEnabled(true);
mTestLooper.dispatchAll();
@@ -441,8 +458,9 @@ public class HdmiControlServiceTest {
@Test
public void handleGiveFeatures_cec20_reportsFeatures() {
- Settings.Global.putInt(mContextSpy.getContentResolver(), Settings.Global.HDMI_CEC_VERSION,
- Constants.VERSION_2_0);
+ mHdmiControlService.getHdmiCecConfig().setIntValue(
+ HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
+ HdmiControlManager.HDMI_CEC_VERSION_2_0);
mHdmiControlService.setControlEnabled(true);
mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
mTestLooper.dispatchAll();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java
index a8f3acf8726f..dbf3b531fe04 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java
@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import android.hardware.hdmi.HdmiControlManager;
import android.hardware.hdmi.HdmiDeviceInfo;
import android.platform.test.annotations.Presubmit;
import android.util.Slog;
@@ -533,69 +534,84 @@ public class HdmiUtilsTest {
@Test
public void isEligibleAddressForCecVersion_1_4() {
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_TV)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_RECORDER_1)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_RECORDER_2)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_TUNER_1)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_PLAYBACK_1)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_AUDIO_SYSTEM)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_TUNER_2)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_TUNER_3)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_PLAYBACK_2)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_RECORDER_3)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_TUNER_4)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_PLAYBACK_3)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_BACKUP_1)).isFalse();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_BACKUP_2)).isFalse();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_1_4,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(
+ HdmiControlManager.HDMI_CEC_VERSION_1_4_b,
Constants.ADDR_SPECIFIC_USE)).isTrue();
}
@Test
public void isEligibleAddressForCecVersion_2_0() {
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_TV)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_RECORDER_1)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_RECORDER_2)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_TUNER_1)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_PLAYBACK_1)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_AUDIO_SYSTEM)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_TUNER_2)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_TUNER_3)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_PLAYBACK_2)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_RECORDER_3)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_TUNER_4)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_PLAYBACK_3)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_BACKUP_1)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_BACKUP_2)).isTrue();
- assertThat(HdmiUtils.isEligibleAddressForCecVersion(Constants.VERSION_2_0,
+ assertThat(HdmiUtils.isEligibleAddressForCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0,
Constants.ADDR_SPECIFIC_USE)).isTrue();
}
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java
index 0e4bfab0d94c..0a225a06b380 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java
@@ -21,6 +21,7 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import android.annotation.Nullable;
+import android.content.Context;
import android.hardware.hdmi.HdmiDeviceInfo;
import android.hardware.tv.cec.V1_0.SendMessageResult;
import android.media.AudioManager;
@@ -61,9 +62,12 @@ public class SystemAudioInitiationActionFromAvrTest {
@Before
public void SetUp() {
mDeviceInfoForTests = new HdmiDeviceInfo(1001, 1234);
- HdmiControlService hdmiControlService =
- new HdmiControlService(InstrumentationRegistry.getTargetContext()) {
+ Context context = InstrumentationRegistry.getTargetContext();
+
+ HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(context);
+
+ HdmiControlService hdmiControlService = new HdmiControlService(context) {
@Override
void sendCecCommand(
HdmiCecMessage command, @Nullable SendMessageCallback callback) {
@@ -156,6 +160,11 @@ public class SystemAudioInitiationActionFromAvrTest {
int pathToPortId(int path) {
return -1;
}
+
+ @Override
+ HdmiCecConfig getHdmiCecConfig() {
+ return hdmiCecConfig;
+ }
};
Looper looper = mTestLooper.getLooper();