diff options
author | 2025-03-12 09:36:29 -0700 | |
---|---|---|
committer | 2025-03-12 09:36:29 -0700 | |
commit | 8d49cd7f5460fd8a5d21f4ef4de4b4284dad3300 (patch) | |
tree | 87f1159d0e986cb34c1e00927a4079b13f1a5db8 | |
parent | b8a11f73b32c54cb4c52ad67416c9e3ce0d8d20b (diff) | |
parent | 3adad4062199579a5530320a4c7fb0e6efc5c574 (diff) |
Merge "Add setting allowing for contrast level to be clamped" into main
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); |