summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java20
-rw-r--r--packages/SettingsProvider/test/src/com/android/providers/settings/SettingsStateTest.java22
2 files changed, 22 insertions, 20 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
index cd667ca05f61..765ee89229f3 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
@@ -98,7 +98,7 @@ final class SettingsState {
private static final long MAX_WRITE_SETTINGS_DELAY_MILLIS = 2000;
public static final int MAX_BYTES_PER_APP_PACKAGE_UNLIMITED = -1;
- public static final int MAX_BYTES_PER_APP_PACKAGE_LIMITED = 20000;
+ public static final int MAX_BYTES_PER_APP_PACKAGE_LIMITED = 40000;
public static final int VERSION_UNDEFINED = -1;
@@ -732,19 +732,19 @@ final class SettingsState {
}
@GuardedBy("mLock")
- private int getNewMemoryUsagePerPackageLocked(String packageName, int deltaKeySize,
+ private int getNewMemoryUsagePerPackageLocked(String packageName, int deltaKeyLength,
String oldValue, String newValue, String oldDefaultValue, String newDefaultValue) {
if (isExemptFromMemoryUsageCap(packageName)) {
return 0;
}
- final Integer currentSize = mPackageToMemoryUsage.get(packageName);
- final int oldValueSize = (oldValue != null) ? oldValue.length() : 0;
- final int newValueSize = (newValue != null) ? newValue.length() : 0;
- final int oldDefaultValueSize = (oldDefaultValue != null) ? oldDefaultValue.length() : 0;
- final int newDefaultValueSize = (newDefaultValue != null) ? newDefaultValue.length() : 0;
- final int deltaSize = deltaKeySize + newValueSize + newDefaultValueSize
- - oldValueSize - oldDefaultValueSize;
- return Math.max((currentSize != null) ? currentSize + deltaSize : deltaSize, 0);
+ final int currentSize = mPackageToMemoryUsage.getOrDefault(packageName, 0);
+ final int oldValueLength = (oldValue != null) ? oldValue.length() : 0;
+ final int newValueLength = (newValue != null) ? newValue.length() : 0;
+ final int oldDefaultValueLength = (oldDefaultValue != null) ? oldDefaultValue.length() : 0;
+ final int newDefaultValueLength = (newDefaultValue != null) ? newDefaultValue.length() : 0;
+ final int deltaSize = (deltaKeyLength + newValueLength + newDefaultValueLength
+ - oldValueLength - oldDefaultValueLength) * Character.BYTES;
+ return Math.max(currentSize + deltaSize, 0);
}
@GuardedBy("mLock")
diff --git a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsStateTest.java b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsStateTest.java
index 5a534b98849f..4ed28d522678 100644
--- a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsStateTest.java
+++ b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsStateTest.java
@@ -329,46 +329,47 @@ public class SettingsStateTest extends AndroidTestCase {
final String testKey1 = SETTING_NAME;
final String testValue1 = Strings.repeat("A", 100);
settingsState.insertSettingLocked(testKey1, testValue1, null, true, TEST_PACKAGE);
- int expectedMemUsage = testKey1.length() + testValue1.length()
- + testValue1.length() /* size for default */;
+ int expectedMemUsage = (testKey1.length() + testValue1.length()
+ + testValue1.length() /* size for default */) * Character.BYTES;
assertEquals(expectedMemUsage, settingsState.getMemoryUsage(TEST_PACKAGE));
// Test inserting another key
final String testKey2 = SETTING_NAME + "2";
settingsState.insertSettingLocked(testKey2, testValue1, null, false, TEST_PACKAGE);
- expectedMemUsage += testKey2.length() + testValue1.length();
+ expectedMemUsage += (testKey2.length() + testValue1.length()) * Character.BYTES;
assertEquals(expectedMemUsage, settingsState.getMemoryUsage(TEST_PACKAGE));
// Test updating first key with new default
final String testValue2 = Strings.repeat("A", 300);
settingsState.insertSettingLocked(testKey1, testValue2, null, true, TEST_PACKAGE);
- expectedMemUsage += (testValue2.length() - testValue1.length()) * 2;
+ expectedMemUsage += (testValue2.length() - testValue1.length()) * 2 * Character.BYTES;
assertEquals(expectedMemUsage, settingsState.getMemoryUsage(TEST_PACKAGE));
// Test updating first key without new default
final String testValue3 = Strings.repeat("A", 50);
settingsState.insertSettingLocked(testKey1, testValue3, null, false, TEST_PACKAGE);
- expectedMemUsage -= testValue2.length() - testValue3.length();
+ expectedMemUsage -= (testValue2.length() - testValue3.length()) * Character.BYTES;
assertEquals(expectedMemUsage, settingsState.getMemoryUsage(TEST_PACKAGE));
// Test updating second key
settingsState.insertSettingLocked(testKey2, testValue2, null, false, TEST_PACKAGE);
- expectedMemUsage -= testValue1.length() - testValue2.length();
+ expectedMemUsage -= (testValue1.length() - testValue2.length()) * Character.BYTES;
assertEquals(expectedMemUsage, settingsState.getMemoryUsage(TEST_PACKAGE));
// Test resetting key
settingsState.resetSettingLocked(testKey1);
- expectedMemUsage += testValue2.length() - testValue3.length();
+ expectedMemUsage += (testValue2.length() - testValue3.length()) * Character.BYTES;
assertEquals(expectedMemUsage, settingsState.getMemoryUsage(TEST_PACKAGE));
// Test resetting default value
settingsState.resetSettingDefaultValueLocked(testKey1);
- expectedMemUsage -= testValue2.length();
+ expectedMemUsage -= testValue2.length() * Character.BYTES;
assertEquals(expectedMemUsage, settingsState.getMemoryUsage(TEST_PACKAGE));
// Test deletion
settingsState.deleteSettingLocked(testKey2);
- expectedMemUsage -= testValue2.length() + testKey2.length() /* key is deleted too */;
+ expectedMemUsage -= (testValue2.length() + testKey2.length() /* key is deleted too */)
+ * Character.BYTES;
assertEquals(expectedMemUsage, settingsState.getMemoryUsage(TEST_PACKAGE));
// Test another package with a different key
@@ -376,7 +377,8 @@ public class SettingsStateTest extends AndroidTestCase {
final String testKey3 = SETTING_NAME + "3";
settingsState.insertSettingLocked(testKey3, testValue1, null, true, testPackage2);
assertEquals(expectedMemUsage, settingsState.getMemoryUsage(TEST_PACKAGE));
- final int expectedMemUsage2 = testKey3.length() + testValue1.length() * 2;
+ final int expectedMemUsage2 = (testKey3.length() + testValue1.length() * 2)
+ * Character.BYTES;
assertEquals(expectedMemUsage2, settingsState.getMemoryUsage(testPackage2));
// Test system package