summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohsuke Yatoh <kyatoh@google.com>2021-05-12 16:23:02 -0700
committerKohsuke Yatoh <kyatoh@google.com>2021-05-13 16:23:47 +0000
commit77e80b860c6781eb8d425e8ee91a1b3d010bb7ed (patch)
treea4a03e2805f3126c0bb47845be7de8d804e8457c
parentf476d931ac4fceb1c90a3c8b5017a6dfe59c9459 (diff)
Remove unused IFontManager#updateFontFile().
The caller was removed in commit 3de07491d32231d97410f3314c41836aeb6c7e8c This CL also does some cleanup: - Extract OtfFontFileParser to a separate file. - Remove boilerplate in UpdatableFontDirTest. Bug: 187879195 Test: m -j Test: atest FrameworksServicesTests:UpdatableFontDirTest Change-Id: Id3e369222c35f550c6d53e8649ab07647701c070
-rw-r--r--core/java/com/android/internal/graphics/fonts/IFontManager.aidl2
-rw-r--r--services/core/java/com/android/server/graphics/fonts/FontManagerService.java113
-rw-r--r--services/core/java/com/android/server/graphics/fonts/OtfFontFileParser.java118
-rw-r--r--services/tests/servicestests/src/com/android/server/graphics/fonts/UpdatableFontDirTest.java190
4 files changed, 186 insertions, 237 deletions
diff --git a/core/java/com/android/internal/graphics/fonts/IFontManager.aidl b/core/java/com/android/internal/graphics/fonts/IFontManager.aidl
index 1c7eca8b6c8e..87df5eb9e75a 100644
--- a/core/java/com/android/internal/graphics/fonts/IFontManager.aidl
+++ b/core/java/com/android/internal/graphics/fonts/IFontManager.aidl
@@ -30,7 +30,5 @@ import java.util.List;
interface IFontManager {
FontConfig getFontConfig();
- int updateFontFile(in FontUpdateRequest request, int baseVersion);
-
int updateFontFamily(in List<FontUpdateRequest> request, int baseVersion);
}
diff --git a/services/core/java/com/android/server/graphics/fonts/FontManagerService.java b/services/core/java/com/android/server/graphics/fonts/FontManagerService.java
index 0949dddd1209..26545306903f 100644
--- a/services/core/java/com/android/server/graphics/fonts/FontManagerService.java
+++ b/services/core/java/com/android/server/graphics/fonts/FontManagerService.java
@@ -20,12 +20,8 @@ import android.Manifest;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
import android.graphics.Typeface;
-import android.graphics.fonts.Font;
import android.graphics.fonts.FontFamily;
-import android.graphics.fonts.FontFileUtil;
import android.graphics.fonts.FontManager;
import android.graphics.fonts.FontUpdateRequest;
import android.graphics.fonts.SystemFonts;
@@ -34,10 +30,6 @@ import android.os.SharedMemory;
import android.os.ShellCallback;
import android.system.ErrnoException;
import android.text.FontConfig;
-import android.text.Layout;
-import android.text.StaticLayout;
-import android.text.TextPaint;
-import android.text.TextUtils;
import android.util.AndroidException;
import android.util.IndentingPrintWriter;
import android.util.Slog;
@@ -52,19 +44,14 @@ import com.android.server.SystemService;
import java.io.File;
import java.io.FileDescriptor;
-import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
-import java.nio.ByteBuffer;
-import java.nio.NioUtils;
-import java.nio.channels.FileChannel;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/** A service for managing system fonts. */
-// TODO(b/173619554): Add API to update fonts.
public final class FontManagerService extends IFontManager.Stub {
private static final String TAG = "FontManagerService";
@@ -78,23 +65,6 @@ public final class FontManagerService extends IFontManager.Stub {
}
@Override
- public int updateFontFile(@NonNull FontUpdateRequest request, int baseVersion) {
- Preconditions.checkArgumentNonnegative(baseVersion);
- Objects.requireNonNull(request);
- Objects.requireNonNull(request.getFd());
- Objects.requireNonNull(request.getSignature());
- getContext().enforceCallingPermission(Manifest.permission.UPDATE_FONTS,
- "UPDATE_FONTS permission required.");
- try {
- update(baseVersion, Collections.singletonList(request));
- return FontManager.RESULT_SUCCESS;
- } catch (SystemFontException e) {
- Slog.e(TAG, "Failed to update font file", e);
- return e.getErrorCode();
- }
- }
-
- @Override
public int updateFontFamily(@NonNull List<FontUpdateRequest> requests, int baseVersion) {
Preconditions.checkArgumentNonnegative(baseVersion);
Objects.requireNonNull(requests);
@@ -154,89 +124,6 @@ public final class FontManagerService extends IFontManager.Stub {
}
}
- /* package */ static class OtfFontFileParser implements UpdatableFontDir.FontFileParser {
- @Override
- public String getPostScriptName(File file) throws IOException {
- ByteBuffer buffer = mmap(file);
- try {
- return FontFileUtil.getPostScriptName(buffer, 0);
- } finally {
- NioUtils.freeDirectBuffer(buffer);
- }
- }
-
- @Override
- public String buildFontFileName(File file) throws IOException {
- ByteBuffer buffer = mmap(file);
- try {
- String psName = FontFileUtil.getPostScriptName(buffer, 0);
- int isType1Font = FontFileUtil.isPostScriptType1Font(buffer, 0);
- int isCollection = FontFileUtil.isCollectionFont(buffer);
-
- if (TextUtils.isEmpty(psName) || isType1Font == -1 || isCollection == -1) {
- return null;
- }
-
- String extension;
- if (isCollection == 1) {
- extension = isType1Font == 1 ? ".otc" : ".ttc";
- } else {
- extension = isType1Font == 1 ? ".otf" : ".ttf";
- }
- return psName + extension;
- } finally {
- NioUtils.freeDirectBuffer(buffer);
- }
-
- }
-
- @Override
- public long getRevision(File file) throws IOException {
- ByteBuffer buffer = mmap(file);
- try {
- return FontFileUtil.getRevision(buffer, 0);
- } finally {
- NioUtils.freeDirectBuffer(buffer);
- }
- }
-
- @Override
- public void tryToCreateTypeface(File file) throws Throwable {
- Font font = new Font.Builder(file).build();
- FontFamily family = new FontFamily.Builder(font).build();
- Typeface typeface = new Typeface.CustomFallbackBuilder(family).build();
-
- TextPaint p = new TextPaint();
- p.setTextSize(24f);
- p.setTypeface(typeface);
-
- // Test string to try with the passed font.
- // TODO: Good to extract from font file.
- String testTextToDraw = "abcXYZ@- "
- + "\uD83E\uDED6" // Emoji E13.0
- + "\uD83C\uDDFA\uD83C\uDDF8" // Emoji Flags
- + "\uD83D\uDC8F\uD83C\uDFFB" // Emoji Skin tone Sequence
- // ZWJ Sequence
- + "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D"
- + "\uD83D\uDC68\uD83C\uDFFF";
-
- int width = (int) Math.ceil(Layout.getDesiredWidth(testTextToDraw, p));
- StaticLayout layout = StaticLayout.Builder.obtain(
- testTextToDraw, 0, testTextToDraw.length(), p, width).build();
- Bitmap bmp = Bitmap.createBitmap(
- layout.getWidth(), layout.getHeight(), Bitmap.Config.ALPHA_8);
- Canvas canvas = new Canvas(bmp);
- layout.draw(canvas);
- }
-
- private static ByteBuffer mmap(File file) throws IOException {
- try (FileInputStream in = new FileInputStream(file)) {
- FileChannel fileChannel = in.getChannel();
- return fileChannel.map(FileChannel.MapMode.READ_ONLY, 0, fileChannel.size());
- }
- }
- }
-
private static class FsverityUtilImpl implements UpdatableFontDir.FsverityUtil {
@Override
public boolean hasFsverity(String filePath) {
diff --git a/services/core/java/com/android/server/graphics/fonts/OtfFontFileParser.java b/services/core/java/com/android/server/graphics/fonts/OtfFontFileParser.java
new file mode 100644
index 000000000000..bc6ceec7e269
--- /dev/null
+++ b/services/core/java/com/android/server/graphics/fonts/OtfFontFileParser.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.graphics.fonts;
+
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Typeface;
+import android.graphics.fonts.Font;
+import android.graphics.fonts.FontFamily;
+import android.graphics.fonts.FontFileUtil;
+import android.text.Layout;
+import android.text.StaticLayout;
+import android.text.TextPaint;
+import android.text.TextUtils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.NioUtils;
+import java.nio.channels.FileChannel;
+
+/* package */ class OtfFontFileParser implements UpdatableFontDir.FontFileParser {
+ @Override
+ public String getPostScriptName(File file) throws IOException {
+ ByteBuffer buffer = mmap(file);
+ try {
+ return FontFileUtil.getPostScriptName(buffer, 0);
+ } finally {
+ NioUtils.freeDirectBuffer(buffer);
+ }
+ }
+
+ @Override
+ public String buildFontFileName(File file) throws IOException {
+ ByteBuffer buffer = mmap(file);
+ try {
+ String psName = FontFileUtil.getPostScriptName(buffer, 0);
+ int isType1Font = FontFileUtil.isPostScriptType1Font(buffer, 0);
+ int isCollection = FontFileUtil.isCollectionFont(buffer);
+
+ if (TextUtils.isEmpty(psName) || isType1Font == -1 || isCollection == -1) {
+ return null;
+ }
+
+ String extension;
+ if (isCollection == 1) {
+ extension = isType1Font == 1 ? ".otc" : ".ttc";
+ } else {
+ extension = isType1Font == 1 ? ".otf" : ".ttf";
+ }
+ return psName + extension;
+ } finally {
+ NioUtils.freeDirectBuffer(buffer);
+ }
+
+ }
+
+ @Override
+ public long getRevision(File file) throws IOException {
+ ByteBuffer buffer = mmap(file);
+ try {
+ return FontFileUtil.getRevision(buffer, 0);
+ } finally {
+ NioUtils.freeDirectBuffer(buffer);
+ }
+ }
+
+ @Override
+ public void tryToCreateTypeface(File file) throws Throwable {
+ Font font = new Font.Builder(file).build();
+ FontFamily family = new FontFamily.Builder(font).build();
+ Typeface typeface = new Typeface.CustomFallbackBuilder(family).build();
+
+ TextPaint p = new TextPaint();
+ p.setTextSize(24f);
+ p.setTypeface(typeface);
+
+ // Test string to try with the passed font.
+ // TODO: Good to extract from font file.
+ String testTextToDraw = "abcXYZ@- "
+ + "\uD83E\uDED6" // Emoji E13.0
+ + "\uD83C\uDDFA\uD83C\uDDF8" // Emoji Flags
+ + "\uD83D\uDC8F\uD83C\uDFFB" // Emoji Skin tone Sequence
+ // ZWJ Sequence
+ + "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D"
+ + "\uD83D\uDC68\uD83C\uDFFF";
+
+ int width = (int) Math.ceil(Layout.getDesiredWidth(testTextToDraw, p));
+ StaticLayout layout = StaticLayout.Builder.obtain(
+ testTextToDraw, 0, testTextToDraw.length(), p, width).build();
+ Bitmap bmp = Bitmap.createBitmap(
+ layout.getWidth(), layout.getHeight(), Bitmap.Config.ALPHA_8);
+ Canvas canvas = new Canvas(bmp);
+ layout.draw(canvas);
+ }
+
+ private static ByteBuffer mmap(File file) throws IOException {
+ try (FileInputStream in = new FileInputStream(file)) {
+ FileChannel fileChannel = in.getChannel();
+ return fileChannel.map(FileChannel.MapMode.READ_ONLY, 0, fileChannel.size());
+ }
+ }
+}
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 7003ef760196..c862febbd62b 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
@@ -139,9 +139,11 @@ public final class UpdatableFontDirTest {
private File mUpdatableFontFilesDir;
private File mConfigFile;
private List<File> mPreinstalledFontDirs;
- private Supplier<Long> mCurrentTimeSupplier = () -> CURRENT_TIME;
- private Function<Map<String, File>, FontConfig> mConfigSupplier =
+ private final Supplier<Long> mCurrentTimeSupplier = () -> CURRENT_TIME;
+ private final Function<Map<String, File>, FontConfig> mConfigSupplier =
(map) -> SystemFonts.getSystemFontConfig(map, 0, 0);
+ private FakeFontFileParser mParser;
+ private FakeFsverityUtil mFakeFsverityUtil;
@SuppressWarnings("ResultOfMethodCallIgnored")
@Before
@@ -159,6 +161,8 @@ public final class UpdatableFontDirTest {
dir.mkdir();
}
mConfigFile = new File(mCacheDir, "config.xml");
+ mParser = new FakeFontFileParser();
+ mFakeFsverityUtil = new FakeFsverityUtil();
}
@After
@@ -169,13 +173,11 @@ public final class UpdatableFontDirTest {
@Test
public void construct() throws Exception {
long expectedModifiedDate = CURRENT_TIME / 2;
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
PersistentSystemFontConfig.Config config = new PersistentSystemFontConfig.Config();
config.lastModifiedMillis = expectedModifiedDate;
writeConfig(config, mConfigFile);
UpdatableFontDir dirForPreparation = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dirForPreparation.loadFontFileMap();
assertThat(dirForPreparation.getSystemFontConfig().getLastModifiedTimeMillis())
@@ -198,13 +200,13 @@ public final class UpdatableFontDirTest {
.isNotEqualTo(expectedModifiedDate);
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
assertThat(dir.getPostScriptMap()).containsKey("foo");
- assertThat(parser.getRevision(dir.getPostScriptMap().get("foo"))).isEqualTo(3);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("foo"))).isEqualTo(3);
assertThat(dir.getPostScriptMap()).containsKey("bar");
- assertThat(parser.getRevision(dir.getPostScriptMap().get("bar"))).isEqualTo(4);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("bar"))).isEqualTo(4);
// Outdated font dir should be deleted.
assertThat(mUpdatableFontFilesDir.list()).hasLength(2);
assertNamedFamilyExists(dir.getSystemFontConfig(), "foobar");
@@ -219,10 +221,8 @@ public final class UpdatableFontDirTest {
@Test
public void construct_empty() {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
assertThat(dir.getPostScriptMap()).isEmpty();
@@ -231,10 +231,8 @@ public final class UpdatableFontDirTest {
@Test
public void construct_missingFsverity() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dirForPreparation = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dirForPreparation.loadFontFileMap();
dirForPreparation.update(Arrays.asList(
@@ -249,10 +247,10 @@ public final class UpdatableFontDirTest {
// Four font dirs are created.
assertThat(mUpdatableFontFilesDir.list()).hasLength(4);
- fakeFsverityUtil.remove(
+ mFakeFsverityUtil.remove(
dirForPreparation.getPostScriptMap().get("foo").getAbsolutePath());
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
assertThat(dir.getPostScriptMap()).isEmpty();
@@ -263,10 +261,8 @@ public final class UpdatableFontDirTest {
@Test
public void construct_fontNameMismatch() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dirForPreparation = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dirForPreparation.loadFontFileMap();
dirForPreparation.update(Arrays.asList(
@@ -285,7 +281,7 @@ public final class UpdatableFontDirTest {
FileUtils.stringToFile(dirForPreparation.getPostScriptMap().get("foo"), "bar,4");
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
assertThat(dir.getPostScriptMap()).isEmpty();
@@ -296,8 +292,6 @@ public final class UpdatableFontDirTest {
@Test
public void construct_olderThanPreinstalledFont() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
Function<Map<String, File>, FontConfig> configSupplier = (map) -> {
FontConfig.Font fooFont = new FontConfig.Font(
new File(mPreinstalledFontDirs.get(0), "foo.ttf"), null, "foo",
@@ -314,7 +308,7 @@ public final class UpdatableFontDirTest {
};
UpdatableFontDir dirForPreparation = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, configSupplier);
dirForPreparation.loadFontFileMap();
dirForPreparation.update(Arrays.asList(
@@ -334,14 +328,14 @@ public final class UpdatableFontDirTest {
FileUtils.stringToFile(new File(mPreinstalledFontDirs.get(1), "bar.ttf"), "bar,1,bar");
FileUtils.stringToFile(new File(mPreinstalledFontDirs.get(1), "bar.ttf"), "bar,2,bar");
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, configSupplier);
dir.loadFontFileMap();
// For foo.ttf, preinstalled font (revision 5) should be used.
assertThat(dir.getPostScriptMap()).doesNotContainKey("foo");
// For bar.ttf, updated font (revision 4) should be used.
assertThat(dir.getPostScriptMap()).containsKey("bar");
- assertThat(parser.getRevision(dir.getPostScriptMap().get("bar"))).isEqualTo(4);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("bar"))).isEqualTo(4);
// Outdated font dir should be deleted.
// We don't delete bar.ttf in this case, because it's normal that OTA updates preinstalled
// fonts.
@@ -352,10 +346,8 @@ public final class UpdatableFontDirTest {
@Test
public void construct_failedToLoadConfig() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
new File("/dev/null"), mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
assertThat(dir.getPostScriptMap()).isEmpty();
@@ -364,10 +356,8 @@ public final class UpdatableFontDirTest {
@Test
public void construct_afterBatchFailure() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dirForPreparation = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dirForPreparation.loadFontFileMap();
dirForPreparation.update(Arrays.asList(
@@ -389,12 +379,12 @@ public final class UpdatableFontDirTest {
}
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
// The state should be rolled back as a whole if one of the update requests fail.
assertThat(dir.getPostScriptMap()).containsKey("foo");
- assertThat(parser.getRevision(dir.getPostScriptMap().get("foo"))).isEqualTo(1);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("foo"))).isEqualTo(1);
assertThat(dir.getFontFamilyMap()).containsKey("foobar");
FontConfig.FontFamily foobar = dir.getFontFamilyMap().get("foobar");
assertThat(foobar.getFontList()).hasSize(1);
@@ -404,10 +394,8 @@ public final class UpdatableFontDirTest {
@Test
public void loadFontFileMap_twice() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
dir.update(Collections.singletonList(newFontUpdateRequest("test.ttf,1,test",
@@ -420,17 +408,15 @@ public final class UpdatableFontDirTest {
@Test
public void installFontFile() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
dir.update(Collections.singletonList(newFontUpdateRequest("test.ttf,1,test",
GOOD_SIGNATURE)));
assertThat(dir.getPostScriptMap()).containsKey("test");
- assertThat(parser.getRevision(dir.getPostScriptMap().get("test"))).isEqualTo(1);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("test"))).isEqualTo(1);
File fontFile = dir.getPostScriptMap().get("test");
assertThat(Os.stat(fontFile.getAbsolutePath()).st_mode & 0777).isEqualTo(0644);
File fontDir = fontFile.getParentFile();
@@ -439,10 +425,8 @@ public final class UpdatableFontDirTest {
@Test
public void installFontFile_upgrade() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
@@ -452,10 +436,10 @@ public final class UpdatableFontDirTest {
dir.update(Collections.singletonList(newFontUpdateRequest("test.ttf,2,test",
GOOD_SIGNATURE)));
assertThat(dir.getPostScriptMap()).containsKey("test");
- assertThat(parser.getRevision(dir.getPostScriptMap().get("test"))).isEqualTo(2);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("test"))).isEqualTo(2);
assertThat(mapBeforeUpgrade).containsKey("test");
assertWithMessage("Older fonts should not be deleted until next loadFontFileMap")
- .that(parser.getRevision(mapBeforeUpgrade.get("test"))).isEqualTo(1);
+ .that(mParser.getRevision(mapBeforeUpgrade.get("test"))).isEqualTo(1);
// Check that updatedFontDirs is pruned.
assertWithMessage("config.updatedFontDirs should only list latest active dirs")
.that(readConfig(mConfigFile).updatedFontDirs)
@@ -464,15 +448,13 @@ public final class UpdatableFontDirTest {
@Test
public void installFontFile_systemFontHasPSNameDifferentFromFileName() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
// Setup the environment that the system installed font file named "foo.ttf" has PostScript
// name "bar".
File file = new File(mPreinstalledFontDirs.get(0), "foo.ttf");
FileUtils.stringToFile(file, "foo.ttf,1,bar");
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, (map) -> {
FontConfig.Font font = new FontConfig.Font(
file, null, "bar", new FontStyle(400, FontStyle.FONT_SLANT_UPRIGHT),
@@ -489,7 +471,7 @@ public final class UpdatableFontDirTest {
GOOD_SIGNATURE)));
assertThat(dir.getPostScriptMap()).containsKey("bar");
assertThat(dir.getPostScriptMap().size()).isEqualTo(1);
- assertThat(parser.getRevision(dir.getPostScriptMap().get("bar"))).isEqualTo(2);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("bar"))).isEqualTo(2);
File fontFile = dir.getPostScriptMap().get("bar");
assertThat(Os.stat(fontFile.getAbsolutePath()).st_mode & 0777).isEqualTo(0644);
File fontDir = fontFile.getParentFile();
@@ -498,10 +480,8 @@ public final class UpdatableFontDirTest {
@Test
public void installFontFile_sameVersion() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
@@ -510,15 +490,13 @@ public final class UpdatableFontDirTest {
dir.update(Collections.singletonList(newFontUpdateRequest("test.ttf,1,test",
GOOD_SIGNATURE)));
assertThat(dir.getPostScriptMap()).containsKey("test");
- assertThat(parser.getRevision(dir.getPostScriptMap().get("test"))).isEqualTo(1);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("test"))).isEqualTo(1);
}
@Test
public void installFontFile_downgrade() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
@@ -533,7 +511,7 @@ public final class UpdatableFontDirTest {
}
assertThat(dir.getPostScriptMap()).containsKey("test");
assertWithMessage("Font should not be downgraded to an older revision")
- .that(parser.getRevision(dir.getPostScriptMap().get("test"))).isEqualTo(2);
+ .that(mParser.getRevision(dir.getPostScriptMap().get("test"))).isEqualTo(2);
// Check that updatedFontDirs is not updated.
assertWithMessage("config.updatedFontDirs should only list latest active dirs")
.that(readConfig(mConfigFile).updatedFontDirs)
@@ -542,10 +520,8 @@ public final class UpdatableFontDirTest {
@Test
public void installFontFile_multiple() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
@@ -554,17 +530,15 @@ public final class UpdatableFontDirTest {
dir.update(Collections.singletonList(newFontUpdateRequest("bar.ttf,2,bar",
GOOD_SIGNATURE)));
assertThat(dir.getPostScriptMap()).containsKey("foo");
- assertThat(parser.getRevision(dir.getPostScriptMap().get("foo"))).isEqualTo(1);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("foo"))).isEqualTo(1);
assertThat(dir.getPostScriptMap()).containsKey("bar");
- assertThat(parser.getRevision(dir.getPostScriptMap().get("bar"))).isEqualTo(2);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("bar"))).isEqualTo(2);
}
@Test
public void installFontFile_batch() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
@@ -572,17 +546,15 @@ public final class UpdatableFontDirTest {
newFontUpdateRequest("foo.ttf,1,foo", GOOD_SIGNATURE),
newFontUpdateRequest("bar.ttf,2,bar", GOOD_SIGNATURE)));
assertThat(dir.getPostScriptMap()).containsKey("foo");
- assertThat(parser.getRevision(dir.getPostScriptMap().get("foo"))).isEqualTo(1);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("foo"))).isEqualTo(1);
assertThat(dir.getPostScriptMap()).containsKey("bar");
- assertThat(parser.getRevision(dir.getPostScriptMap().get("bar"))).isEqualTo(2);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("bar"))).isEqualTo(2);
}
@Test
public void installFontFile_invalidSignature() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
@@ -600,46 +572,40 @@ public final class UpdatableFontDirTest {
@Test
public void installFontFile_preinstalled_upgrade() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
FileUtils.stringToFile(new File(mPreinstalledFontDirs.get(0), "test.ttf"),
"test.ttf,1,test");
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
dir.update(Collections.singletonList(newFontUpdateRequest("test.ttf,2,test",
GOOD_SIGNATURE)));
assertThat(dir.getPostScriptMap()).containsKey("test");
- assertThat(parser.getRevision(dir.getPostScriptMap().get("test"))).isEqualTo(2);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("test"))).isEqualTo(2);
}
@Test
public void installFontFile_preinstalled_sameVersion() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
FileUtils.stringToFile(new File(mPreinstalledFontDirs.get(0), "test.ttf"),
"test.ttf,1,test");
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
dir.update(Collections.singletonList(newFontUpdateRequest("test.ttf,1,test",
GOOD_SIGNATURE)));
assertThat(dir.getPostScriptMap()).containsKey("test");
- assertThat(parser.getRevision(dir.getPostScriptMap().get("test"))).isEqualTo(1);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("test"))).isEqualTo(1);
}
@Test
public void installFontFile_preinstalled_downgrade() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
File file = new File(mPreinstalledFontDirs.get(0), "test.ttf");
FileUtils.stringToFile(file, "test.ttf,2,test");
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, (map) -> {
FontConfig.Font font = new FontConfig.Font(
file, null, "test", new FontStyle(400, FontStyle.FONT_SLANT_UPRIGHT), 0, null,
@@ -664,8 +630,6 @@ public final class UpdatableFontDirTest {
@Test
public void installFontFile_failedToWriteConfigXml() throws Exception {
long expectedModifiedDate = 1234567890;
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
FileUtils.stringToFile(new File(mPreinstalledFontDirs.get(0), "test.ttf"),
"test.ttf,1,test");
@@ -680,7 +644,7 @@ public final class UpdatableFontDirTest {
assertThat(readonlyDir.setWritable(false, false)).isTrue();
try {
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
readonlyFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
@@ -702,7 +666,6 @@ public final class UpdatableFontDirTest {
@Test
public void installFontFile_failedToParsePostScript() throws Exception {
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
mUpdatableFontFilesDir,
new UpdatableFontDir.FontFileParser() {
@@ -725,7 +688,7 @@ public final class UpdatableFontDirTest {
@Override
public void tryToCreateTypeface(File file) throws IOException {
}
- }, fakeFsverityUtil, mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
+ }, mFakeFsverityUtil, mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
try {
@@ -741,7 +704,6 @@ public final class UpdatableFontDirTest {
@Test
public void installFontFile_failedToParsePostScriptName_invalidFont() throws Exception {
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
mUpdatableFontFilesDir,
new UpdatableFontDir.FontFileParser() {
@@ -763,7 +725,7 @@ public final class UpdatableFontDirTest {
@Override
public void tryToCreateTypeface(File file) throws IOException {
}
- }, fakeFsverityUtil, mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
+ }, mFakeFsverityUtil, mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
try {
@@ -779,31 +741,29 @@ public final class UpdatableFontDirTest {
@Test
public void installFontFile_failedToCreateTypeface() throws Exception {
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
- FakeFontFileParser parser = new FakeFontFileParser();
UpdatableFontDir dir = new UpdatableFontDir(
mUpdatableFontFilesDir,
new UpdatableFontDir.FontFileParser() {
@Override
public String getPostScriptName(File file) throws IOException {
- return parser.getPostScriptName(file);
+ return mParser.getPostScriptName(file);
}
@Override
public String buildFontFileName(File file) throws IOException {
- return parser.buildFontFileName(file);
+ return mParser.buildFontFileName(file);
}
@Override
public long getRevision(File file) throws IOException {
- return parser.getRevision(file);
+ return mParser.getRevision(file);
}
@Override
public void tryToCreateTypeface(File file) throws IOException {
throw new IOException();
}
- }, fakeFsverityUtil, mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
+ }, mFakeFsverityUtil, mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
try {
@@ -820,16 +780,15 @@ public final class UpdatableFontDirTest {
@Test
public void installFontFile_renameToPsNameFailure() throws Exception {
UpdatableFontDir.FsverityUtil fakeFsverityUtil = new UpdatableFontDir.FsverityUtil() {
- private final FakeFsverityUtil mFake = new FakeFsverityUtil();
@Override
public boolean hasFsverity(String path) {
- return mFake.hasFsverity(path);
+ return mFakeFsverityUtil.hasFsverity(path);
}
@Override
public void setUpFsverity(String path, byte[] pkcs7Signature) throws IOException {
- mFake.setUpFsverity(path, pkcs7Signature);
+ mFakeFsverityUtil.setUpFsverity(path, pkcs7Signature);
}
@Override
@@ -837,9 +796,8 @@ public final class UpdatableFontDirTest {
return false;
}
};
- FakeFontFileParser parser = new FakeFontFileParser();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, fakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
@@ -856,10 +814,8 @@ public final class UpdatableFontDirTest {
@Test
public void installFontFile_batchFailure() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
@@ -875,15 +831,13 @@ public final class UpdatableFontDirTest {
}
// The state should be rolled back as a whole if one of the update requests fail.
assertThat(dir.getPostScriptMap()).containsKey("foo");
- assertThat(parser.getRevision(dir.getPostScriptMap().get("foo"))).isEqualTo(1);
+ assertThat(mParser.getRevision(dir.getPostScriptMap().get("foo"))).isEqualTo(1);
}
@Test
public void addFontFamily() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
@@ -902,10 +856,8 @@ public final class UpdatableFontDirTest {
@Test
public void addFontFamily_noName() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
@@ -924,10 +876,8 @@ public final class UpdatableFontDirTest {
@Test
public void addFontFamily_fontNotAvailable() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
@@ -944,10 +894,8 @@ public final class UpdatableFontDirTest {
@Test
public void getSystemFontConfig() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
// We assume we have monospace.
@@ -976,10 +924,8 @@ public final class UpdatableFontDirTest {
@Test
public void getSystemFontConfig_preserveFirstFontFamily() throws Exception {
- FakeFontFileParser parser = new FakeFontFileParser();
- FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil();
UpdatableFontDir dir = new UpdatableFontDir(
- mUpdatableFontFilesDir, parser, fakeFsverityUtil,
+ mUpdatableFontFilesDir, mParser, mFakeFsverityUtil,
mConfigFile, mCurrentTimeSupplier, mConfigSupplier);
dir.loadFontFileMap();
assertThat(dir.getSystemFontConfig().getFontFamilies()).isNotEmpty();
@@ -1011,12 +957,12 @@ public final class UpdatableFontDirTest {
}
private static FontUpdateRequest newAddFontFamilyRequest(String xml) throws Exception {
- XmlPullParser parser = Xml.newPullParser();
+ XmlPullParser mParser = Xml.newPullParser();
ByteArrayInputStream is = new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8));
- parser.setInput(is, "UTF-8");
- parser.nextTag();
+ mParser.setInput(is, "UTF-8");
+ mParser.nextTag();
- FontConfig.FontFamily fontFamily = FontListParser.readFamily(parser, "", null, true);
+ FontConfig.FontFamily fontFamily = FontListParser.readFamily(mParser, "", null, true);
List<FontUpdateRequest.Font> fonts = new ArrayList<>();
for (FontConfig.Font font : fontFamily.getFontList()) {
String name = font.getFile().getName();