From 1145b26ac72eb094dc0d810bb608d67b2b12ac08 Mon Sep 17 00:00:00 2001 From: Yi Jiang Date: Fri, 9 Dec 2022 16:33:23 -0800 Subject: [PATCH] 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 --- res/values/config.xml | 2 ++ .../display/SmartAutoRotateController.java | 4 ++++ .../SmartAutoRotatePreferenceControllerTest.java | 3 +++ .../SmartAutoRotatePreferenceFragmentTest.java | 15 +++++++++++++++ 4 files changed, 24 insertions(+) diff --git a/res/values/config.xml b/res/values/config.xml index b7c0bad7fd2..2d04bc9d28f 100755 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -643,4 +643,6 @@ true + + true diff --git a/src/com/android/settings/display/SmartAutoRotateController.java b/src/com/android/settings/display/SmartAutoRotateController.java index 093c8459cd5..18aabd80c9e 100644 --- a/src/com/android/settings/display/SmartAutoRotateController.java +++ b/src/com/android/settings/display/SmartAutoRotateController.java @@ -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)) { diff --git a/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceControllerTest.java index 39fdb049228..0e7a86f5eab 100644 --- a/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceControllerTest.java @@ -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); diff --git a/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java index e5374196681..a25702bd2ea 100644 --- a/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java +++ b/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java @@ -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);