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

Commit 4ad93639 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Git Automerger
Browse files

am 67754d93: Merge "Runtime resource overlay, iteration 2"

* commit '67754d93':
  Runtime resource overlay, iteration 2
parents 0cd115e1 67754d93
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