Creates a flag for auto-rotate with face detection

The flag is enabled by default. And will be disabled on foldable
devices.

Test: locally
Bug: 236249360

Change-Id: I8c90533f6011531a4f00af5f2514579638604067
This commit is contained in:
Yi Jiang
2022-12-09 16:33:23 -08:00
parent 7bae5625a6
commit 1145b26ac7
4 changed files with 24 additions and 0 deletions

View File

@@ -643,4 +643,6 @@
<!-- Whether sim related information is visible to the end user. -->
<bool name="config_show_sim_info">true</bool>
<!-- Whether the toggle for Auto-rotate with Face Detection should be shown. -->
<bool name="config_auto_rotate_face_detection_available">true</bool>
</resources>

View File

@@ -180,6 +180,10 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
* Returns true if there is a {@link RotationResolverService} available
*/
public static boolean isRotationResolverServiceAvailable(Context context) {
if (!context.getResources().getBoolean(
R.bool.config_auto_rotate_face_detection_available)) {
return false;
}
final PackageManager packageManager = context.getPackageManager();
final String resolvePackage = packageManager.getRotationResolverPackageName();
if (TextUtils.isEmpty(resolvePackage)) {

View File

@@ -80,6 +80,9 @@ public class SmartAutoRotatePreferenceControllerTest {
when(mContext.getResources()).thenReturn(mResources);
when(mContext.getContentResolver()).thenReturn(mContentResolver);
when(mResources.getBoolean(R.bool.config_auto_rotate_face_detection_available)).thenReturn(
true);
doReturn(PACKAGE_NAME).when(mPackageManager).getRotationResolverPackageName();
doReturn(PackageManager.PERMISSION_GRANTED).when(mPackageManager).checkPermission(
Manifest.permission.CAMERA, PACKAGE_NAME);

View File

@@ -111,6 +111,8 @@ public class SmartAutoRotatePreferenceFragmentTest {
when(mActivity.getPackageManager()).thenReturn(mPackageManager);
when(mFragment.getActivity()).thenReturn(mActivity);
when(mFragment.getContext()).thenReturn(mContext);
when(mActivity.getResources()).thenReturn(mResources);
doReturn(mView).when(mFragment).getView();
when(mFragment.findPreference(AUTO_ROTATE_SWITCH_PREFERENCE_KEY)).thenReturn(
@@ -152,6 +154,17 @@ public class SmartAutoRotatePreferenceFragmentTest {
verify(mRotateSwitchPreference, never()).setVisible(false);
}
@Test
public void createHeader_faceDetectionNotEnabledByConfig_switchBarIsDisabled() {
doReturn(false).when(mResources).getBoolean(
R.bool.config_auto_rotate_face_detection_available);
mFragment.createHeader(mActivity);
verify(mRotateMainSwitchPreference, times(1)).setVisible(false);
verify(mRotateSwitchPreference, never()).setVisible(false);
}
@Test
public void createPreferenceControllers_noSettableDeviceStates_returnsEmptyList() {
enableDeviceStateSettableRotationStates(new String[]{}, new String[]{});
@@ -198,6 +211,8 @@ public class SmartAutoRotatePreferenceFragmentTest {
when(mResources.getStringArray(
R.array.config_settableAutoRotationDeviceStatesDescriptions)).thenReturn(
settableStatesDescriptions);
when(mResources.getBoolean(R.bool.config_auto_rotate_face_detection_available)).thenReturn(
true);
DeviceStateRotationLockSettingsManager.resetInstance();
DeviceStateRotationLockSettingsManager.getInstance(mContext)
.resetStateForTesting(mResources);