From 4c84d9161dd656be525237ebdb31003069e0581e Mon Sep 17 00:00:00 2001 From: Nathalie Le Clair Date: Tue, 23 Mar 2021 10:25:11 +0100 Subject: [PATCH] Playback device to not send before Test: atest and manual Bug: 183603416 Change-Id: Iee4ae7b9d9bf86c2e984483c16d9875a312a05ae Merged-In: Iee4ae7b9d9bf86c2e984483c16d9875a312a05ae --- .../hdmi/HdmiCecLocalDevicePlayback.java | 9 ++++----- .../hdmi/HdmiCecLocalDevicePlaybackTest.java | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java index 10f6948f8782a..97b64a5595674 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java @@ -136,12 +136,8 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { if (!mService.isControlEnabled()) { return; } - if (isActiveSource()) { - mService.sendCecCommand(HdmiCecMessageBuilder.buildInactiveSource( - mAddress, mService.getPhysicalAddress())); - } boolean wasActiveSource = isActiveSource(); - // Invalidate the internal active source record when goes to standby + // Invalidate the internal active source record when going to standby mService.setActiveSource(Constants.ADDR_INVALID, Constants.INVALID_PHYSICAL_ADDRESS, "HdmiCecLocalDevicePlayback#onStandby()"); boolean mTvSendStandbyOnSleep = mService.getHdmiCecConfig().getIntValue( @@ -167,6 +163,9 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { Constants.ADDR_BROADCAST)); break; case HdmiControlManager.POWER_CONTROL_MODE_NONE: + mService.sendCecCommand( + HdmiCecMessageBuilder.buildInactiveSource(mAddress, + mService.getPhysicalAddress())); break; } break; 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 1ac01509bb6f0..e28cd693720fc 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java @@ -698,9 +698,12 @@ public class HdmiCecLocalDevicePlaybackTest { mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV); HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby( mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST); + HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource( + mPlaybackLogicalAddress, mPlaybackPhysicalAddress); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(standbyMessageToTv); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(standbyMessageBroadcast); + assertThat(mNativeWrapper.getResultMessages()).doesNotContain(inactiveSource); } @Test @@ -720,9 +723,12 @@ public class HdmiCecLocalDevicePlaybackTest { mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV); HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby( mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST); + HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource( + mPlaybackLogicalAddress, mPlaybackPhysicalAddress); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(standbyMessageToTv); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(standbyMessageBroadcast); + assertThat(mNativeWrapper.getResultMessages()).doesNotContain(inactiveSource); } @Test @@ -742,9 +748,12 @@ public class HdmiCecLocalDevicePlaybackTest { mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV); HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby( mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST); + HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource( + mPlaybackLogicalAddress, mPlaybackPhysicalAddress); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(standbyMessageToTv); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(standbyMessageBroadcast); + assertThat(mNativeWrapper.getResultMessages()).doesNotContain(inactiveSource); } @Test @@ -764,9 +773,12 @@ public class HdmiCecLocalDevicePlaybackTest { mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV); HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby( mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST); + HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource( + mPlaybackLogicalAddress, mPlaybackPhysicalAddress); assertThat(mNativeWrapper.getResultMessages()).contains(standbyMessageToTv); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(standbyMessageBroadcast); + assertThat(mNativeWrapper.getResultMessages()).doesNotContain(inactiveSource); } @Test @@ -786,9 +798,12 @@ public class HdmiCecLocalDevicePlaybackTest { mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV); HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby( mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST); + HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource( + mPlaybackLogicalAddress, mPlaybackPhysicalAddress); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(standbyMessageToTv); assertThat(mNativeWrapper.getResultMessages()).contains(standbyMessageBroadcast); + assertThat(mNativeWrapper.getResultMessages()).doesNotContain(inactiveSource); } @Test @@ -808,9 +823,12 @@ public class HdmiCecLocalDevicePlaybackTest { mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV); HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby( mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST); + HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource( + mPlaybackLogicalAddress, mPlaybackPhysicalAddress); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(standbyMessageToTv); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(standbyMessageBroadcast); + assertThat(mNativeWrapper.getResultMessages()).contains(inactiveSource); } @Test