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

Commit 06a441de authored by Amith Yamasani's avatar Amith Yamasani Committed by Android (Google) Code Review
Browse files

Merge "Pass along the user id to AttributeCache requests" into jb-mr2-dev

parents c079e43f 4befbecf
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.os.UserHandle;
import android.util.SparseArray;

import java.util.HashMap;
@@ -94,7 +95,7 @@ public final class AttributeCache {
        }
    }
    
    public Entry get(String packageName, int resId, int[] styleable) {
    public Entry get(String packageName, int resId, int[] styleable, int userId) {
        synchronized (this) {
            Package pkg = mPackages.get(packageName);
            HashMap<int[], Entry> map = null;
@@ -110,7 +111,8 @@ public final class AttributeCache {
            } else {
                Context context;
                try {
                    context = mContext.createPackageContext(packageName, 0);
                    context = mContext.createPackageContextAsUser(packageName, 0,
                            new UserHandle(userId));
                    if (context == null) {
                        return null;
                    }
+1 −1
Original line number Diff line number Diff line
@@ -418,7 +418,7 @@ final class ActivityRecord {
            launchMode = aInfo.launchMode;
            
            AttributeCache.Entry ent = AttributeCache.instance().get(packageName,
                    realTheme, com.android.internal.R.styleable.Window);
                    realTheme, com.android.internal.R.styleable.Window, userId);
            fullscreen = ent != null && !ent.array.getBoolean(
                    com.android.internal.R.styleable.Window_windowIsFloating, false)
                    && !ent.array.getBoolean(
+8 −2
Original line number Diff line number Diff line
@@ -147,6 +147,8 @@ public class AppTransition implements Dump {
    private final Interpolator mDecelerateInterpolator;
    private final Interpolator mThumbnailFadeoutInterpolator;

    private int mCurrentUserId = 0;

    AppTransition(Context context, Handler h) {
        mContext = context;
        mH = h;
@@ -259,7 +261,7 @@ public class AppTransition implements Dump {
            if (DEBUG_ANIM) Slog.v(TAG, "Loading animations: picked package="
                    + packageName);
            return AttributeCache.instance().get(packageName, resId,
                    com.android.internal.R.styleable.WindowAnimation);
                    com.android.internal.R.styleable.WindowAnimation, mCurrentUserId);
        }
        return null;
    }
@@ -274,7 +276,7 @@ public class AppTransition implements Dump {
            if (DEBUG_ANIM) Slog.v(TAG, "Loading animations: picked package="
                    + packageName);
            return AttributeCache.instance().get(packageName, resId,
                    com.android.internal.R.styleable.WindowAnimation);
                    com.android.internal.R.styleable.WindowAnimation, mCurrentUserId);
        }
        return null;
    }
@@ -758,4 +760,8 @@ public class AppTransition implements Dump {
            pw.println(mNextAppTransitionCallback);
        }
    }

    public void setCurrentUser(int newUserId) {
        mCurrentUserId = newUserId;
    }
}
+2 −1
Original line number Diff line number Diff line
@@ -3927,7 +3927,7 @@ public class WindowManagerService extends IWindowManager.Stub
                    + Integer.toHexString(theme));
            if (theme != 0) {
                AttributeCache.Entry ent = AttributeCache.instance().get(pkg, theme,
                        com.android.internal.R.styleable.Window);
                        com.android.internal.R.styleable.Window, mCurrentUserId);
                if (ent == null) {
                    // Whoops!  App doesn't exist.  Um.  Okay.  We'll just
                    // pretend like we didn't see that.
@@ -4981,6 +4981,7 @@ public class WindowManagerService extends IWindowManager.Stub
    public void setCurrentUser(final int newUserId) {
        synchronized (mWindowMap) {
            mCurrentUserId = newUserId;
            mAppTransition.setCurrentUser(newUserId);
            mPolicy.setCurrentUserLw(newUserId);

            // Hide windows that should not be seen by the new user.