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

Commit 88ea8b3b authored by Abel Tesfaye's avatar Abel Tesfaye Committed by Android (Google) Code Review
Browse files

Merge "Cleanup listener reference in SmartAutoRotate"

parents a396bf85 febccc49
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@

package com.android.settings.display;

import static androidx.lifecycle.Lifecycle.Event.ON_START;
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;

import static com.android.settings.display.SmartAutoRotateController.isRotationResolverServiceAvailable;

import android.content.BroadcastReceiver;
@@ -25,14 +28,13 @@ import android.content.IntentFilter;
import android.os.PowerManager;

import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
import com.android.settingslib.widget.BannerMessagePreference;

/**
@@ -40,7 +42,7 @@ import com.android.settingslib.widget.BannerMessagePreference;
 * when battery saver mode is enabled.
 */
public class SmartAutoRotateBatterySaverController extends BasePreferenceController implements
        LifecycleObserver, OnStart, OnStop {
        LifecycleObserver {

    private Preference mPreference;
    private final PowerManager mPowerManager;
@@ -76,13 +78,13 @@ public class SmartAutoRotateBatterySaverController extends BasePreferenceControl
                });
    }

    @Override
    @OnLifecycleEvent(ON_START)
    public void onStart() {
        mContext.registerReceiver(mReceiver,
                new IntentFilter(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED));
    }

    @Override
    @OnLifecycleEvent(ON_STOP)
    public void onStop() {
        mContext.unregisterReceiver(mReceiver);
    }
+29 −7
Original line number Diff line number Diff line
@@ -19,11 +19,16 @@ package com.android.settings.display;
import static android.hardware.SensorPrivacyManager.Sensors.CAMERA;
import static android.hardware.SensorPrivacyManager.Sources.DIALOG;

import static androidx.lifecycle.Lifecycle.Event.ON_START;
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;

import static com.android.settings.display.SmartAutoRotateController.isRotationResolverServiceAvailable;

import android.content.Context;
import android.hardware.SensorPrivacyManager;

import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

@@ -36,20 +41,37 @@ import com.android.settingslib.widget.BannerMessagePreference;
 * The controller of camera based rotate privacy sensor warning preference. The preference appears
 * when the privacy sensor service disables camera functionality completely.
 */
public class SmartAutoRotateCameraStateController extends BasePreferenceController {
public class SmartAutoRotateCameraStateController extends BasePreferenceController implements
        LifecycleObserver {

    private final SensorPrivacyManager mPrivacyManager;
    private Preference mPreference;

    public SmartAutoRotateCameraStateController(Context context, String key) {
        super(context, key);
        mPrivacyManager = SensorPrivacyManager.getInstance(context);
        mPrivacyManager.addSensorPrivacyListener(CAMERA, (sensor, enabled) -> {
    private final SensorPrivacyManager.OnSensorPrivacyChangedListener mPrivacyChangedListener =
            new SensorPrivacyManager.OnSensorPrivacyChangedListener() {
                @Override
                public void onSensorPrivacyChanged(int sensor, boolean enabled) {
                    if (mPreference != null) {
                        mPreference.setVisible(isAvailable());
                    }
                    updateState(mPreference);
        });
                }
            };

    public SmartAutoRotateCameraStateController(Context context, String key) {
        super(context, key);
        mPrivacyManager = SensorPrivacyManager.getInstance(context);
    }

    @OnLifecycleEvent(ON_START)
    public void onStart() {
        mPrivacyManager.addSensorPrivacyListener(CAMERA, mPrivacyChangedListener);

    }

    @OnLifecycleEvent(ON_STOP)
    public void onStop() {
        mPrivacyManager.removeSensorPrivacyListener(CAMERA, mPrivacyChangedListener);
    }

    @VisibleForTesting
+11 −2
Original line number Diff line number Diff line
@@ -65,6 +65,15 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
            updateState(mPreference);
        }
    };

    private final SensorPrivacyManager.OnSensorPrivacyChangedListener mPrivacyChangedListener =
            new SensorPrivacyManager.OnSensorPrivacyChangedListener() {
                @Override
                public void onSensorPrivacyChanged(int sensor, boolean enabled) {
                    updateState(mPreference);
                }
            };

    private final DeviceStateRotationLockSettingsManager mDeviceStateAutoRotateSettingsManager;
    private final DeviceStateRotationLockSettingsManager.DeviceStateRotationLockSettingsListener
            mDeviceStateRotationLockSettingsListener = () -> updateState(mPreference);
@@ -74,8 +83,6 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
        super(context, preferenceKey);
        mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
        mPrivacyManager = SensorPrivacyManager.getInstance(context);
        mPrivacyManager
                .addSensorPrivacyListener(CAMERA, (sensor, enabled) -> updateState(mPreference));
        mPowerManager = context.getSystemService(PowerManager.class);
        mDeviceStateAutoRotateSettingsManager = DeviceStateRotationLockSettingsManager.getInstance(
                context);
@@ -134,6 +141,7 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
        RotationPolicy.registerRotationPolicyListener(mContext, mRotationPolicyListener);
        mDeviceStateAutoRotateSettingsManager.registerListener(
                mDeviceStateRotationLockSettingsListener);
        mPrivacyManager.addSensorPrivacyListener(CAMERA, mPrivacyChangedListener);
    }

    @OnLifecycleEvent(ON_STOP)
@@ -145,6 +153,7 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
        }
        mDeviceStateAutoRotateSettingsManager.unregisterListener(
                mDeviceStateRotationLockSettingsListener);
        mPrivacyManager.removeSensorPrivacyListener(CAMERA, mPrivacyChangedListener);
    }

    @Override
+18 −8
Original line number Diff line number Diff line
@@ -19,6 +19,9 @@ package com.android.settings.display;
import static android.hardware.SensorPrivacyManager.Sensors.CAMERA;
import static android.provider.Settings.Secure.CAMERA_AUTOROTATE;

import static androidx.lifecycle.Lifecycle.Event.ON_START;
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;

import static com.android.settings.display.SmartAutoRotateController.hasSufficientPermission;
import static com.android.settings.display.SmartAutoRotateController.isRotationResolverServiceAvailable;

@@ -33,6 +36,8 @@ import android.os.UserHandle;
import android.provider.Settings;
import android.text.TextUtils;

import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

@@ -42,15 +47,12 @@ import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;

/**
 * SmartAutoRotatePreferenceController provides auto rotate summary in display settings
 */
public class SmartAutoRotatePreferenceController extends TogglePreferenceController
        implements LifecycleObserver, OnStart, OnStop {
        implements LifecycleObserver {

    private final MetricsFeatureProvider mMetricsFeatureProvider;
    private final SensorPrivacyManager mPrivacyManager;
@@ -62,14 +64,20 @@ public class SmartAutoRotatePreferenceController extends TogglePreferenceControl
        }
    };

    private final SensorPrivacyManager.OnSensorPrivacyChangedListener mPrivacyChangedListener =
            new SensorPrivacyManager.OnSensorPrivacyChangedListener() {
        @Override
        public void onSensorPrivacyChanged(int sensor, boolean enabled) {
            refreshSummary(mPreference);
        }
    };

    private RotationPolicy.RotationPolicyListener mRotationPolicyListener;
    private Preference mPreference;

    public SmartAutoRotatePreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
        mPrivacyManager = SensorPrivacyManager.getInstance(context);
        mPrivacyManager
                .addSensorPrivacyListener(CAMERA, (sensor, enabled) -> refreshSummary(mPreference));
        mPowerManager = context.getSystemService(PowerManager.class);
        mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
    }
@@ -108,7 +116,7 @@ public class SmartAutoRotatePreferenceController extends TogglePreferenceControl
        refreshSummary(mPreference);
    }

    @Override
    @OnLifecycleEvent(ON_START)
    public void onStart() {
        mContext.registerReceiver(mReceiver,
                new IntentFilter(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED));
@@ -124,15 +132,17 @@ public class SmartAutoRotatePreferenceController extends TogglePreferenceControl
        }
        RotationPolicy.registerRotationPolicyListener(mContext,
                mRotationPolicyListener);
        mPrivacyManager.addSensorPrivacyListener(CAMERA, mPrivacyChangedListener);
    }

    @Override
    @OnLifecycleEvent(ON_STOP)
    public void onStop() {
        mContext.unregisterReceiver(mReceiver);
        if (mRotationPolicyListener != null) {
            RotationPolicy.unregisterRotationPolicyListener(mContext,
                    mRotationPolicyListener);
        }
        mPrivacyManager.removeSensorPrivacyListener(CAMERA, mPrivacyChangedListener);
    }

    /**