summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nathalie Le Clair <lcnathalie@google.com> 2020-11-03 10:27:13 +0100
committer Nathalie Le Clair <lcnathalie@google.com> 2020-11-17 14:01:45 +0100
commit559d8ed8306979a4d9052b6f184c67082c175fff (patch)
tree0280d98a1bdfb474021f0ec066e6122f65cb6a07
parent6815a7ce808695282dd7256059686c5b922a57ee (diff)
Generalize queryDisplayStatus() to all source devices
Bug: 167962015 Test: atest HdmiCecLocalDevicePlaybackTest Change-Id: I51527f9055a7be374614b452f75d8ab9ced6454f
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java19
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java19
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiControlService.java8
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java14
4 files changed, 39 insertions, 21 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
index 98779197db69..23061153a14e 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
@@ -143,25 +143,6 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
String.valueOf(addr));
}
- @ServiceThreadOnly
- void queryDisplayStatus(IHdmiControlCallback callback) {
- assertRunOnServiceThread();
- List<DevicePowerStatusAction> actions = getActions(DevicePowerStatusAction.class);
- if (!actions.isEmpty()) {
- Slog.i(TAG, "queryDisplayStatus already in progress");
- actions.get(0).addCallback(callback);
- return;
- }
- DevicePowerStatusAction action = DevicePowerStatusAction.create(this, Constants.ADDR_TV,
- callback);
- if (action == null) {
- Slog.w(TAG, "Cannot initiate queryDisplayStatus");
- invokeCallback(callback, HdmiControlManager.RESULT_EXCEPTION);
- return;
- }
- addAndStartAction(action);
- }
-
@Override
@ServiceThreadOnly
void onHotplug(int portId, boolean connected) {
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java
index 4b589255b251..3b3ac747db6c 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java
@@ -70,6 +70,25 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice {
super(service, deviceType);
}
+ @ServiceThreadOnly
+ void queryDisplayStatus(IHdmiControlCallback callback) {
+ assertRunOnServiceThread();
+ List<DevicePowerStatusAction> actions = getActions(DevicePowerStatusAction.class);
+ if (!actions.isEmpty()) {
+ Slog.i(TAG, "queryDisplayStatus already in progress");
+ actions.get(0).addCallback(callback);
+ return;
+ }
+ DevicePowerStatusAction action = DevicePowerStatusAction.create(this, Constants.ADDR_TV,
+ callback);
+ if (action == null) {
+ Slog.w(TAG, "Cannot initiate queryDisplayStatus");
+ invokeCallback(callback, HdmiControlManager.RESULT_EXCEPTION);
+ return;
+ }
+ addAndStartAction(action);
+ }
+
@Override
@ServiceThreadOnly
void onHotplug(int portId, boolean connected) {
diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java
index 1ff8803e0af0..37b1459aa0a5 100644
--- a/services/core/java/com/android/server/hdmi/HdmiControlService.java
+++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java
@@ -2400,9 +2400,13 @@ public class HdmiControlService extends SystemService {
return;
}
- HdmiCecLocalDevicePlayback source = playback();
+ HdmiCecLocalDeviceSource source = playback();
+ if (source == null) {
+ source = audioSystem();
+ }
+
if (source == null) {
- Slog.w(TAG, "Local playback device not available");
+ Slog.w(TAG, "Local source device not available");
invokeCallback(callback, HdmiControlManager.RESULT_SOURCE_NOT_AVAILABLE);
return;
}
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 8f56fc893020..d45003715552 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
@@ -1183,6 +1183,20 @@ public class HdmiCecLocalDevicePlaybackTest {
}
@Test
+ public void queryDisplayStatus() {
+ mHdmiControlService.queryDisplayStatus(new IHdmiControlCallback.Stub() {
+ @Override
+ public void onComplete(int result) {
+ }
+ });
+ mTestLooper.dispatchAll();
+
+ HdmiCecMessage expectedMessage = HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
+ mPlaybackLogicalAddress, Constants.ADDR_TV);
+ assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage);
+ }
+
+ @Test
public void toggleAndFollowTvPower_ToTv_TvStatusOn() {
mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setStringValue(
HdmiControlManager.CEC_SETTING_NAME_SEND_STANDBY_ON_SLEEP,