Loading services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java +10 −10 Original line number Diff line number Diff line Loading @@ -232,11 +232,12 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { mAutoTvOff = enabled; } @Override @ServiceThreadOnly @VisibleForTesting void setIsActiveSource(boolean on) { assertRunOnServiceThread(); mIsActiveSource = on; super.setIsActiveSource(on); if (on) { getWakeLock().acquire(); } else { Loading Loading @@ -274,19 +275,15 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { @Override @ServiceThreadOnly protected boolean handleActiveSource(HdmiCecMessage message) { super.handleActiveSource(message); if (mIsActiveSource) { return true; } protected void onActiveSourceLost() { assertRunOnServiceThread(); switch (mPowerStateChangeOnActiveSourceLost) { case STANDBY_NOW: mService.standby(); return true; return; case NONE: return true; return; } return true; } @ServiceThreadOnly Loading Loading @@ -398,9 +395,12 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { } @Override @ServiceThreadOnly protected void handleRoutingChangeAndInformation(int physicalAddress, HdmiCecMessage message) { assertRunOnServiceThread(); if (physicalAddress != mService.getPhysicalAddress()) { return; // Do nothing. setActiveSource(physicalAddress); return; } switch (mPlaybackDeviceActionOnRoutingControl) { case WAKE_UP_AND_SEND_ACTIVE_SOURCE: Loading services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java +31 −5 Original line number Diff line number Diff line Loading @@ -113,6 +113,19 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice { addAndStartAction(action); } @ServiceThreadOnly protected void onActiveSourceLost() { // Nothing to do. } @ServiceThreadOnly protected void setActiveSource(int physicalAddress) { assertRunOnServiceThread(); // Invalidate the internal active source record. This will also update mIsActiveSource. ActiveSource activeSource = ActiveSource.of(Constants.ADDR_INVALID, physicalAddress); setActiveSource(activeSource); } @ServiceThreadOnly protected boolean handleActiveSource(HdmiCecMessage message) { assertRunOnServiceThread(); Loading Loading @@ -148,6 +161,9 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice { if (physicalAddress == mService.getPhysicalAddress() && mService.isPlaybackDevice()) { setAndBroadcastActiveSource(message, physicalAddress); } if (physicalAddress != mService.getPhysicalAddress()) { setActiveSource(physicalAddress); } switchInputOnReceivingNewActivePath(physicalAddress); return true; } Loading @@ -156,18 +172,21 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice { @ServiceThreadOnly protected boolean handleRoutingChange(HdmiCecMessage message) { assertRunOnServiceThread(); int physicalAddress = HdmiUtils.twoBytesToInt(message.getParams(), 2); if (physicalAddress != mService.getPhysicalAddress()) { setActiveSource(physicalAddress); } if (!isRoutingControlFeatureEnabled()) { mService.maySendFeatureAbortCommand(message, Constants.ABORT_REFUSED); return true; } int newPath = HdmiUtils.twoBytesToInt(message.getParams(), 2); // if the current device is a pure playback device if (!mIsSwitchDevice && newPath == mService.getPhysicalAddress() && physicalAddress == mService.getPhysicalAddress() && mService.isPlaybackDevice()) { setAndBroadcastActiveSource(message, newPath); setAndBroadcastActiveSource(message, physicalAddress); } handleRoutingChangeAndInformation(newPath, message); handleRoutingChangeAndInformation(physicalAddress, message); return true; } Loading @@ -175,11 +194,14 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice { @ServiceThreadOnly protected boolean handleRoutingInformation(HdmiCecMessage message) { assertRunOnServiceThread(); int physicalAddress = HdmiUtils.twoBytesToInt(message.getParams()); if (physicalAddress != mService.getPhysicalAddress()) { setActiveSource(physicalAddress); } if (!isRoutingControlFeatureEnabled()) { mService.maySendFeatureAbortCommand(message, Constants.ABORT_REFUSED); return true; } int physicalAddress = HdmiUtils.twoBytesToInt(message.getParams()); // if the current device is a pure playback device if (!mIsSwitchDevice && physicalAddress == mService.getPhysicalAddress() Loading Loading @@ -222,7 +244,11 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice { @ServiceThreadOnly void setIsActiveSource(boolean on) { assertRunOnServiceThread(); boolean wasActiveSource = mIsActiveSource; mIsActiveSource = on; if (wasActiveSource && !mIsActiveSource) { onActiveSourceLost(); } } protected void wakeUpIfActiveSource() { Loading services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java +145 −0 Original line number Diff line number Diff line Loading @@ -262,6 +262,112 @@ public class HdmiCecLocalDevicePlaybackTest { assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); } @Test public void handleRoutingChange_otherDevice_None() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.NONE; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingChange(ADDR_TV, 0x0000, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingChange(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isFalse(); } @Test public void handleRoutingChange_otherDevice_StandbyNow() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingChange(ADDR_TV, 0x0000, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingChange(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isTrue(); } @Test public void handleRoutingChange_otherDevice_StandbyNow_InactiveSource() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(false); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingChange(ADDR_TV, 0x0000, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingChange(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isFalse(); } @Test public void handleRoutingChange_sameDevice_StandbyNow_ActiveSource() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingChange(ADDR_TV, 0x0000, mPlaybackPhysicalAddress); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingChange(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isTrue(); assertThat(mStandby).isFalse(); } @Test public void handleRoutingInformation_otherDevice_None() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.NONE; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingInformation(ADDR_TV, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingInformation(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isFalse(); } @Test public void handleRoutingInformation_otherDevice_StandbyNow() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingInformation(ADDR_TV, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingInformation(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isTrue(); } @Test public void handleRoutingInformation_otherDevice_StandbyNow_InactiveSource() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(false); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingInformation(ADDR_TV, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingInformation(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isFalse(); } @Test public void handleRoutingInformation_sameDevice_StandbyNow_ActiveSource() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingInformation(ADDR_TV, mPlaybackPhysicalAddress); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingInformation(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isTrue(); assertThat(mStandby).isFalse(); } // Playback device does not handle routing control related feature right now @Ignore("b/120845532") @Test Loading Loading @@ -629,4 +735,43 @@ public class HdmiCecLocalDevicePlaybackTest { mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress()); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isTrue(); } @Test public void handleSetStreamPath_otherDevice_None() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.NONE; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildSetStreamPath(ADDR_TV, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleSetStreamPath(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isFalse(); } @Test public void handleSetStreamPath_otherDevice_StandbyNow() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildSetStreamPath(ADDR_TV, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleSetStreamPath(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isTrue(); } @Test public void handleSetStreamPath_otherDevice_StandbyNow_InactiveSource() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(false); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildSetStreamPath(ADDR_TV, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleSetStreamPath(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isFalse(); } } Loading
services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java +10 −10 Original line number Diff line number Diff line Loading @@ -232,11 +232,12 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { mAutoTvOff = enabled; } @Override @ServiceThreadOnly @VisibleForTesting void setIsActiveSource(boolean on) { assertRunOnServiceThread(); mIsActiveSource = on; super.setIsActiveSource(on); if (on) { getWakeLock().acquire(); } else { Loading Loading @@ -274,19 +275,15 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { @Override @ServiceThreadOnly protected boolean handleActiveSource(HdmiCecMessage message) { super.handleActiveSource(message); if (mIsActiveSource) { return true; } protected void onActiveSourceLost() { assertRunOnServiceThread(); switch (mPowerStateChangeOnActiveSourceLost) { case STANDBY_NOW: mService.standby(); return true; return; case NONE: return true; return; } return true; } @ServiceThreadOnly Loading Loading @@ -398,9 +395,12 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { } @Override @ServiceThreadOnly protected void handleRoutingChangeAndInformation(int physicalAddress, HdmiCecMessage message) { assertRunOnServiceThread(); if (physicalAddress != mService.getPhysicalAddress()) { return; // Do nothing. setActiveSource(physicalAddress); return; } switch (mPlaybackDeviceActionOnRoutingControl) { case WAKE_UP_AND_SEND_ACTIVE_SOURCE: Loading
services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java +31 −5 Original line number Diff line number Diff line Loading @@ -113,6 +113,19 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice { addAndStartAction(action); } @ServiceThreadOnly protected void onActiveSourceLost() { // Nothing to do. } @ServiceThreadOnly protected void setActiveSource(int physicalAddress) { assertRunOnServiceThread(); // Invalidate the internal active source record. This will also update mIsActiveSource. ActiveSource activeSource = ActiveSource.of(Constants.ADDR_INVALID, physicalAddress); setActiveSource(activeSource); } @ServiceThreadOnly protected boolean handleActiveSource(HdmiCecMessage message) { assertRunOnServiceThread(); Loading Loading @@ -148,6 +161,9 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice { if (physicalAddress == mService.getPhysicalAddress() && mService.isPlaybackDevice()) { setAndBroadcastActiveSource(message, physicalAddress); } if (physicalAddress != mService.getPhysicalAddress()) { setActiveSource(physicalAddress); } switchInputOnReceivingNewActivePath(physicalAddress); return true; } Loading @@ -156,18 +172,21 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice { @ServiceThreadOnly protected boolean handleRoutingChange(HdmiCecMessage message) { assertRunOnServiceThread(); int physicalAddress = HdmiUtils.twoBytesToInt(message.getParams(), 2); if (physicalAddress != mService.getPhysicalAddress()) { setActiveSource(physicalAddress); } if (!isRoutingControlFeatureEnabled()) { mService.maySendFeatureAbortCommand(message, Constants.ABORT_REFUSED); return true; } int newPath = HdmiUtils.twoBytesToInt(message.getParams(), 2); // if the current device is a pure playback device if (!mIsSwitchDevice && newPath == mService.getPhysicalAddress() && physicalAddress == mService.getPhysicalAddress() && mService.isPlaybackDevice()) { setAndBroadcastActiveSource(message, newPath); setAndBroadcastActiveSource(message, physicalAddress); } handleRoutingChangeAndInformation(newPath, message); handleRoutingChangeAndInformation(physicalAddress, message); return true; } Loading @@ -175,11 +194,14 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice { @ServiceThreadOnly protected boolean handleRoutingInformation(HdmiCecMessage message) { assertRunOnServiceThread(); int physicalAddress = HdmiUtils.twoBytesToInt(message.getParams()); if (physicalAddress != mService.getPhysicalAddress()) { setActiveSource(physicalAddress); } if (!isRoutingControlFeatureEnabled()) { mService.maySendFeatureAbortCommand(message, Constants.ABORT_REFUSED); return true; } int physicalAddress = HdmiUtils.twoBytesToInt(message.getParams()); // if the current device is a pure playback device if (!mIsSwitchDevice && physicalAddress == mService.getPhysicalAddress() Loading Loading @@ -222,7 +244,11 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice { @ServiceThreadOnly void setIsActiveSource(boolean on) { assertRunOnServiceThread(); boolean wasActiveSource = mIsActiveSource; mIsActiveSource = on; if (wasActiveSource && !mIsActiveSource) { onActiveSourceLost(); } } protected void wakeUpIfActiveSource() { Loading
services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java +145 −0 Original line number Diff line number Diff line Loading @@ -262,6 +262,112 @@ public class HdmiCecLocalDevicePlaybackTest { assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); } @Test public void handleRoutingChange_otherDevice_None() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.NONE; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingChange(ADDR_TV, 0x0000, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingChange(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isFalse(); } @Test public void handleRoutingChange_otherDevice_StandbyNow() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingChange(ADDR_TV, 0x0000, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingChange(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isTrue(); } @Test public void handleRoutingChange_otherDevice_StandbyNow_InactiveSource() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(false); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingChange(ADDR_TV, 0x0000, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingChange(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isFalse(); } @Test public void handleRoutingChange_sameDevice_StandbyNow_ActiveSource() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingChange(ADDR_TV, 0x0000, mPlaybackPhysicalAddress); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingChange(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isTrue(); assertThat(mStandby).isFalse(); } @Test public void handleRoutingInformation_otherDevice_None() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.NONE; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingInformation(ADDR_TV, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingInformation(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isFalse(); } @Test public void handleRoutingInformation_otherDevice_StandbyNow() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingInformation(ADDR_TV, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingInformation(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isTrue(); } @Test public void handleRoutingInformation_otherDevice_StandbyNow_InactiveSource() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(false); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingInformation(ADDR_TV, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingInformation(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isFalse(); } @Test public void handleRoutingInformation_sameDevice_StandbyNow_ActiveSource() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingInformation(ADDR_TV, mPlaybackPhysicalAddress); assertThat(mHdmiCecLocalDevicePlayback.handleRoutingInformation(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isTrue(); assertThat(mStandby).isFalse(); } // Playback device does not handle routing control related feature right now @Ignore("b/120845532") @Test Loading Loading @@ -629,4 +735,43 @@ public class HdmiCecLocalDevicePlaybackTest { mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress()); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isTrue(); } @Test public void handleSetStreamPath_otherDevice_None() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.NONE; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildSetStreamPath(ADDR_TV, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleSetStreamPath(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isFalse(); } @Test public void handleSetStreamPath_otherDevice_StandbyNow() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(true); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildSetStreamPath(ADDR_TV, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleSetStreamPath(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isTrue(); } @Test public void handleSetStreamPath_otherDevice_StandbyNow_InactiveSource() { mHdmiCecLocalDevicePlayback.mPowerStateChangeOnActiveSourceLost = HdmiProperties.power_state_change_on_active_source_lost_values.STANDBY_NOW; mHdmiCecLocalDevicePlayback.setIsActiveSource(false); mStandby = false; HdmiCecMessage message = HdmiCecMessageBuilder.buildSetStreamPath(ADDR_TV, 0x5000); assertThat(mHdmiCecLocalDevicePlayback.handleSetStreamPath(message)).isTrue(); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse(); assertThat(mStandby).isFalse(); } }