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

Commit 83a63bac authored by Craig Mautner's avatar Craig Mautner Committed by Android Git Automerger
Browse files

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

* commit '8fa394fa':
  Do not make ActivityContainer available to apps. DO NOT MERGE
parents 14fcef3b 8fa394fa
Loading
Loading
Loading
Loading
+9 −20
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package android.app;

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

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

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

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

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

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


        // 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
        // its content on a secondary display if there is one.
+2 −3
Original line number Diff line number Diff line
@@ -435,8 +435,7 @@ public interface IActivityManager extends IInterface {

    public void deleteActivityContainer(IActivityContainer container) throws RemoteException;

    public IActivityContainer getEnclosingActivityContainer(IBinder activityToken)
            throws RemoteException;
    public int getActivityDisplayId(IBinder activityToken) 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 APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+182;
    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;


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