Merge "[CEC Configuration] Add 'tv_send_standby_on_sleep' option" into sc-dev am: e363da1269
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13415229 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I0bddb0b9e4e2068d6d311481b646819bd1ac676c
This commit is contained in:
@@ -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.
|
||||
@@ -746,6 +769,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.
|
||||
*
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -956,8 +956,6 @@ abstract class HdmiCecLocalDevice {
|
||||
}
|
||||
}
|
||||
|
||||
void setAutoDeviceOff(boolean enabled) {}
|
||||
|
||||
/**
|
||||
* Called when a hot-plug event issued.
|
||||
*
|
||||
|
||||
@@ -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) {
|
||||
@@ -200,13 +193,6 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ServiceThreadOnly
|
||||
void setAutoDeviceOff(boolean enabled) {
|
||||
assertRunOnServiceThread();
|
||||
mAutoTvOff = enabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CallSuper
|
||||
@ServiceThreadOnly
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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\">"
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -268,6 +269,30 @@ public class HdmiCecLocalDeviceTvTest {
|
||||
assertThat(mWokenUp).isFalse();
|
||||
}
|
||||
|
||||
@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());
|
||||
|
||||
Reference in New Issue
Block a user