Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 815b2114 authored by Seigo Nonaka's avatar Seigo Nonaka
Browse files

Put updatable font failure fix behind the flag

Bug: 331717791
Test: atest UpdatableFontDirTest
Change-Id: Id9110d8b8552109c63741c353f2e5ba9b201113a
parent 53bced1e
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -160,3 +160,14 @@ flag {
  description: "Feature flag for showing error message when user tries stylus handwriting on a text field which doesn't support it"
  bug: "297962571"
}

flag {
  name: "fix_font_update_failure"
  namespace: "text"
  description: "There was a bug of updating system font from Android 13 to 14. This flag for fixing the migration failure."
  is_fixed_read_only: true
  bug: "331717791"
  metadata {
    purpose: PURPOSE_BUGFIX
  }
}
+37 −24
Original line number Diff line number Diff line
@@ -196,7 +196,12 @@ final class UpdatableFontDir {
                File signatureFile = new File(dir, FONT_SIGNATURE_FILE);
                if (!signatureFile.exists()) {
                    Slog.i(TAG, "The signature file is missing.");
                    if (com.android.text.flags.Flags.fixFontUpdateFailure()) {
                        return;
                    } else {
                        FileUtils.deleteContentsAndDir(dir);
                        continue;
                    }
                }
                byte[] signature;
                try {
@@ -221,12 +226,17 @@ final class UpdatableFontDir {

                FontFileInfo fontFileInfo = validateFontFile(fontFile, signature);
                if (fontConfig == null) {
                    if (com.android.text.flags.Flags.fixFontUpdateFailure()) {
                        // Use preinstalled font config for checking revision number.
                        fontConfig = mConfigSupplier.apply(Collections.emptyMap());
                    } else {
                        fontConfig = getSystemFontConfig();
                    }
                }
                addFileToMapIfSameOrNewer(fontFileInfo, fontConfig, true /* deleteOldFile */);
            }

            if (com.android.text.flags.Flags.fixFontUpdateFailure()) {
                // Treat as error if post script name of font family was not installed.
                for (int i = 0; i < config.fontFamilies.size(); ++i) {
                    FontUpdateRequest.Family family = config.fontFamilies.get(i);
@@ -250,6 +260,7 @@ final class UpdatableFontDir {
                        return;
                    }
                }
            }

            success = true;
        } catch (Throwable t) {
@@ -262,10 +273,12 @@ final class UpdatableFontDir {
                mFontFileInfoMap.clear();
                mLastModifiedMillis = 0;
                FileUtils.deleteContents(mFilesDir);
                if (com.android.text.flags.Flags.fixFontUpdateFailure()) {
                    mConfigFile.delete();
                }
            }
        }
    }

    /**
     * Applies multiple {@link FontUpdateRequest}s in transaction.
+33 −0
Original line number Diff line number Diff line
@@ -30,6 +30,9 @@ import android.graphics.fonts.SystemFonts;
import android.os.FileUtils;
import android.os.ParcelFileDescriptor;
import android.platform.test.annotations.Presubmit;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.system.Os;
import android.text.FontConfig;
import android.util.Xml;
@@ -38,8 +41,11 @@ import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;

import com.android.text.flags.Flags;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.xmlpull.v1.XmlPullParser;
@@ -69,6 +75,9 @@ public final class UpdatableFontDirTest {

    private static final String LEGACY_FONTS_XML = "/system/etc/fonts.xml";

    @Rule
    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();

    /**
     * A {@link UpdatableFontDir.FontFileParser} for testing. Instead of using real font files,
     * this test uses fake font files. A fake font file has its PostScript naem and revision as the
@@ -1097,6 +1106,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void signatureMissingCase_fontFamilyInstalled_fontFamilyInstallLater() {
        // Install font families, foo.ttf, bar.ttf.
        installTestFontFamilies(1 /* version */);
@@ -1116,6 +1126,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void signatureMissingCase_fontFamilyInstalled_fontInstallLater() {
        // Install font families, foo.ttf, bar.ttf.
        installTestFontFamilies(1);
@@ -1135,6 +1146,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void signatureMissingCase_fontFileInstalled_fontFamilyInstallLater() {
        // Install font file, foo.ttf and bar.ttf
        installTestFontFile(2 /* numFonts */, 1 /* version */);
@@ -1154,6 +1166,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void signatureMissingCase_fontFileInstalled_fontFileInstallLater() {
        // Install font file, foo.ttf and bar.ttf
        installTestFontFile(2 /* numFonts */, 1 /* version */);
@@ -1173,6 +1186,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void signatureAllMissingCase_fontFamilyInstalled_fontFamilyInstallLater() {
        // Install font families, foo.ttf, bar.ttf.
        installTestFontFamilies(1 /* version */);
@@ -1192,6 +1206,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void signatureAllMissingCase_fontFamilyInstalled_fontInstallLater() {
        // Install font families, foo.ttf, bar.ttf.
        installTestFontFamilies(1 /* version */);
@@ -1211,6 +1226,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void signatureAllMissingCase_fontFileInstalled_fontFamilyInstallLater() {
        // Install font file, foo.ttf
        installTestFontFile(1 /* numFonts */, 1 /* version */);
@@ -1230,6 +1246,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void signatureAllMissingCase_fontFileInstalled_fontFileInstallLater() {
        // Install font file, foo.ttf
        installTestFontFile(1 /* numFonts */, 1 /* version */);
@@ -1249,6 +1266,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void fontMissingCase_fontFamilyInstalled_fontFamilyInstallLater() {
        // Install font families, foo.ttf, bar.ttf.
        installTestFontFamilies(1 /* version */);
@@ -1268,6 +1286,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void fontMissingCase_fontFamilyInstalled_fontInstallLater() {
        // Install font families, foo.ttf, bar.ttf.
        installTestFontFamilies(1);
@@ -1287,6 +1306,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void fontMissingCase_fontFileInstalled_fontFamilyInstallLater() {
        // Install font file, foo.ttf and bar.ttf
        installTestFontFile(2 /* numFonts */, 1 /* version */);
@@ -1306,6 +1326,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void fontMissingCase_fontFileInstalled_fontFileInstallLater() {
        // Install font file, foo.ttf and bar.ttf
        installTestFontFile(2 /* numFonts */, 1 /* version */);
@@ -1325,6 +1346,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void fontAllMissingCase_fontFamilyInstalled_fontFamilyInstallLater() {
        // Install font families, foo.ttf, bar.ttf.
        installTestFontFamilies(1 /* version */);
@@ -1344,6 +1366,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void fontAllMissingCase_fontFamilyInstalled_fontInstallLater() {
        // Install font families, foo.ttf, bar.ttf.
        installTestFontFamilies(1 /* version */);
@@ -1363,6 +1386,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void fontAllMissingCase_fontFileInstalled_fontFamilyInstallLater() {
        // Install font file, foo.ttf
        installTestFontFile(1 /* numFonts */, 1 /* version */);
@@ -1382,6 +1406,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void fontAllMissingCase_fontFileInstalled_fontFileInstallLater() {
        // Install font file, foo.ttf
        installTestFontFile(1 /* numFonts */, 1 /* version */);
@@ -1401,6 +1426,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void fontDirAllMissingCase_fontFamilyInstalled_fontFamilyInstallLater() {
        // Install font families, foo.ttf, bar.ttf.
        installTestFontFamilies(1 /* version */);
@@ -1420,6 +1446,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void fontDirAllMissingCase_fontFamilyInstalled_fontInstallLater() {
        // Install font families, foo.ttf, bar.ttf.
        installTestFontFamilies(1 /* version */);
@@ -1439,6 +1466,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void fontDirAllMissingCase_fontFileInstalled_fontFamilyInstallLater() {
        // Install font file, foo.ttf
        installTestFontFile(1 /* numFonts */, 1 /* version */);
@@ -1458,6 +1486,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void fontDirAllMissingCase_fontFileInstalled_fontFileInstallLater() {
        // Install font file, foo.ttf
        installTestFontFile(1 /* numFonts */, 1 /* version */);
@@ -1477,6 +1506,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void dirContentAllMissingCase_fontFamilyInstalled_fontFamilyInstallLater() {
        // Install font families, foo.ttf, bar.ttf.
        installTestFontFamilies(1 /* version */);
@@ -1497,6 +1527,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void dirContentAllMissingCase_fontFamilyInstalled_fontInstallLater() {
        // Install font families, foo.ttf, bar.ttf.
        installTestFontFamilies(1 /* version */);
@@ -1517,6 +1548,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void dirContentAllMissingCase_fontFileInstalled_fontFamilyInstallLater() {
        // Install font file, foo.ttf
        installTestFontFile(1 /* numFonts */, 1 /* version */);
@@ -1537,6 +1569,7 @@ public final class UpdatableFontDirTest {
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_FIX_FONT_UPDATE_FAILURE)
    public void dirContentAllMissingCase_fontFileInstalled_fontFileInstallLater() {
        // Install font file, foo.ttf
        installTestFontFile(1 /* numFonts */, 1 /* version */);