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

Commit 901ec314 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix font update failure" into main am: 093c0d89

parents 0c554583 093c0d89
Loading
Loading
Loading
Loading
+37 −5
Original line number Original line Diff line number Diff line
@@ -198,8 +198,7 @@ final class UpdatableFontDir {
                File signatureFile = new File(dir, FONT_SIGNATURE_FILE);
                File signatureFile = new File(dir, FONT_SIGNATURE_FILE);
                if (!signatureFile.exists()) {
                if (!signatureFile.exists()) {
                    Slog.i(TAG, "The signature file is missing.");
                    Slog.i(TAG, "The signature file is missing.");
                    FileUtils.deleteContentsAndDir(dir);
                    return;
                    continue;
                }
                }
                byte[] signature;
                byte[] signature;
                try {
                try {
@@ -224,10 +223,36 @@ final class UpdatableFontDir {


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

            // 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);
                for (int j = 0; j < family.getFonts().size(); ++j) {
                    FontUpdateRequest.Font font = family.getFonts().get(j);
                    if (mFontFileInfoMap.containsKey(font.getPostScriptName())) {
                        continue;
                    }

                    if (fontConfig == null) {
                        fontConfig = mConfigSupplier.apply(Collections.emptyMap());
                    }

                    if (getFontByPostScriptName(font.getPostScriptName(), fontConfig) != null) {
                        continue;
                    }

                    Slog.e(TAG, "Unknown font that has PostScript name "
                            + font.getPostScriptName() + " is requested in FontFamily "
                            + family.getName());
                    return;
                }
            }

            success = true;
            success = true;
        } catch (Throwable t) {
        } catch (Throwable t) {
            // If something happened during loading system fonts, clear all contents in finally
            // If something happened during loading system fonts, clear all contents in finally
@@ -239,6 +264,7 @@ final class UpdatableFontDir {
                mFontFileInfoMap.clear();
                mFontFileInfoMap.clear();
                mLastModifiedMillis = 0;
                mLastModifiedMillis = 0;
                FileUtils.deleteContents(mFilesDir);
                FileUtils.deleteContents(mFilesDir);
                mConfigFile.delete();
            }
            }
        }
        }
    }
    }
@@ -487,8 +513,7 @@ final class UpdatableFontDir {
        return shouldAddToMap;
        return shouldAddToMap;
    }
    }


    private long getPreinstalledFontRevision(FontFileInfo info, FontConfig fontConfig) {
    private FontConfig.Font getFontByPostScriptName(String psName, FontConfig fontConfig) {
        String psName = info.getPostScriptName();
        FontConfig.Font targetFont = null;
        FontConfig.Font targetFont = null;
        for (int i = 0; i < fontConfig.getFontFamilies().size(); i++) {
        for (int i = 0; i < fontConfig.getFontFamilies().size(); i++) {
            FontConfig.FontFamily family = fontConfig.getFontFamilies().get(i);
            FontConfig.FontFamily family = fontConfig.getFontFamilies().get(i);
@@ -513,6 +538,13 @@ final class UpdatableFontDir {
                }
                }
            }
            }
        }
        }
        return targetFont;
    }

    private long getPreinstalledFontRevision(FontFileInfo info, FontConfig fontConfig) {
        String psName = info.getPostScriptName();
        FontConfig.Font targetFont = getFontByPostScriptName(psName, fontConfig);

        if (targetFont == null) {
        if (targetFont == null) {
            return -1;
            return -1;
        }
        }