am a94e4297: Merge "Do not make ActivityContainer available to apps. DO NOT MERGE" into lmp-mr1-dev
* commit 'a94e42970d4e664e193cde0cf2700cb7e15961c9': Do not make ActivityContainer available to apps. DO NOT MERGE
This commit is contained in:
@@ -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;
|
||||
@@ -2209,17 +2208,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;
|
||||
}
|
||||
|
||||
@@ -5238,26 +5232,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();
|
||||
|
||||
@@ -2339,10 +2339,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();
|
||||
final int displayId = ActivityManagerNative.getDefault().getActivityDisplayId(r.token);
|
||||
if (displayId > Display.DEFAULT_DISPLAY) {
|
||||
Display display = dm.getRealDisplay(displayId, r.token);
|
||||
baseContext = appContext.createDisplayContext(display);
|
||||
|
||||
@@ -438,8 +438,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;
|
||||
|
||||
@@ -754,7 +753,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;
|
||||
|
||||
|
||||
|
||||
@@ -57,6 +57,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;
|
||||
@@ -8663,14 +8664,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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user