Add supported color transform capabilities
Bug: 111215474
Test: atest FrameworksServicesTests:ColorDisplayServiceTest
Change-Id: Iced2dab2da73647cd7d56905e2ff6864a7b9fe88
diff --git a/services/core/java/com/android/server/display/ColorDisplayService.java b/services/core/java/com/android/server/display/ColorDisplayService.java
index 9223739..0bce544 100644
--- a/services/core/java/com/android/server/display/ColorDisplayService.java
+++ b/services/core/java/com/android/server/display/ColorDisplayService.java
@@ -28,6 +28,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Size;
+import android.annotation.UserIdInt;
import android.app.AlarmManager;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
@@ -51,6 +52,7 @@
import android.provider.Settings.System;
import android.util.MathUtils;
import android.util.Slog;
+import android.view.SurfaceControl;
import android.view.accessibility.AccessibilityManager;
import android.view.animation.AnimationUtils;
@@ -878,6 +880,21 @@
return dtm.isDeviceColorManaged();
}
+ private int getTransformCapabilitiesInternal() {
+ int availabilityFlags = ColorDisplayManager.CAPABILITY_NONE;
+ if (SurfaceControl.getProtectedContentSupport()) {
+ availabilityFlags |= ColorDisplayManager.CAPABILITY_PROTECTED_CONTENT;
+ }
+ final Resources res = getContext().getResources();
+ if (res.getBoolean(R.bool.config_setColorTransformAccelerated)) {
+ availabilityFlags |= ColorDisplayManager.CAPABILITY_HARDWARE_ACCELERATION_GLOBAL;
+ }
+ if (res.getBoolean(R.bool.config_setColorTransformAcceleratedPerLayer)) {
+ availabilityFlags |= ColorDisplayManager.CAPABILITY_HARDWARE_ACCELERATION_PER_APP;
+ }
+ return availabilityFlags;
+ }
+
/**
* Returns the last time the night display transform activation state was changed, or {@link
* LocalDateTime#MIN} if night display has never been activated.
@@ -1226,10 +1243,10 @@
* Adds a {@link WeakReference<ColorTransformController>} for a newly started activity, and
* invokes {@link ColorTransformController#applyAppSaturation(float[], float[])} if needed.
*/
- public boolean attachColorTransformController(String packageName, int uid,
+ public boolean attachColorTransformController(String packageName, @UserIdInt int userId,
WeakReference<ColorTransformController> controller) {
return mAppSaturationController
- .addColorTransformController(packageName, uid, controller);
+ .addColorTransformController(packageName, userId, controller);
}
}
@@ -1318,6 +1335,18 @@
}
}
+ public int getTransformCapabilities() {
+ getContext().enforceCallingPermission(
+ Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS,
+ "Permission required to query transform capabilities");
+ final long token = Binder.clearCallingIdentity();
+ try {
+ return getTransformCapabilitiesInternal();
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
@Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
if (!DumpUtils.checkDumpPermission(getContext(), TAG, pw)) return;