Disable display white balance when accessibility features are enabled

To avoid conflicting with display accessibility features, disable
display white balance when these features are active.

Bug: 130263943
Test: atest FrameworksServicesTests:ColorDisplayServiceTest
Change-Id: Id7f97c74dc37d44ec13a1d26ac8500b130fef2f8
diff --git a/services/core/java/com/android/server/display/color/ColorDisplayService.java b/services/core/java/com/android/server/display/color/ColorDisplayService.java
index f599adb..85fb1e0 100644
--- a/services/core/java/com/android/server/display/color/ColorDisplayService.java
+++ b/services/core/java/com/android/server/display/color/ColorDisplayService.java
@@ -473,6 +473,20 @@
         onDisplayColorModeChanged(getColorModeInternal());
     }
 
+    private boolean isAccessiblityDaltonizerEnabled() {
+        return Secure.getIntForUser(getContext().getContentResolver(),
+            Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, 0, mCurrentUser) != 0;
+    }
+
+    private boolean isAccessiblityInversionEnabled() {
+        return Secure.getIntForUser(getContext().getContentResolver(),
+            Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, 0, mCurrentUser) != 0;
+    }
+
+    private boolean isAccessibilityEnabled() {
+        return isAccessiblityDaltonizerEnabled() || isAccessiblityInversionEnabled();
+    }
+
     /**
      * Apply the accessibility daltonizer transform based on the settings value.
      */
@@ -480,11 +494,10 @@
         if (mCurrentUser == UserHandle.USER_NULL) {
             return;
         }
-        final boolean enabled = Secure.getIntForUser(getContext().getContentResolver(),
-                Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, 0, mCurrentUser) != 0;
-        final int daltonizerMode = enabled ? Secure.getIntForUser(getContext().getContentResolver(),
-                Secure.ACCESSIBILITY_DISPLAY_DALTONIZER,
-                AccessibilityManager.DALTONIZER_CORRECT_DEUTERANOMALY, mCurrentUser)
+        final int daltonizerMode = isAccessiblityDaltonizerEnabled()
+                ? Secure.getIntForUser(getContext().getContentResolver(),
+                    Secure.ACCESSIBILITY_DISPLAY_DALTONIZER,
+                    AccessibilityManager.DALTONIZER_CORRECT_DEUTERANOMALY, mCurrentUser)
                 : AccessibilityManager.DALTONIZER_DISABLED;
 
         final DisplayTransformManager dtm = getLocalService(DisplayTransformManager.class);
@@ -506,11 +519,9 @@
         if (mCurrentUser == UserHandle.USER_NULL) {
             return;
         }
-        final boolean enabled = Secure.getIntForUser(getContext().getContentResolver(),
-                Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, 0, mCurrentUser) != 0;
         final DisplayTransformManager dtm = getLocalService(DisplayTransformManager.class);
         dtm.setColorMatrix(DisplayTransformManager.LEVEL_COLOR_MATRIX_INVERT_COLOR,
-                enabled ? MATRIX_INVERT_COLOR : null);
+                isAccessiblityInversionEnabled() ? MATRIX_INVERT_COLOR : null);
     }
 
     /**
@@ -598,6 +609,7 @@
         boolean oldActivated = mDisplayWhiteBalanceTintController.isActivated();
         mDisplayWhiteBalanceTintController.setActivated(isDisplayWhiteBalanceSettingEnabled()
                 && !mNightDisplayTintController.isActivated()
+                && !isAccessibilityEnabled()
                 && DisplayTransformManager.needsLinearColorMatrix());
         boolean activated = mDisplayWhiteBalanceTintController.isActivated();
 
@@ -761,10 +773,7 @@
 
     private @ColorMode int getColorModeInternal() {
         final ContentResolver cr = getContext().getContentResolver();
-        if (Secure.getIntForUser(cr, Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED,
-                0, mCurrentUser) == 1
-                || Secure.getIntForUser(cr, Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED,
-                0, mCurrentUser) == 1) {
+        if (isAccessibilityEnabled()) {
             // There are restrictions on the available color modes combined with a11y transforms.
             if (isColorModeAvailable(COLOR_MODE_SATURATED)) {
                 return COLOR_MODE_SATURATED;