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
diff --git a/res/values/config.xml b/res/values/config.xml
index b7c0bad..2d04bc9 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -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>
diff --git a/src/com/android/settings/display/SmartAutoRotateController.java b/src/com/android/settings/display/SmartAutoRotateController.java
index 093c845..18aabd8 100644
--- a/src/com/android/settings/display/SmartAutoRotateController.java
+++ b/src/com/android/settings/display/SmartAutoRotateController.java
@@ -180,6 +180,10 @@
      * 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 39fdb04..0e7a86f 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 @@
         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 e537419..a25702b 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 @@
         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(
@@ -153,6 +155,17 @@
     }
 
     @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 @@
         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);