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

Commit bbe6f491 authored by Jason Monk's avatar Jason Monk Committed by Android (Google) Code Review
Browse files

Merge "Allow persistent changes to the vendor overlay theme"

parents 3799c852 2dc804be
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -178,7 +178,11 @@ static void verifySystemIdmaps()
                // Directories to scan for overlays: if OVERLAY_THEME_DIR_PROPERTY is defined,
                // use OVERLAY_DIR/<value of OVERLAY_THEME_DIR_PROPERTY> in addition to OVERLAY_DIR.
                char subdir[PROP_VALUE_MAX];
                int len = __system_property_get(AssetManager::OVERLAY_THEME_DIR_PROPERTY, subdir);
                int len = __system_property_get(AssetManager::OVERLAY_THEME_DIR_PERSIST_PROPERTY,
                        subdir);
                if (len == 0) {
                    len = __system_property_get(AssetManager::OVERLAY_THEME_DIR_PROPERTY, subdir);
                }
                if (len > 0) {
                    String8 overlayPath = String8(AssetManager::OVERLAY_DIR) + "/" + subdir;
                    if (stat(overlayPath.string(), &st) == 0) {
+3 −3
Original line number Diff line number Diff line
@@ -260,11 +260,11 @@ class FileDescriptorInfo {
    }

    // Whitelist files needed for Runtime Resource Overlay, like these:
    // /system/vendor/overlay/framework-res.apk
    // /system/vendor/overlay/PG/android-framework-runtime-resource-overlay.apk
    // /vendor/overlay/framework-res.apk
    // /vendor/overlay/PG/android-framework-runtime-resource-overlay.apk
    // /data/resource-cache/system@vendor@overlay@framework-res.apk@idmap
    // /data/resource-cache/system@vendor@overlay@PG@framework-res.apk@idmap
    static const char* kOverlayDir = "/system/vendor/overlay/";
    static const char* kOverlayDir = "/vendor/overlay/";
    static const char* kApkSuffix = ".apk";

    if (android::base::StartsWith(path, kOverlayDir)
+1 −0
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ const char* AssetManager::RESOURCES_FILENAME = "resources.arsc";
const char* AssetManager::IDMAP_BIN = "/system/bin/idmap";
const char* AssetManager::OVERLAY_DIR = "/vendor/overlay";
const char* AssetManager::OVERLAY_THEME_DIR_PROPERTY = "ro.boot.vendor.overlay.theme";
const char* AssetManager::OVERLAY_THEME_DIR_PERSIST_PROPERTY = "persist.vendor.overlay.theme";
const char* AssetManager::TARGET_PACKAGE_NAME = "android";
const char* AssetManager::TARGET_APK_PATH = "/system/framework/framework-res.apk";
const char* AssetManager::IDMAP_DIR = "/data/resource-cache";
+5 −0
Original line number Diff line number Diff line
@@ -66,6 +66,11 @@ public:
     * OVERLAY_DIR.
     */
    static const char* OVERLAY_THEME_DIR_PROPERTY;
    /**
     * If OVERLAY_THEME_DIR_PERSIST_PROPERTY, use it to override
     * OVERLAY_THEME_DIR_PROPERTY.
     */
    static const char* OVERLAY_THEME_DIR_PERSIST_PROPERTY;
    static const char* TARGET_PACKAGE_NAME;
    static const char* TARGET_APK_PATH;
    static const char* IDMAP_DIR;
+10 −1
Original line number Diff line number Diff line
@@ -471,6 +471,12 @@ public class PackageManagerService extends IPackageManager.Stub {
     * VENDOR_OVERLAY_DIR.
     */
    private static final String VENDOR_OVERLAY_THEME_PROPERTY = "ro.boot.vendor.overlay.theme";
    /**
     * Same as VENDOR_OVERLAY_THEME_PROPERTY, except persistent. If set will override whatever
     * is in VENDOR_OVERLAY_THEME_PROPERTY.
     */
    private static final String VENDOR_OVERLAY_THEME_PERSIST_PROPERTY
            = "persist.vendor.overlay.theme";
    private static int DEFAULT_EPHEMERAL_HASH_PREFIX_MASK = 0xFFFFF000;
    private static int DEFAULT_EPHEMERAL_HASH_PREFIX_COUNT = 5;
@@ -2289,7 +2295,10 @@ public class PackageManagerService extends IPackageManager.Stub {
            // Collect vendor overlay packages. (Do this before scanning any apps.)
            // For security and version matching reason, only consider
            // overlay packages if they reside in the right directory.
            String overlayThemeDir = SystemProperties.get(VENDOR_OVERLAY_THEME_PROPERTY);
            String overlayThemeDir = SystemProperties.get(VENDOR_OVERLAY_THEME_PERSIST_PROPERTY);
            if (overlayThemeDir.isEmpty()) {
                overlayThemeDir = SystemProperties.get(VENDOR_OVERLAY_THEME_PROPERTY);
            }
            if (!overlayThemeDir.isEmpty()) {
                scanDirTracedLI(new File(VENDOR_OVERLAY_DIR, overlayThemeDir), mDefParseFlags
                        | PackageParser.PARSE_IS_SYSTEM