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

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

Merge "Do not make ActivityContainer available to apps. DO NOT MERGE" into lmp-dev

parents c4418980 40f616b1
Loading
Loading
Loading
Loading
+9 −20
Original line number Original line Diff line number Diff line
@@ -17,7 +17,6 @@
package android.app;
package android.app;


import android.app.ActivityManager.StackInfo;
import android.app.ActivityManager.StackInfo;
import android.app.ProfilerInfo;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.IIntentReceiver;
import android.content.IIntentReceiver;
import android.content.IIntentSender;
import android.content.IIntentSender;
@@ -2189,17 +2188,12 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
            return true;
            return true;
        }
        }


        case GET_ACTIVITY_CONTAINER_TRANSACTION: {
        case GET_ACTIVITY_DISPLAY_ID_TRANSACTION: {
            data.enforceInterface(IActivityManager.descriptor);
            data.enforceInterface(IActivityManager.descriptor);
            IBinder activityToken = data.readStrongBinder();
            IBinder activityToken = data.readStrongBinder();
            IActivityContainer activityContainer = getEnclosingActivityContainer(activityToken);
            int displayId = getActivityDisplayId(activityToken);
            reply.writeNoException();
            reply.writeNoException();
            if (activityContainer != null) {
            reply.writeInt(displayId);
                reply.writeInt(1);
                reply.writeStrongBinder(activityContainer.asBinder());
            } else {
                reply.writeInt(0);
            }
            return true;
            return true;
        }
        }


@@ -5169,26 +5163,21 @@ class ActivityManagerProxy implements IActivityManager
        reply.recycle();
        reply.recycle();
    }
    }


    public IActivityContainer getEnclosingActivityContainer(IBinder activityToken)
    @Override
            throws RemoteException {
    public int getActivityDisplayId(IBinder activityToken) throws RemoteException {
        Parcel data = Parcel.obtain();
        Parcel data = Parcel.obtain();
        Parcel reply = Parcel.obtain();
        Parcel reply = Parcel.obtain();
        data.writeInterfaceToken(IActivityManager.descriptor);
        data.writeInterfaceToken(IActivityManager.descriptor);
        data.writeStrongBinder(activityToken);
        data.writeStrongBinder(activityToken);
        mRemote.transact(GET_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0);
        mRemote.transact(GET_ACTIVITY_DISPLAY_ID_TRANSACTION, data, reply, 0);
        reply.readException();
        reply.readException();
        final int result = reply.readInt();
        final int displayId = reply.readInt();
        final IActivityContainer res;
        if (result == 1) {
            res = IActivityContainer.Stub.asInterface(reply.readStrongBinder());
        } else {
            res = null;
        }
        data.recycle();
        data.recycle();
        reply.recycle();
        reply.recycle();
        return res;
        return displayId;
    }
    }


    @Override
    public IBinder getHomeActivityToken() throws RemoteException {
    public IBinder getHomeActivityToken() throws RemoteException {
        Parcel data = Parcel.obtain();
        Parcel data = Parcel.obtain();
        Parcel reply = Parcel.obtain();
        Parcel reply = Parcel.obtain();
+2 −4
Original line number Original line Diff line number Diff line
@@ -2312,10 +2312,7 @@ public final class ActivityThread {


        final DisplayManagerGlobal dm = DisplayManagerGlobal.getInstance();
        final DisplayManagerGlobal dm = DisplayManagerGlobal.getInstance();
        try {
        try {
            IActivityContainer container =
            int displayId = ActivityManagerNative.getDefault().getActivityDisplayId(r.token);
                    ActivityManagerNative.getDefault().getEnclosingActivityContainer(r.token);
            final int displayId =
                    container == null ? Display.DEFAULT_DISPLAY : container.getDisplayId();
            if (displayId > Display.DEFAULT_DISPLAY) {
            if (displayId > Display.DEFAULT_DISPLAY) {
                Display display = dm.getRealDisplay(displayId, r.token);
                Display display = dm.getRealDisplay(displayId, r.token);
                baseContext = appContext.createDisplayContext(display);
                baseContext = appContext.createDisplayContext(display);
@@ -2323,6 +2320,7 @@ public final class ActivityThread {
        } catch (RemoteException e) {
        } catch (RemoteException e) {
        }
        }



        // For debugging purposes, if the activity's package name contains the value of
        // For debugging purposes, if the activity's package name contains the value of
        // the "debug.use-second-display" system property as a substring, then show
        // the "debug.use-second-display" system property as a substring, then show
        // its content on a secondary display if there is one.
        // its content on a secondary display if there is one.
+2 −3
Original line number Original line Diff line number Diff line
@@ -435,8 +435,7 @@ public interface IActivityManager extends IInterface {


    public void deleteActivityContainer(IActivityContainer container) throws RemoteException;
    public void deleteActivityContainer(IActivityContainer container) throws RemoteException;


    public IActivityContainer getEnclosingActivityContainer(IBinder activityToken)
    public int getActivityDisplayId(IBinder activityToken) throws RemoteException;
            throws RemoteException;


    public IBinder getHomeActivityToken() throws RemoteException;
    public IBinder getHomeActivityToken() throws RemoteException;


@@ -746,7 +745,7 @@ public interface IActivityManager extends IInterface {
    int GET_PERSISTED_URI_PERMISSIONS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+181;
    int GET_PERSISTED_URI_PERMISSIONS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+181;
    int APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+182;
    int APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+182;
    int GET_HOME_ACTIVITY_TOKEN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+183;
    int GET_HOME_ACTIVITY_TOKEN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+183;
    int GET_ACTIVITY_CONTAINER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+184;
    int GET_ACTIVITY_DISPLAY_ID_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+184;
    int DELETE_ACTIVITY_CONTAINER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+185;
    int DELETE_ACTIVITY_CONTAINER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+185;




+5 −5
Original line number Original line Diff line number Diff line
@@ -55,6 +55,7 @@ import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.ArraySet;
import android.util.SparseIntArray;
import android.util.SparseIntArray;
import android.view.Display;
import com.android.internal.R;
import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.IAppOpsService;
import com.android.internal.app.IAppOpsService;
@@ -8721,14 +8722,13 @@ public final class ActivityManagerService extends ActivityManagerNative
    }
    }
    @Override
    @Override
    public IActivityContainer getEnclosingActivityContainer(IBinder activityToken)
    public int getActivityDisplayId(IBinder activityToken) throws RemoteException {
            throws RemoteException {
        synchronized (this) {
        synchronized (this) {
            ActivityStack stack = ActivityRecord.getStackLocked(activityToken);
            ActivityStack stack = ActivityRecord.getStackLocked(activityToken);
            if (stack != null) {
            if (stack != null && stack.mActivityContainer.isAttachedLocked()) {
                return stack.mActivityContainer;
                return stack.mActivityContainer.getDisplayId();
            }
            }
            return null;
            return Display.DEFAULT_DISPLAY;
        }
        }
    }
    }