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

Commit ccf864a8 authored by Paul Colța's avatar Paul Colța Committed by Android (Google) Code Review
Browse files

Merge "Add listener for SOUNDBAR_MODE DeviceConfig property"

parents 6cea10f2 d978631f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -619,6 +619,8 @@ final class Constants {
    })
    @interface HpdSignalType {}

    static final String DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE = "soundbar_mode";

    private Constants() {
        /* cannot be instantiated */
    }
+42 −10
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ import android.os.ShellCallback;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.provider.DeviceConfig;
import android.provider.Settings.Global;
import android.sysprop.HdmiProperties;
import android.text.TextUtils;
@@ -449,6 +450,9 @@ public class HdmiControlService extends SystemService {
    @ServiceThreadOnly
    private boolean mWakeUpMessageReceived = false;

    @ServiceThreadOnly
    private boolean mSoundbarModeFeatureFlagEnabled = false;

    @ServiceThreadOnly
    private int mActivePortId = Constants.INVALID_PORT_ID;

@@ -763,14 +767,6 @@ public class HdmiControlService extends SystemService {
                        }
                    }
                }, mServiceThreadExecutor);
        mHdmiCecConfig.registerChangeListener(HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE,
                new HdmiCecConfig.SettingChangeListener() {
                    @Override
                    public void onChange(String setting) {
                        setSoundbarMode(mHdmiCecConfig.getIntValue(
                                HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE));
                    }
                }, mServiceThreadExecutor);
        mHdmiCecConfig.registerChangeListener(
                HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_CONTROL,
                new HdmiCecConfig.SettingChangeListener() {
@@ -819,9 +815,39 @@ public class HdmiControlService extends SystemService {
                                HdmiControlManager.SETTING_NAME_EARC_ENABLED);
                        setEarcEnabled(enabled);
                    }
                },
                mServiceThreadExecutor);

        mSoundbarModeFeatureFlagEnabled = DeviceConfig.getBoolean(
                DeviceConfig.NAMESPACE_HDMI_CONTROL,
                Constants.DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE, false);

        DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_HDMI_CONTROL,
                getContext().getMainExecutor(), new DeviceConfig.OnPropertiesChangedListener() {
                    @Override
                    public void onPropertiesChanged(DeviceConfig.Properties properties) {
                        mSoundbarModeFeatureFlagEnabled = properties.getBoolean(
                                Constants.DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE,
                                false);
                        boolean soundbarModeSetting = mHdmiCecConfig.getIntValue(
                                HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE)
                                == SOUNDBAR_MODE_ENABLED;
                        setSoundbarMode(soundbarModeSetting && mSoundbarModeFeatureFlagEnabled
                                ? SOUNDBAR_MODE_ENABLED : SOUNDBAR_MODE_DISABLED);
                    }
                });
        mHdmiCecConfig.registerChangeListener(HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE,
                new HdmiCecConfig.SettingChangeListener() {
                    @Override
                    public void onChange(String setting) {
                        boolean soundbarModeSetting = mHdmiCecConfig.getIntValue(
                                HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE)
                                == SOUNDBAR_MODE_ENABLED;
                        setSoundbarMode(soundbarModeSetting && mSoundbarModeFeatureFlagEnabled
                                ? SOUNDBAR_MODE_ENABLED : SOUNDBAR_MODE_DISABLED);
                    }
                }, mServiceThreadExecutor);
    }

    /** Returns true if the device screen is off */
    boolean isScreenOff() {
        return mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY).getState() == Display.STATE_OFF;
@@ -937,6 +963,11 @@ public class HdmiControlService extends SystemService {
        return mPowerManagerInternal;
    }

    @VisibleForTesting
    protected void enableAllFeatureFlags() {
        mSoundbarModeFeatureFlagEnabled = true;
    }

    /**
     * Triggers the address allocation that states the presence of a local device audio system in
     * the network.
@@ -1151,7 +1182,8 @@ public class HdmiControlService extends SystemService {
        if (mHdmiCecConfig.getIntValue(HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE)
                == SOUNDBAR_MODE_ENABLED
                && !allLocalDeviceTypes.contains(HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM)
                && SystemProperties.getBoolean(Constants.PROPERTY_ARC_SUPPORT, true)) {
                && SystemProperties.getBoolean(Constants.PROPERTY_ARC_SUPPORT, true)
                && mSoundbarModeFeatureFlagEnabled) {
            allLocalDeviceTypes.add(HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM);
        }
        return allLocalDeviceTypes;
+1 −0
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@ public class ActiveSourceActionTest {
        mHdmiControlService.setCecController(hdmiCecController);
        mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService));
        mHdmiControlService.initService();
        mHdmiControlService.enableAllFeatureFlags();
        mHdmiControlService.onBootPhase(PHASE_SYSTEM_SERVICES_READY);
        mPowerManager = new FakePowerManagerWrapper(mContextSpy);
        mHdmiControlService.setPowerManager(mPowerManager);
+1 −0
Original line number Diff line number Diff line
@@ -111,6 +111,7 @@ public class ArcInitiationActionFromAvrTest {
        hdmiControlService.setCecController(hdmiCecController);
        hdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(hdmiControlService));
        hdmiControlService.initService();
        hdmiControlService.enableAllFeatureFlags();
        mPowerManager = new FakePowerManagerWrapper(mContextSpy);
        hdmiControlService.setPowerManager(mPowerManager);
        mAction = new ArcInitiationActionFromAvr(mHdmiCecLocalDeviceAudioSystem);
+1 −0
Original line number Diff line number Diff line
@@ -107,6 +107,7 @@ public class ArcTerminationActionFromAvrTest {
        hdmiControlService.setCecController(hdmiCecController);
        hdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(hdmiControlService));
        hdmiControlService.initService();
        hdmiControlService.enableAllFeatureFlags();
        mPowerManager = new FakePowerManagerWrapper(mContextSpy);
        hdmiControlService.setPowerManager(mPowerManager);
        mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(hdmiControlService) {
Loading