Integrate refactored device-state auto-rotate setting manager
Added DeviceStateAutoRotateSettingManagerProvider to provide appropriate implementation of DeviceStateAutoRotateSettingManager based on flag. Integrate DeviceStateAutoRotateSettingManagerImpl to be used when auto-rotate refactor flag is ON. For more info:go/auto-rotate-refactor Bug: 394303723 Bug: 394303731 Flag: com.android.window.flags.enable_device_state_auto_rotate_setting_refactor Test: atest DeviceStateAutoRotateSettingManagerProviderTest Change-Id: I63494b6548f1f533a9a1979f2b19640c3ad1dc8d
This commit is contained in:
committed by
dshivangi
parent
a9ef330701
commit
b830e703f3
@@ -35,7 +35,6 @@ import com.android.settings.core.TogglePreferenceController;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settingslib.devicestate.DeviceStateAutoRotateSettingManager;
|
||||
import com.android.settingslib.devicestate.DeviceStateRotationLockSettingsManager;
|
||||
import com.android.settingslib.search.SearchIndexableRaw;
|
||||
|
||||
import java.util.List;
|
||||
@@ -46,7 +45,7 @@ public class DeviceStateAutoRotateSettingController extends TogglePreferenceCont
|
||||
|
||||
private TwoStatePreference mPreference;
|
||||
|
||||
private final DeviceStateRotationLockSettingsManager mAutoRotateSettingsManager;
|
||||
private final DeviceStateAutoRotateSettingManager mAutoRotateSettingsManager;
|
||||
private final int mOrder;
|
||||
private final DeviceStateAutoRotateSettingManager.DeviceStateAutoRotateSettingListener
|
||||
mDeviceStateAutoRotateSettingListener = () -> updateState(mPreference);
|
||||
@@ -62,7 +61,8 @@ public class DeviceStateAutoRotateSettingController extends TogglePreferenceCont
|
||||
mMetricsFeatureProvider = metricsFeatureProvider;
|
||||
mDeviceState = deviceState;
|
||||
mDeviceStateDescription = deviceStateDescription;
|
||||
mAutoRotateSettingsManager = DeviceStateRotationLockSettingsManager.getInstance(context);
|
||||
mAutoRotateSettingsManager =
|
||||
DeviceStateAutoRotateSettingManagerProvider.getSingletonInstance(context);
|
||||
mOrder = order;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright (C) 2025 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.display
|
||||
|
||||
import android.content.Context
|
||||
import android.hardware.devicestate.DeviceStateManager
|
||||
import android.os.Build
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import com.android.internal.annotations.VisibleForTesting
|
||||
import com.android.settingslib.devicestate.AndroidSecureSettings
|
||||
import com.android.settingslib.devicestate.DeviceStateAutoRotateSettingManager
|
||||
import com.android.settingslib.devicestate.DeviceStateAutoRotateSettingManagerProvider.createInstance
|
||||
import com.android.settingslib.devicestate.PosturesHelper
|
||||
import com.android.settingslib.utils.ThreadUtils
|
||||
import com.android.window.flags.Flags
|
||||
|
||||
/**
|
||||
* Provides appropriate instance of [DeviceStateAutoRotateSettingManager], based on the value of
|
||||
* [Flags.FLAG_ENABLE_DEVICE_STATE_AUTO_ROTATE_SETTING_REFACTOR].
|
||||
*/
|
||||
object DeviceStateAutoRotateSettingManagerProvider {
|
||||
private var nullableSingletonSettingManager: DeviceStateAutoRotateSettingManager? = null
|
||||
|
||||
/**
|
||||
* Provides a singleton instance of [DeviceStateAutoRotateSettingManager], based on the
|
||||
* value of[Flags.FLAG_ENABLE_DEVICE_STATE_AUTO_ROTATE_SETTING_REFACTOR]. It is supposed to
|
||||
* be used by apps that don't support dagger to provide and manager instance.
|
||||
*/
|
||||
@JvmStatic
|
||||
fun getSingletonInstance(context: Context) =
|
||||
nullableSingletonSettingManager ?: createInstance(
|
||||
context,
|
||||
ThreadUtils.getBackgroundExecutor(),
|
||||
AndroidSecureSettings(context.contentResolver),
|
||||
Handler(Looper.getMainLooper()),
|
||||
PosturesHelper(context, context.getSystemService(DeviceStateManager::class.java))
|
||||
).also {
|
||||
nullableSingletonSettingManager = it
|
||||
}
|
||||
|
||||
/** Resets the singleton instance of [DeviceStateAutoRotateSettingManager]. */
|
||||
@JvmStatic
|
||||
@VisibleForTesting
|
||||
fun resetInstance() {
|
||||
nullableSingletonSettingManager = null
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.settings.display;
|
||||
|
||||
import static com.android.settingslib.devicestate.DeviceStateAutoRotateSettingUtils.isDeviceStateRotationLockEnabled;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
@@ -25,7 +27,6 @@ import com.android.internal.view.RotationPolicy;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settingslib.core.AbstractPreferenceController;
|
||||
import com.android.settingslib.devicestate.DeviceStateRotationLockSettingsManager;
|
||||
import com.android.settingslib.devicestate.SettableDeviceState;
|
||||
import com.android.settingslib.search.SearchIndexableRaw;
|
||||
|
||||
@@ -51,8 +52,8 @@ public class DeviceStateAutoRotationHelper {
|
||||
|
||||
static ImmutableList<AbstractPreferenceController> createPreferenceControllers(
|
||||
Context context) {
|
||||
List<SettableDeviceState> settableDeviceStates = DeviceStateRotationLockSettingsManager
|
||||
.getInstance(context).getSettableDeviceStates();
|
||||
List<SettableDeviceState> settableDeviceStates = DeviceStateAutoRotateSettingManagerProvider
|
||||
.getSingletonInstance(context).getSettableDeviceStates();
|
||||
int numDeviceStates = settableDeviceStates.size();
|
||||
if (numDeviceStates == 0) {
|
||||
return ImmutableList.of();
|
||||
@@ -99,7 +100,7 @@ public class DeviceStateAutoRotationHelper {
|
||||
/** Returns whether the device state based auto-rotation settings are enabled. */
|
||||
public static boolean isDeviceStateRotationEnabled(Context context) {
|
||||
return RotationPolicy.isRotationLockToggleVisible(context)
|
||||
&& DeviceStateRotationLockSettingsManager.isDeviceStateRotationLockEnabled(context);
|
||||
&& isDeviceStateRotationLockEnabled(context);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -108,6 +109,6 @@ public class DeviceStateAutoRotationHelper {
|
||||
*/
|
||||
public static boolean isDeviceStateRotationEnabledForA11y(Context context) {
|
||||
return RotationPolicy.isRotationSupported(context)
|
||||
&& DeviceStateRotationLockSettingsManager.isDeviceStateRotationLockEnabled(context);
|
||||
&& isDeviceStateRotationLockEnabled(context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,6 @@ import com.android.settings.core.TogglePreferenceController;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settingslib.devicestate.DeviceStateAutoRotateSettingManager;
|
||||
import com.android.settingslib.devicestate.DeviceStateRotationLockSettingsManager;
|
||||
|
||||
/**
|
||||
* SmartAutoRotateController controls whether auto rotation is enabled
|
||||
@@ -75,7 +74,7 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
|
||||
}
|
||||
};
|
||||
|
||||
private final DeviceStateRotationLockSettingsManager mDeviceStateAutoRotateSettingsManager;
|
||||
private final DeviceStateAutoRotateSettingManager mDeviceStateAutoRotateSettingsManager;
|
||||
private final DeviceStateAutoRotateSettingManager.DeviceStateAutoRotateSettingListener
|
||||
mDeviceStateAutoRotateSettingListener = () -> updateState(mPreference);
|
||||
private RotationPolicy.RotationPolicyListener mRotationPolicyListener;
|
||||
@@ -85,8 +84,9 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
|
||||
mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
|
||||
mPrivacyManager = SensorPrivacyManager.getInstance(context);
|
||||
mPowerManager = context.getSystemService(PowerManager.class);
|
||||
mDeviceStateAutoRotateSettingsManager = DeviceStateRotationLockSettingsManager.getInstance(
|
||||
context);
|
||||
mDeviceStateAutoRotateSettingsManager =
|
||||
DeviceStateAutoRotateSettingManagerProvider.getSingletonInstance(
|
||||
context);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user