CameraServiceProxy: Clean up app compat overrides

The rotate&crop heuristics must now return specific
modes instead of true&false. Various modes are not
supported by the app compat overrides which can only be
enabled or disabled.
Clean up unnecessary app compat overrides that can not
be supported and update the corresponding comments.

Bug: 204587197
Test: Manual using application
Change-Id: Iacb6844c625092a9864ab5ff7cae7376cfd2cd9a
This commit is contained in:
Emilian Peev
2021-10-29 13:21:17 -07:00
parent c3e4e96ef2
commit 852aa2cb93

View File

@@ -108,8 +108,9 @@ public class CameraServiceProxy extends SystemService
/** /**
* When enabled this change id forces the packages it is applied to override the default * When enabled this change id forces the packages it is applied to override the default
* camera rotate & crop behavior. The default behavior along with all possible override * camera rotate & crop behavior and always return CaptureRequest.SCALER_ROTATE_AND_CROP_NONE .
* combinations is discussed in the table below. * The default behavior along with all possible override combinations is discussed in the table
* below.
*/ */
@ChangeId @ChangeId
@Overridable @Overridable
@@ -121,9 +122,7 @@ public class CameraServiceProxy extends SystemService
* When enabled this change id forces the packages it is applied to ignore the current value of * When enabled this change id forces the packages it is applied to ignore the current value of
* 'android:resizeableActivity' as well as target SDK equal to or below M and consider the * 'android:resizeableActivity' as well as target SDK equal to or below M and consider the
* activity as non-resizeable. In this case, the value of camera rotate & crop will only depend * activity as non-resizeable. In this case, the value of camera rotate & crop will only depend
* on potential mismatches between the orientation of the camera and the fixed orientation of * on the needed compensation considering the current display rotation.
* the activity. You can check the table below for further details on the possible override
* combinations.
*/ */
@ChangeId @ChangeId
@Overridable @Overridable
@@ -131,68 +130,31 @@ public class CameraServiceProxy extends SystemService
@TestApi @TestApi
public static final long OVERRIDE_CAMERA_RESIZABLE_AND_SDK_CHECK = 191513214L; // buganizer id public static final long OVERRIDE_CAMERA_RESIZABLE_AND_SDK_CHECK = 191513214L; // buganizer id
/**
* This change id forces the packages it is applied to override the default camera rotate & crop
* behavior. Enabling it will set the crop & rotate parameter to
* {@link android.hardware.camera2.CaptureRequest#SCALER_ROTATE_AND_CROP_90} and disabling it
* will reset the parameter to
* {@link android.hardware.camera2.CaptureRequest#SCALER_ROTATE_AND_CROP_NONE} as long as camera
* clients include {@link android.hardware.camera2.CaptureRequest#SCALER_ROTATE_AND_CROP_AUTO}
* in their capture requests.
*
* This treatment only takes effect if OVERRIDE_CAMERA_ROTATE_AND_CROP_DEFAULTS is also enabled.
* The table below includes further information about the possible override combinations.
*/
@ChangeId
@Overridable
@Disabled
@TestApi
public static final long OVERRIDE_CAMERA_ROTATE_AND_CROP = 190069291L; //buganizer id
/** /**
* Possible override combinations * Possible override combinations
* *
* |OVERRIDE | |OVERRIDE_ * |OVERRIDE |OVERRIDE_
* |CAMERA_ |OVERRIDE |CAMERA_ * |CAMERA_ |CAMERA_
* |ROTATE_ |CAMERA_ |RESIZEABLE_ * |ROTATE_ |RESIZEABLE_
* |AND_CROP_ |ROTATE_ |AND_SDK_ * |AND_CROP_ |AND_SDK_
* |DEFAULTS |AND_CROP |CHECK * |DEFAULTS |CHECK
* ______________________________________________ * _________________________________________________
* Default | | | * Default Behavior | D |D
* Behavior | D |D |D * _________________________________________________
* ______________________________________________ * Ignore SDK&Resize | D |E
* Ignore | | | * _________________________________________________
* SDK&Resize | D |D |E * SCALER_ROTATE_AND_CROP_NONE | E |D, E
* ______________________________________________ * _________________________________________________
* Default | | |
* Behavior | D |E |D
* ______________________________________________
* Ignore | | |
* SDK&Resize | D |E |E
* ______________________________________________
* Rotate&Crop| | |
* disabled | E |D |D
* ______________________________________________
* Rotate&Crop| | |
* disabled | E |D |E
* ______________________________________________
* Rotate&Crop| | |
* enabled | E |E |D
* ______________________________________________
* Rotate&Crop| | |
* enabled | E |E |E
* ______________________________________________
* Where: * Where:
* E -> Override enabled * E -> Override enabled
* D -> Override disabled * D -> Override disabled
* Default behavior -> Rotate&crop will be enabled only in cases * Default behavior -> Rotate&crop will be calculated depending on the required
* where the fixed app orientation mismatches * compensation necessary for the current display rotation.
* with the orientation of the camera.
* Additionally the app must either target M (or below) * Additionally the app must either target M (or below)
* or is declared as non-resizeable. * or is declared as non-resizeable.
* Ignore SDK&Resize -> Rotate&crop will be enabled only in cases * Ignore SDK&Resize -> The Rotate&crop value will depend on the required
* where the fixed app orientation mismatches * compensation for the current display rotation.
* with the orientation of the camera. * SCALER_ROTATE_AND_CROP_NONE -> Always return CaptureRequest.SCALER_ROTATE_AND_CROP_NONE
*/ */
// Flags arguments to NFC adapter to enable/disable NFC // Flags arguments to NFC adapter to enable/disable NFC
@@ -543,14 +505,8 @@ public class CameraServiceProxy extends SystemService
if ((taskInfo != null) && (CompatChanges.isChangeEnabled( if ((taskInfo != null) && (CompatChanges.isChangeEnabled(
OVERRIDE_CAMERA_ROTATE_AND_CROP_DEFAULTS, packageName, OVERRIDE_CAMERA_ROTATE_AND_CROP_DEFAULTS, packageName,
UserHandle.getUserHandleForUid(taskInfo.userId)))) { UserHandle.getUserHandleForUid(taskInfo.userId)))) {
if (CompatChanges.isChangeEnabled(OVERRIDE_CAMERA_ROTATE_AND_CROP, packageName, Slog.v(TAG, "OVERRIDE_CAMERA_ROTATE_AND_CROP_DEFAULTS enabled!");
UserHandle.getUserHandleForUid(taskInfo.userId))) {
Slog.v(TAG, "OVERRIDE_CAMERA_ROTATE_AND_CROP enabled!");
return CaptureRequest.SCALER_ROTATE_AND_CROP_NONE; return CaptureRequest.SCALER_ROTATE_AND_CROP_NONE;
} else {
Slog.v(TAG, "OVERRIDE_CAMERA_ROTATE_AND_CROP disabled!");
return CaptureRequest.SCALER_ROTATE_AND_CROP_NONE;
}
} }
boolean ignoreResizableAndSdkCheck = false; boolean ignoreResizableAndSdkCheck = false;
if ((taskInfo != null) && (CompatChanges.isChangeEnabled( if ((taskInfo != null) && (CompatChanges.isChangeEnabled(