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

Commit 67754d93 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Gerrit Code Review
Browse files

Merge "Runtime resource overlay, iteration 2"

parents 578087e3 48d22323
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1541,11 +1541,11 @@ public final class ActivityThread {
    /**
     * Creates the top level resources for the given package.
     */
    Resources getTopLevelResources(String resDir,
    Resources getTopLevelResources(String resDir, String[] overlayDirs,
            int displayId, Configuration overrideConfiguration,
            LoadedApk pkgInfo) {
        return mResourcesManager.getTopLevelResources(resDir, displayId, overrideConfiguration,
                pkgInfo.getCompatibilityInfo(), null);
        return mResourcesManager.getTopLevelResources(resDir, overlayDirs, displayId,
                overrideConfiguration, pkgInfo.getCompatibilityInfo(), null);
    }

    final Handler getHandler() {
+1 −1
Original line number Diff line number Diff line
@@ -774,7 +774,7 @@ final class ApplicationPackageManager extends PackageManager {
        }
        Resources r = mContext.mMainThread.getTopLevelResources(
                app.uid == Process.myUid() ? app.sourceDir : app.publicSourceDir,
                        Display.DEFAULT_DISPLAY, null, mContext.mPackageInfo);
                app.resourceDirs, Display.DEFAULT_DISPLAY, null, mContext.mPackageInfo);
        if (r != null) {
            return r;
        }
+5 −4
Original line number Diff line number Diff line
@@ -1911,8 +1911,8 @@ class ContextImpl extends Context {
        ContextImpl c = new ContextImpl();
        c.init(mPackageInfo, null, mMainThread);
        c.mResources = mResourcesManager.getTopLevelResources(mPackageInfo.getResDir(),
                getDisplayId(), overrideConfiguration, mResources.getCompatibilityInfo(),
                mActivityToken);
                mPackageInfo.getOverlayDirs(), getDisplayId(), overrideConfiguration,
                mResources.getCompatibilityInfo(), mActivityToken);
        return c;
    }

@@ -1929,7 +1929,7 @@ class ContextImpl extends Context {
        context.mDisplay = display;
        DisplayAdjustments daj = getDisplayAdjustments(displayId);
        context.mResources = mResourcesManager.getTopLevelResources(mPackageInfo.getResDir(),
                displayId, null, daj.getCompatibilityInfo(), null);
                mPackageInfo.getOverlayDirs(), displayId, null, daj.getCompatibilityInfo(), null);
        return context;
    }

@@ -2041,7 +2041,8 @@ class ContextImpl extends Context {
            mDisplayAdjustments.setCompatibilityInfo(compatInfo);
            mDisplayAdjustments.setActivityToken(activityToken);
            mResources = mResourcesManager.getTopLevelResources(mPackageInfo.getResDir(),
                    Display.DEFAULT_DISPLAY, null, compatInfo, activityToken);
                    mPackageInfo.getOverlayDirs(), Display.DEFAULT_DISPLAY, null, compatInfo,
                    activityToken);
        } else {
            mDisplayAdjustments.setCompatibilityInfo(packageInfo.getCompatibilityInfo());
            mDisplayAdjustments.setActivityToken(activityToken);
+8 −1
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ public final class LoadedApk {
    final String mPackageName;
    private final String mAppDir;
    private final String mResDir;
    private final String[] mOverlayDirs;
    private final String[] mSharedLibraries;
    private final String mDataDir;
    private final String mLibDir;
@@ -120,6 +121,7 @@ public final class LoadedApk {
        final int myUid = Process.myUid();
        mResDir = aInfo.uid == myUid ? aInfo.sourceDir
                : aInfo.publicSourceDir;
        mOverlayDirs = aInfo.resourceDirs;
        if (!UserHandle.isSameUser(aInfo.uid, myUid) && !Process.isIsolated()) {
            aInfo.dataDir = PackageManager.getDataDirForUser(UserHandle.getUserId(myUid),
                    mPackageName);
@@ -159,6 +161,7 @@ public final class LoadedApk {
        mPackageName = name;
        mAppDir = null;
        mResDir = null;
        mOverlayDirs = null;
        mSharedLibraries = null;
        mDataDir = null;
        mDataDirFile = null;
@@ -471,6 +474,10 @@ public final class LoadedApk {
        return mResDir;
    }

    public String[] getOverlayDirs() {
        return mOverlayDirs;
    }

    public String getDataDir() {
        return mDataDir;
    }
@@ -485,7 +492,7 @@ public final class LoadedApk {

    public Resources getResources(ActivityThread mainThread) {
        if (mResources == null) {
            mResources = mainThread.getTopLevelResources(mResDir,
            mResources = mainThread.getTopLevelResources(mResDir, mOverlayDirs,
                    Display.DEFAULT_DISPLAY, null, this);
        }
        return mResources;
+7 −1
Original line number Diff line number Diff line
@@ -147,7 +147,7 @@ public class ResourcesManager {
     * @param compatInfo the compability info. Must not be null.
     * @param token the application token for determining stack bounds.
     */
    public Resources getTopLevelResources(String resDir, int displayId,
    public Resources getTopLevelResources(String resDir, String[] overlayDirs, int displayId,
            Configuration overrideConfiguration, CompatibilityInfo compatInfo, IBinder token) {
        final float scale = compatInfo.applicationScale;
        ResourcesKey key = new ResourcesKey(resDir, displayId, overrideConfiguration, scale,
@@ -180,6 +180,12 @@ public class ResourcesManager {
            return null;
        }

        if (overlayDirs != null) {
            for (String idmapPath : overlayDirs) {
                assets.addOverlayPath(idmapPath);
            }
        }

        //Slog.i(TAG, "Resource: key=" + key + ", display metrics=" + metrics);
        DisplayMetrics dm = getDisplayMetricsLocked(displayId);
        Configuration config;
Loading