summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java10
-rw-r--r--services/tests/servicestests/src/com/android/server/graphics/fonts/UpdatableFontDirTest.java20
2 files changed, 24 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java b/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java
index c56f386701f6..fb14fbd49fde 100644
--- a/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java
+++ b/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java
@@ -261,15 +261,15 @@ final class UpdatableFontDir {
// Write config file.
mLastModifiedMillis = mCurrentTimeSupplier.get();
- curConfig.lastModifiedMillis = mLastModifiedMillis;
+ PersistentSystemFontConfig.Config newConfig = new PersistentSystemFontConfig.Config();
+ newConfig.lastModifiedMillis = mLastModifiedMillis;
for (FontFileInfo info : mFontFileInfoMap.values()) {
- curConfig.updatedFontDirs.add(info.getRandomizedFontDir().getName());
+ newConfig.updatedFontDirs.add(info.getRandomizedFontDir().getName());
}
- curConfig.fontFamilies.clear();
- curConfig.fontFamilies.addAll(familyMap.values());
+ newConfig.fontFamilies.addAll(familyMap.values());
try (FileOutputStream fos = new FileOutputStream(mTmpConfigFile)) {
- PersistentSystemFontConfig.writeToXml(fos, curConfig);
+ PersistentSystemFontConfig.writeToXml(fos, newConfig);
} catch (Exception e) {
throw new SystemFontException(
FontManager.RESULT_ERROR_FAILED_UPDATE_CONFIG,
diff --git a/services/tests/servicestests/src/com/android/server/graphics/fonts/UpdatableFontDirTest.java b/services/tests/servicestests/src/com/android/server/graphics/fonts/UpdatableFontDirTest.java
index 5363a17e42df..8e5136d9659b 100644
--- a/services/tests/servicestests/src/com/android/server/graphics/fonts/UpdatableFontDirTest.java
+++ b/services/tests/servicestests/src/com/android/server/graphics/fonts/UpdatableFontDirTest.java
@@ -44,8 +44,10 @@ import org.xmlpull.v1.XmlPullParser;
import java.io.ByteArrayInputStream;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
@@ -413,6 +415,10 @@ public final class UpdatableFontDirTest {
assertThat(mapBeforeUpgrade).containsKey("test.ttf");
assertWithMessage("Older fonts should not be deleted until next loadFontFileMap")
.that(parser.getRevision(mapBeforeUpgrade.get("test.ttf"))).isEqualTo(1);
+ // Check that updatedFontDirs is pruned.
+ assertWithMessage("config.updatedFontDirs should only list latest active dirs")
+ .that(readConfig(mConfigFile).updatedFontDirs)
+ .containsExactly(dir.getFontFileMap().get("test.ttf").getParentFile().getName());
}
@Test
@@ -450,6 +456,10 @@ public final class UpdatableFontDirTest {
assertThat(dir.getFontFileMap()).containsKey("test.ttf");
assertWithMessage("Font should not be downgraded to an older revision")
.that(parser.getRevision(dir.getFontFileMap().get("test.ttf"))).isEqualTo(2);
+ // Check that updatedFontDirs is not updated.
+ assertWithMessage("config.updatedFontDirs should only list latest active dirs")
+ .that(readConfig(mConfigFile).updatedFontDirs)
+ .containsExactly(dir.getFontFileMap().get("test.ttf").getParentFile().getName());
}
@Test
@@ -875,7 +885,15 @@ public final class UpdatableFontDirTest {
return new FontUpdateRequest(family);
}
- private void writeConfig(PersistentSystemFontConfig.Config config,
+ private static PersistentSystemFontConfig.Config readConfig(File file) throws Exception {
+ PersistentSystemFontConfig.Config config = new PersistentSystemFontConfig.Config();
+ try (InputStream is = new FileInputStream(file)) {
+ PersistentSystemFontConfig.loadFromXml(is, config);
+ }
+ return config;
+ }
+
+ private static void writeConfig(PersistentSystemFontConfig.Config config,
File file) throws IOException {
try (FileOutputStream fos = new FileOutputStream(file)) {
PersistentSystemFontConfig.writeToXml(fos, config);