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

Commit 7e877fa0 authored by Craig Mautner's avatar Craig Mautner Committed by Android (Google) Code Review
Browse files

Merge "Fix to allow SYSTEM_UID to display windows." into jb-mr1-dev

parents de1d96c7 a2d7b111
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Region;
import android.os.IBinder;
import android.os.Process;
import android.os.RemoteException;
import android.os.UserHandle;
import android.util.Slog;
@@ -261,8 +262,8 @@ final class WindowState implements WindowManagerPolicy.WindowState {

    DisplayContent  mDisplayContent;

    // UserId of the owner. Don't display windows of non-current user.
    final int mOwnerUserId;
    // UserId and appId of the owner. Don't display windows of non-current user.
    final int mOwnerUid;

    WindowState(WindowManagerService service, Session s, IWindow c, WindowToken token,
           WindowState attachedWindow, int seq, WindowManager.LayoutParams a,
@@ -271,7 +272,7 @@ final class WindowState implements WindowManagerPolicy.WindowState {
        mSession = s;
        mClient = c;
        mToken = token;
        mOwnerUserId = UserHandle.getUserId(s.mUid);
        mOwnerUid = s.mUid;
        mAttrs.copyFrom(a);
        mViewVisibility = viewVisibility;
        mDisplayContent = displayContent;
@@ -904,7 +905,7 @@ final class WindowState implements WindowManagerPolicy.WindowState {
    boolean showLw(boolean doAnimation, boolean requestAnim) {
        if (isOtherUsersAppWindow()) {
            Slog.w(TAG, "Current user " + mService.mCurrentUserId + " trying to display "
                    + this + ", type " + mAttrs.type + ", belonging to " + mOwnerUserId);
                    + this + ", type " + mAttrs.type + ", belonging to " + mOwnerUid);
            return false;
        }
        if (mPolicyVisibility && mPolicyVisibilityAfterAnim) {
@@ -985,7 +986,8 @@ final class WindowState implements WindowManagerPolicy.WindowState {

    boolean isOtherUsersAppWindow() {
        final int type = mAttrs.type;
        if ((mOwnerUserId != mService.mCurrentUserId)
        if ((UserHandle.getUserId(mOwnerUid) != mService.mCurrentUserId)
                && (mOwnerUid != Process.SYSTEM_UID)
                && (type >= TYPE_BASE_APPLICATION) && (type <= LAST_APPLICATION_WINDOW)
                && (type != TYPE_APPLICATION_STARTING)) {
            return true;
+1 −1
Original line number Diff line number Diff line
@@ -1292,7 +1292,7 @@ class WindowStateAnimator {
    boolean performShowLocked() {
        if (mWin.isOtherUsersAppWindow()) {
            Slog.w(TAG, "Current user " + mService.mCurrentUserId + " trying to display "
                    + this + ", type " + mWin.mAttrs.type + ", belonging to " + mWin.mOwnerUserId);
                    + this + ", type " + mWin.mAttrs.type + ", belonging to " + mWin.mOwnerUid);
            return false;
        }
        if (DEBUG_VISIBILITY || (DEBUG_STARTING_WINDOW &&