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

Commit a2d7b111 authored by Craig Mautner's avatar Craig Mautner
Browse files

Fix to allow SYSTEM_UID to display windows.

Was not previously checking to make sure that the appId was not
SYSTEM_UID (1000). This caused certain system windows to fail to
appear.

Change-Id: I939dc2f8a256acb84b7c413c7e00003a89aff6d4
parent 9dc52bc4
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
@@ -1302,7 +1302,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 &&