Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6110f065 authored by Nathalie Le Clair's avatar Nathalie Le Clair Committed by Android (Google) Code Review
Browse files

Merge "Determine if CEC stack should handle KEYCODE_TV_POWER"

parents 4434b4a0 d0df8698
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -847,6 +847,20 @@ public final class HdmiControlManager {
        }
    }

    /**
     * Determines whether the HDMI CEC stack should handle KEYCODE_TV_POWER.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.HDMI_CEC)
    public boolean shouldHandleTvPowerKey() {
        try {
            return mService.shouldHandleTvPowerKey();
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Controls whether volume control commands via HDMI CEC are enabled.
     *
+10 −0
Original line number Diff line number Diff line
@@ -71,6 +71,11 @@ public final class HdmiControlServiceWrapper {
            HdmiControlServiceWrapper.this.toggleAndFollowTvPower();
        }

        @Override
        public boolean shouldHandleTvPowerKey() {
            return HdmiControlServiceWrapper.this.shouldHandleTvPowerKey();
        }

        @Override
        public void queryDisplayStatus(IHdmiControlCallback callback) {
            HdmiControlServiceWrapper.this.queryDisplayStatus(callback);
@@ -367,6 +372,11 @@ public final class HdmiControlServiceWrapper {
    /** @hide */
    public void toggleAndFollowTvPower() {}

    /** @hide */
    public boolean shouldHandleTvPowerKey() {
        return true;
    }

    /** @hide */
    public void queryDisplayStatus(IHdmiControlCallback callback) {}

+1 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ interface IHdmiControlService {
    HdmiDeviceInfo getActiveSource();
    void oneTouchPlay(IHdmiControlCallback callback);
    void toggleAndFollowTvPower();
    boolean shouldHandleTvPowerKey();
    void queryDisplayStatus(IHdmiControlCallback callback);
    void addHdmiControlStatusChangeListener(IHdmiControlStatusChangeListener listener);
    void removeHdmiControlStatusChangeListener(IHdmiControlStatusChangeListener listener);
+5 −0
Original line number Diff line number Diff line
@@ -194,6 +194,11 @@ public class HdmiAudioSystemClientTest {
        public void toggleAndFollowTvPower() {
        }

        @Override
        public boolean shouldHandleTvPowerKey() {
            return false;
        }

        @Override
        public void queryDisplayStatus(final IHdmiControlCallback callback) {
        }
+24 −0
Original line number Diff line number Diff line
@@ -1654,6 +1654,12 @@ public class HdmiControlService extends SystemService {
            });
        }

        @Override
        public boolean shouldHandleTvPowerKey() {
            enforceAccessPermission();
            return HdmiControlService.this.shouldHandleTvPowerKey();
        }

        @Override
        public void queryDisplayStatus(final IHdmiControlCallback callback) {
            enforceAccessPermission();
@@ -2346,6 +2352,24 @@ public class HdmiControlService extends SystemService {
        source.toggleAndFollowTvPower();
    }

    @VisibleForTesting
    protected boolean shouldHandleTvPowerKey() {
        if (isTvDevice()) {
            return false;
        }
        String powerControlMode = getHdmiCecConfig().getStringValue(
                HdmiControlManager.CEC_SETTING_NAME_POWER_CONTROL_MODE);
        if (powerControlMode.equals(HdmiControlManager.POWER_CONTROL_MODE_NONE)) {
            return false;
        }
        int hdmiCecEnabled = getHdmiCecConfig().getIntValue(
                HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED);
        if (hdmiCecEnabled != HdmiControlManager.HDMI_CEC_CONTROL_ENABLED) {
            return false;
        }
        return true;
    }

    @ServiceThreadOnly
    protected void queryDisplayStatus(final IHdmiControlCallback callback) {
        assertRunOnServiceThread();
Loading