diff options
| author | 2021-01-27 16:09:39 +0000 | |
|---|---|---|
| committer | 2021-01-27 16:09:39 +0000 | |
| commit | e363da126961e6ee2a4fd81d49ef095b3ce5d88a (patch) | |
| tree | 9c1d3b247d367aaf12f24ab85ecc2a17226ea178 | |
| parent | 62f17faa91819fdb8008fbcba31ac7505318868a (diff) | |
| parent | dc2e424cdda051da90811c540e1613ec84830079 (diff) | |
Merge "[CEC Configuration] Add 'tv_send_standby_on_sleep' option" into sc-dev
10 files changed, 151 insertions, 54 deletions
diff --git a/core/java/android/hardware/hdmi/HdmiControlManager.java b/core/java/android/hardware/hdmi/HdmiControlManager.java index 4ec3f926ed86..b90c72832d36 100644 --- a/core/java/android/hardware/hdmi/HdmiControlManager.java +++ b/core/java/android/hardware/hdmi/HdmiControlManager.java @@ -503,6 +503,29 @@ public final class HdmiControlManager { @Retention(RetentionPolicy.SOURCE) public @interface TvWakeOnOneTouchPlay {} + // -- Whether TV should send <Standby> on sleep. + /** + * Sending <Standby> on sleep. + * + * @hide + */ + public static final int TV_SEND_STANDBY_ON_SLEEP_ENABLED = 1; + /** + * Not sending <Standby> on sleep. + * + * @hide + */ + public static final int TV_SEND_STANDBY_ON_SLEEP_DISABLED = 0; + /** + * @hide + */ + @IntDef(prefix = { "TV_SEND_STANDBY_ON_SLEEP_" }, value = { + TV_SEND_STANDBY_ON_SLEEP_ENABLED, + TV_SEND_STANDBY_ON_SLEEP_DISABLED + }) + @Retention(RetentionPolicy.SOURCE) + public @interface TvSendStandbyOnSleep {} + // -- The RC profile of a TV panel. /** * RC profile none. @@ -747,6 +770,14 @@ public final class HdmiControlManager { public static final String CEC_SETTING_NAME_TV_WAKE_ON_ONE_TOUCH_PLAY = "tv_wake_on_one_touch_play"; /** + * Name of a setting deciding whether the device will also turn off other CEC devices + * when it goes to standby mode. + * + * @hide + */ + public static final String CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP = + "tv_send_standby_on_sleep"; + /** * Name of a setting representing the RC profile of a TV panel. * * @hide @@ -805,12 +836,13 @@ public final class HdmiControlManager { CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING, CEC_SETTING_NAME_VOLUME_CONTROL_MODE, CEC_SETTING_NAME_TV_WAKE_ON_ONE_TOUCH_PLAY, + CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP, CEC_SETTING_NAME_RC_PROFILE_TV, CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_ROOT_MENU, CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_SETUP_MENU, CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_CONTENTS_MENU, CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_TOP_MENU, - CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU + CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU, }) public @interface CecSettingName {} @@ -2158,4 +2190,48 @@ public final class HdmiControlManager { throw e.rethrowFromSystemServer(); } } + + /** + * Set the current status of TV send <Standby> on Sleep. + * + * <p>Sets whether the device will also turn off other CEC devices + * when it goes to standby mode. + * + * @hide + */ + @RequiresPermission(android.Manifest.permission.HDMI_CEC) + public void setTvSendStandbyOnSleep(@NonNull @TvSendStandbyOnSleep 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_TV_SEND_STANDBY_ON_SLEEP, value); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * Get the current status of TV send <Standby> on Sleep. + * + * <p>Reflects whether the device will also turn off other CEC devices + * when it goes to standby mode. + * + * @hide + */ + @NonNull + @TvSendStandbyOnSleep + @RequiresPermission(android.Manifest.permission.HDMI_CEC) + public int getTvSendStandbyOnSleep() { + if (mService == null) { + Log.e(TAG, "HdmiControlService is not available"); + throw new RuntimeException("HdmiControlService is not available"); + } + try { + return mService.getCecSettingIntValue(CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } } diff --git a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java index d66bf6359426..69180643661f 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java @@ -303,6 +303,8 @@ public class HdmiCecConfig { return STORAGE_SHARED_PREFS; case HdmiControlManager.CEC_SETTING_NAME_TV_WAKE_ON_ONE_TOUCH_PLAY: return STORAGE_GLOBAL_SETTINGS; + case HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP: + return STORAGE_GLOBAL_SETTINGS; case HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_TV: return STORAGE_SHARED_PREFS; case HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_ROOT_MENU: @@ -338,6 +340,8 @@ public class HdmiCecConfig { return setting.getName(); case HdmiControlManager.CEC_SETTING_NAME_TV_WAKE_ON_ONE_TOUCH_PLAY: return Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED; + case HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP: + return Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED; case HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_TV: return setting.getName(); case HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_ROOT_MENU: diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java index ccce9dc43e6d..382f0f9d6329 100755 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java @@ -956,8 +956,6 @@ abstract class HdmiCecLocalDevice { } } - void setAutoDeviceOff(boolean enabled) {} - /** * Called when a hot-plug event issued. * diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java index e6cf18b8db3d..75b52f95d5bb 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java @@ -24,7 +24,6 @@ import android.hardware.tv.cec.V1_0.SendMessageResult; import android.os.PowerManager; import android.os.PowerManager.WakeLock; import android.os.SystemProperties; -import android.provider.Settings.Global; import android.sysprop.HdmiProperties; import android.util.Slog; @@ -56,9 +55,6 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { // Lazily initialized - should call getWakeLock() to get the instance. private ActiveWakeLock mWakeLock; - // If true, turn off TV upon standby. False by default. - private boolean mAutoTvOff; - // Determines what action should be taken upon receiving Routing Control messages. @VisibleForTesting protected HdmiProperties.playback_device_action_on_routing_control_values @@ -68,12 +64,6 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { HdmiCecLocalDevicePlayback(HdmiControlService service) { super(service, HdmiDeviceInfo.DEVICE_PLAYBACK); - - mAutoTvOff = mService.readBooleanSetting(Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, false); - - // The option is false by default. Update settings db as well to have the right - // initial setting on UI. - mService.writeBooleanSetting(Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, mAutoTvOff); } @Override @@ -154,7 +144,10 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { // Invalidate the internal active source record when goes to standby mService.setActiveSource(Constants.ADDR_INVALID, Constants.INVALID_PHYSICAL_ADDRESS, "HdmiCecLocalDevicePlayback#onStandby()"); - if (initiatedByCec || !mAutoTvOff || !wasActiveSource) { + boolean mTvSendStandbyOnSleep = mService.getHdmiCecConfig().getIntValue( + HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP) + == HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED; + if (initiatedByCec || !mTvSendStandbyOnSleep || !wasActiveSource) { return; } switch (standbyAction) { @@ -201,13 +194,6 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { } @Override - @ServiceThreadOnly - void setAutoDeviceOff(boolean enabled) { - assertRunOnServiceThread(); - mAutoTvOff = enabled; - } - - @Override @CallSuper @ServiceThreadOnly @VisibleForTesting @@ -425,7 +411,6 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { protected void dump(final IndentingPrintWriter pw) { super.dump(pw); pw.println("isActiveSource(): " + isActiveSource()); - pw.println("mAutoTvOff:" + mAutoTvOff); } // Wrapper interface over PowerManager.WakeLock diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index 5ef3738fc5b6..a3e18d161751 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -89,9 +89,6 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @GuardedBy("mLock") private boolean mSystemAudioMute = false; - // If true, TV going to standby mode puts other devices also to standby. - private boolean mAutoDeviceOff; - private final HdmiCecStandbyModeHandler mStandbyHandler; // If true, do not do routing control/send active source for internal source. @@ -156,8 +153,6 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { HdmiCecLocalDeviceTv(HdmiControlService service) { super(service, HdmiDeviceInfo.DEVICE_TV); mPrevPortId = Constants.INVALID_PORT_ID; - mAutoDeviceOff = mService.readBooleanSetting(Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, - true); mSystemAudioControlFeatureEnabled = mService.readBooleanSetting(Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED, true); mStandbyHandler = new HdmiCecStandbyModeHandler(service, this); @@ -1202,13 +1197,6 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { } } - @Override - @ServiceThreadOnly - void setAutoDeviceOff(boolean enabled) { - assertRunOnServiceThread(); - mAutoDeviceOff = enabled; - } - @ServiceThreadOnly boolean getAutoWakeup() { assertRunOnServiceThread(); @@ -1286,7 +1274,11 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { if (!mService.isControlEnabled()) { return; } - if (!initiatedByCec && mAutoDeviceOff) { + boolean sendStandbyOnSleep = + mService.getHdmiCecConfig().getIntValue( + HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP) + == HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED; + if (!initiatedByCec && sendStandbyOnSleep) { mService.sendCecCommand(HdmiCecMessageBuilder.buildStandby( mAddress, Constants.ADDR_BROADCAST)); } @@ -1545,7 +1537,6 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { pw.println("mArcFeatureEnabled: " + mArcFeatureEnabled); pw.println("mSystemAudioMute: " + mSystemAudioMute); pw.println("mSystemAudioControlFeatureEnabled: " + mSystemAudioControlFeatureEnabled); - pw.println("mAutoDeviceOff: " + mAutoDeviceOff); pw.println("mSkipRoutingControl: " + mSkipRoutingControl); pw.println("mPrevPortId: " + mPrevPortId); } diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index 8febd4ff6c27..0ae1994bd368 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -661,7 +661,6 @@ public class HdmiControlService extends SystemService { ContentResolver resolver = getContext().getContentResolver(); String[] settings = new String[] { Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, - Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED, Global.MHL_INPUT_SWITCHING_ENABLED, Global.MHL_POWER_CHARGE_ENABLED, @@ -689,15 +688,6 @@ public class HdmiControlService extends SystemService { setHdmiCecVolumeControlEnabledInternal(getHdmiCecConfig().getIntValue( HdmiControlManager.CEC_SETTING_NAME_VOLUME_CONTROL_MODE)); break; - case Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED: - for (int type : mLocalDevices) { - HdmiCecLocalDevice localDevice = mHdmiCecNetwork.getLocalDevice(type); - if (localDevice != null) { - localDevice.setAutoDeviceOff(enabled); - } - } - // No need to propagate to HAL. - break; case Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED: if (isTvDeviceEnabled()) { tv().setSystemAudioControlFeatureEnabled(enabled); diff --git a/services/core/java/com/android/server/hdmi/cec_config.xml b/services/core/java/com/android/server/hdmi/cec_config.xml index a751fd73c542..191e725181ca 100644 --- a/services/core/java/com/android/server/hdmi/cec_config.xml +++ b/services/core/java/com/android/server/hdmi/cec_config.xml @@ -64,6 +64,15 @@ </allowed-values> <default-value int-value="1" /> </setting> + <setting name="tv_send_standby_on_sleep" + value-type="int" + user-configurable="true"> + <allowed-values> + <value int-value="0" /> + <value int-value="1" /> + </allowed-values> + <default-value int-value="1" /> + </setting> <setting name="rc_profile_tv" value-type="int" user-configurable="false"> 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 a408d4ca02cf..137bd88b1489 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java @@ -113,6 +113,15 @@ final class FakeHdmiCecConfig extends HdmiCecConfig { + " </allowed-values>" + " <default-value int-value=\"1\" />" + " </setting>" + + " <setting name=\"tv_send_standby_on_sleep\"" + + " value-type=\"int\"" + + " user-configurable=\"true\">" + + " <allowed-values>" + + " <value int-value=\"0\" />" + + " <value int-value=\"1\" />" + + " </allowed-values>" + + " <default-value int-value=\"1\" />" + + " </setting>" + " <setting name=\"rc_profile_tv\"" + " value-type=\"int\"" + " user-configurable=\"false\">" 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 882d2f5f1529..e6b56ca3418f 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java @@ -35,7 +35,6 @@ import android.os.Looper; import android.os.PowerManager; import android.os.test.TestLooper; import android.platform.test.annotations.Presubmit; -import android.provider.Settings.Global; import android.sysprop.HdmiProperties; import android.view.KeyEvent; @@ -133,7 +132,6 @@ public class HdmiCecLocalDevicePlaybackTest { } }; - mHdmiControlService.writeBooleanSetting(Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, true); mHdmiCecLocalDevicePlayback = new HdmiCecLocalDevicePlayback(mHdmiControlService); mHdmiCecLocalDevicePlayback.init(); mHdmiControlService.setIoLooper(mMyLooper); @@ -560,7 +558,9 @@ public class HdmiCecLocalDevicePlaybackTest { HdmiControlManager.POWER_CONTROL_MODE_TV); mHdmiCecLocalDevicePlayback.setActiveSource(ADDR_TV, 0x0000, "HdmiCecLocalDevicePlaybackTest"); - mHdmiCecLocalDevicePlayback.setAutoDeviceOff(true); + mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setIntValue( + HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP, + HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED); mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF); mTestLooper.dispatchAll(); @@ -580,7 +580,9 @@ public class HdmiCecLocalDevicePlaybackTest { HdmiControlManager.POWER_CONTROL_MODE_BROADCAST); mHdmiCecLocalDevicePlayback.setActiveSource(ADDR_TV, 0x0000, "HdmiCecLocalDevicePlaybackTest"); - mHdmiCecLocalDevicePlayback.setAutoDeviceOff(true); + mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setIntValue( + HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP, + HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED); mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF); mTestLooper.dispatchAll(); @@ -600,7 +602,9 @@ public class HdmiCecLocalDevicePlaybackTest { HdmiControlManager.POWER_CONTROL_MODE_NONE); mHdmiCecLocalDevicePlayback.setActiveSource(ADDR_TV, 0x0000, "HdmiCecLocalDevicePlaybackTest"); - mHdmiCecLocalDevicePlayback.setAutoDeviceOff(true); + mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setIntValue( + HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP, + HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED); mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF); mTestLooper.dispatchAll(); @@ -620,7 +624,9 @@ public class HdmiCecLocalDevicePlaybackTest { HdmiControlManager.POWER_CONTROL_MODE_TV); mHdmiCecLocalDevicePlayback.setActiveSource(mPlaybackLogicalAddress, mPlaybackPhysicalAddress, "HdmiCecLocalDevicePlaybackTest"); - mHdmiCecLocalDevicePlayback.setAutoDeviceOff(true); + mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setIntValue( + HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP, + HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED); mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF); mTestLooper.dispatchAll(); @@ -640,7 +646,9 @@ public class HdmiCecLocalDevicePlaybackTest { HdmiControlManager.POWER_CONTROL_MODE_BROADCAST); mHdmiCecLocalDevicePlayback.setActiveSource(mPlaybackLogicalAddress, mPlaybackPhysicalAddress, "HdmiCecLocalDevicePlaybackTest"); - mHdmiCecLocalDevicePlayback.setAutoDeviceOff(true); + mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setIntValue( + HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP, + HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED); mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF); mTestLooper.dispatchAll(); @@ -660,7 +668,9 @@ public class HdmiCecLocalDevicePlaybackTest { HdmiControlManager.POWER_CONTROL_MODE_NONE); mHdmiCecLocalDevicePlayback.setActiveSource(mPlaybackLogicalAddress, mPlaybackPhysicalAddress, "HdmiCecLocalDevicePlaybackTest"); - mHdmiCecLocalDevicePlayback.setAutoDeviceOff(true); + mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setIntValue( + HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP, + HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED); mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF); mTestLooper.dispatchAll(); 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 ec806fabdff4..0f527f3713b2 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java @@ -15,6 +15,7 @@ */ package com.android.server.hdmi; +import static com.android.server.hdmi.Constants.ADDR_BROADCAST; import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_1; import static com.android.server.hdmi.Constants.ADDR_TV; import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC; @@ -269,6 +270,30 @@ public class HdmiCecLocalDeviceTvTest { } @Test + public void tvSendStandbyOnSleep_Enabled() { + mHdmiCecLocalDeviceTv.mService.getHdmiCecConfig().setIntValue( + HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP, + HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED); + mTestLooper.dispatchAll(); + mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF); + mTestLooper.dispatchAll(); + HdmiCecMessage standby = HdmiCecMessageBuilder.buildStandby(ADDR_TV, ADDR_BROADCAST); + assertThat(mNativeWrapper.getResultMessages()).contains(standby); + } + + @Test + public void tvSendStandbyOnSleep_Disabled() { + mHdmiCecLocalDeviceTv.mService.getHdmiCecConfig().setIntValue( + HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP, + HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_DISABLED); + mTestLooper.dispatchAll(); + mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF); + mTestLooper.dispatchAll(); + HdmiCecMessage standby = HdmiCecMessageBuilder.buildStandby(ADDR_TV, ADDR_BROADCAST); + assertThat(mNativeWrapper.getResultMessages()).doesNotContain(standby); + } + + @Test public void getRcFeatures() { ArrayList<Integer> features = new ArrayList<>(mHdmiCecLocalDeviceTv.getRcFeatures()); assertThat(features.contains(Constants.RC_PROFILE_TV_NONE)).isTrue(); |