summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Marcelo Arteiro <arteiro@google.com> 2025-03-12 09:36:29 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2025-03-12 09:36:29 -0700
commit8d49cd7f5460fd8a5d21f4ef4de4b4284dad3300 (patch)
tree87f1159d0e986cb34c1e00927a4079b13f1a5db8
parentb8a11f73b32c54cb4c52ad67416c9e3ce0d8d20b (diff)
parent3adad4062199579a5530320a4c7fb0e6efc5c574 (diff)
Merge "Add setting allowing for contrast level to be clamped" into main
-rw-r--r--packages/SettingsProvider/res/values/defaults.xml3
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java15
-rw-r--r--packages/SettingsProvider/test/src/com/android/providers/settings/SettingsBackupAgentTest.java51
-rw-r--r--packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java1
4 files changed, 63 insertions, 7 deletions
diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
index d929b0de391a..94aa955f0282 100644
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -341,4 +341,7 @@
<!-- The default ringer mode. See `AudioManager` for list of valid values. -->
<integer name="def_ringer_mode">2</integer>
+
+ <!-- Caps minsum contrast from -1.0 (Material API) to 0.0 (Android Support)-->
+ <bool name="config_increaseMinContrast">true</bool>
</resources>
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
index 41ec62187c4c..37ada933259e 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
@@ -1107,6 +1107,21 @@ public class SettingsBackupAgent extends BackupAgentHelper {
Log.d(TAG, "Restored font scale from: " + toRestore + " to " + value);
}
+ if (Settings.Secure.CONTRAST_LEVEL.equals(key)) {
+ boolean increaseMinContrast = getBaseContext().getResources()
+ .getBoolean(R.bool.config_increaseMinContrast);
+
+ float valueFloat;
+ try {
+ valueFloat = Float.parseFloat(value);
+ } catch (NumberFormatException e) {
+ valueFloat = 0.0f;
+ }
+
+ float newValue = Math.max(valueFloat, increaseMinContrast ? 0.0f : -1.0f);
+ value = String.valueOf(newValue);
+ }
+
settingsHelper.restoreValue(this, cr, contentValues, destination, key, value,
mRestoredFromSdkInt);
diff --git a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsBackupAgentTest.java b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsBackupAgentTest.java
index 48c360b635ea..bc727d33ad4a 100644
--- a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsBackupAgentTest.java
+++ b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsBackupAgentTest.java
@@ -16,15 +16,15 @@
package com.android.providers.settings;
-import static com.android.providers.settings.SettingsBackupRestoreKeys.KEY_WIFI_NEW_CONFIG;
-import static com.android.providers.settings.SettingsBackupRestoreKeys.KEY_SOFTAP_CONFIG;
import static com.android.providers.settings.SettingsBackupRestoreKeys.KEY_SIM_SPECIFIC_SETTINGS_2;
+import static com.android.providers.settings.SettingsBackupRestoreKeys.KEY_SOFTAP_CONFIG;
+import static com.android.providers.settings.SettingsBackupRestoreKeys.KEY_WIFI_NEW_CONFIG;
import static com.android.providers.settings.SettingsBackupRestoreKeys.KEY_WIFI_SETTINGS_BACKUP_DATA;
import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertNull;
-import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
import static org.junit.Assert.assertArrayEquals;
@@ -35,12 +35,10 @@ import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.when;
-import android.annotation.Nullable;
import android.app.backup.BackupAnnotations.BackupDestination;
import android.app.backup.BackupAnnotations.OperationType;
import android.app.backup.BackupDataInput;
import android.app.backup.BackupDataOutput;
-import android.app.backup.BackupRestoreEventLogger;
import android.app.backup.BackupRestoreEventLogger.DataTypeResult;
import android.content.ContentResolver;
import android.content.ContentValues;
@@ -69,13 +67,11 @@ import androidx.test.runner.AndroidJUnit4;
import com.android.window.flags.Flags;
-import java.util.List;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
-import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
@@ -331,6 +327,47 @@ public class SettingsBackupAgentTest extends BaseSettingsProviderTest {
}
@Test
+ public void testOnRestore_minContrastLevelIsRestoredToZero() {
+ mAgentUnderTest = new TestFriendlySettingsBackupAgent() {
+ @Override
+ protected Set<String> getBlockedSettings(int blockedSettingsArrayId) {
+ return new HashSet<>();
+ }
+ };
+ mAgentUnderTest.attach(mContext);
+
+ TestSettingsHelper settingsHelper = new TestSettingsHelper(mContext);
+ mAgentUnderTest.mSettingsHelper = settingsHelper;
+
+ String contrastLevelValue = "-1.0";
+ Map<String, String> settingsToRestore = Map.of(Settings.Secure.CONTRAST_LEVEL,
+ contrastLevelValue);
+
+ byte[] backupData = generateBackupData(settingsToRestore);
+ mAgentUnderTest.restoreSettings(
+ backupData,
+ /* pos */ 0,
+ backupData.length,
+ Settings.Secure.CONTENT_URI,
+ null,
+ null,
+ null,
+ /* blockedSettingsArrayId */ 0,
+ Collections.emptySet(),
+ Collections.emptySet(),
+ KEY_SECURE);
+
+ // Check that the contrast level has been restored.
+ assertTrue(settingsHelper.mWrittenValues.containsKey(Settings.Secure.CONTRAST_LEVEL));
+
+ String restoredContrastLevel = settingsHelper.mWrittenValues.get(
+ Settings.Secure.CONTRAST_LEVEL);
+
+ float restoredFloat = Float.parseFloat(restoredContrastLevel);
+ assertEquals(0.0f, restoredFloat, 0.001f);
+ }
+
+ @Test
@DisableFlags(com.android.server.backup.Flags.FLAG_ENABLE_METRICS_SETTINGS_BACKUP_AGENTS)
public void onCreate_metricsFlagIsDisabled_areAgentMetricsEnabledIsFalse() {
mAgentUnderTest.onCreate();
diff --git a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
index 48d7747d2dc2..bd3feadf4459 100644
--- a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
+++ b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
@@ -988,6 +988,7 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("mSystemColors=" + mCurrentColors);
pw.println("mMainWallpaperColor=" + Integer.toHexString(mMainWallpaperColor));
+ pw.println("mContrast=" + mContrast);
pw.println("mSecondaryOverlay=" + mSecondaryOverlay);
pw.println("mNeutralOverlay=" + mNeutralOverlay);
pw.println("mDynamicOverlay=" + mDynamicOverlay);