Merge "Merge "Do not resolve ActivityInfo in navigateUpTo" into tm-qpr-dev am: 576b93c7fe" into tm-qpr-dev-plus-aosp
This commit is contained in:
committed by
Android (Google) Code Review
commit
fd71173136
@@ -8045,8 +8045,9 @@ public class Activity extends ContextThemeWrapper
|
|||||||
resultData.prepareToLeaveProcess(this);
|
resultData.prepareToLeaveProcess(this);
|
||||||
}
|
}
|
||||||
upIntent.prepareToLeaveProcess(this);
|
upIntent.prepareToLeaveProcess(this);
|
||||||
return ActivityClient.getInstance().navigateUpTo(mToken, upIntent, resultCode,
|
String resolvedType = upIntent.resolveTypeIfNeeded(getContentResolver());
|
||||||
resultData);
|
return ActivityClient.getInstance().navigateUpTo(mToken, upIntent, resolvedType,
|
||||||
|
resultCode, resultData);
|
||||||
} else {
|
} else {
|
||||||
return mParent.navigateUpToFromChild(this, upIntent);
|
return mParent.navigateUpToFromChild(this, upIntent);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -141,11 +141,11 @@ public class ActivityClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean navigateUpTo(IBinder token, Intent destIntent, int resultCode,
|
boolean navigateUpTo(IBinder token, Intent destIntent, String resolvedType, int resultCode,
|
||||||
Intent resultData) {
|
Intent resultData) {
|
||||||
try {
|
try {
|
||||||
return getActivityClientController().navigateUpTo(token, destIntent, resultCode,
|
return getActivityClientController().navigateUpTo(token, destIntent, resolvedType,
|
||||||
resultData);
|
resultCode, resultData);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
throw e.rethrowFromSystemServer();
|
throw e.rethrowFromSystemServer();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,8 +60,8 @@ interface IActivityClientController {
|
|||||||
in SizeConfigurationBuckets sizeConfigurations);
|
in SizeConfigurationBuckets sizeConfigurations);
|
||||||
boolean moveActivityTaskToBack(in IBinder token, boolean nonRoot);
|
boolean moveActivityTaskToBack(in IBinder token, boolean nonRoot);
|
||||||
boolean shouldUpRecreateTask(in IBinder token, in String destAffinity);
|
boolean shouldUpRecreateTask(in IBinder token, in String destAffinity);
|
||||||
boolean navigateUpTo(in IBinder token, in Intent target, int resultCode,
|
boolean navigateUpTo(in IBinder token, in Intent target, in String resolvedType,
|
||||||
in Intent resultData);
|
int resultCode, in Intent resultData);
|
||||||
boolean releaseActivityInstance(in IBinder token);
|
boolean releaseActivityInstance(in IBinder token);
|
||||||
boolean finishActivity(in IBinder token, int code, in Intent data, int finishTask);
|
boolean finishActivity(in IBinder token, int code, in Intent data, int finishTask);
|
||||||
boolean finishActivityAffinity(in IBinder token);
|
boolean finishActivityAffinity(in IBinder token);
|
||||||
|
|||||||
@@ -332,8 +332,8 @@ class ActivityClientController extends IActivityClientController.Stub {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean navigateUpTo(IBinder token, Intent destIntent, int resultCode,
|
public boolean navigateUpTo(IBinder token, Intent destIntent, String resolvedType,
|
||||||
Intent resultData) {
|
int resultCode, Intent resultData) {
|
||||||
final ActivityRecord r;
|
final ActivityRecord r;
|
||||||
synchronized (mGlobalLock) {
|
synchronized (mGlobalLock) {
|
||||||
r = ActivityRecord.isInRootTaskLocked(token);
|
r = ActivityRecord.isInRootTaskLocked(token);
|
||||||
@@ -348,7 +348,7 @@ class ActivityClientController extends IActivityClientController.Stub {
|
|||||||
|
|
||||||
synchronized (mGlobalLock) {
|
synchronized (mGlobalLock) {
|
||||||
return r.getRootTask().navigateUpTo(
|
return r.getRootTask().navigateUpTo(
|
||||||
r, destIntent, destGrants, resultCode, resultData, resultGrants);
|
r, destIntent, resolvedType, destGrants, resultCode, resultData, resultGrants);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5330,8 +5330,9 @@ class Task extends TaskFragment {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean navigateUpTo(ActivityRecord srec, Intent destIntent, NeededUriGrants destGrants,
|
boolean navigateUpTo(ActivityRecord srec, Intent destIntent, String resolvedType,
|
||||||
int resultCode, Intent resultData, NeededUriGrants resultGrants) {
|
NeededUriGrants destGrants, int resultCode, Intent resultData,
|
||||||
|
NeededUriGrants resultGrants) {
|
||||||
if (!srec.attachedToProcess()) {
|
if (!srec.attachedToProcess()) {
|
||||||
// Nothing to do if the caller is not attached, because this method should be called
|
// Nothing to do if the caller is not attached, because this method should be called
|
||||||
// from an alive activity.
|
// from an alive activity.
|
||||||
@@ -5424,15 +5425,12 @@ class Task extends TaskFragment {
|
|||||||
srec.packageName);
|
srec.packageName);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
try {
|
|
||||||
ActivityInfo aInfo = AppGlobals.getPackageManager().getActivityInfo(
|
|
||||||
destIntent.getComponent(), ActivityManagerService.STOCK_PM_FLAGS,
|
|
||||||
srec.mUserId);
|
|
||||||
// TODO(b/64750076): Check if calling pid should really be -1.
|
// TODO(b/64750076): Check if calling pid should really be -1.
|
||||||
final int res = mAtmService.getActivityStartController()
|
final int res = mAtmService.getActivityStartController()
|
||||||
.obtainStarter(destIntent, "navigateUpTo")
|
.obtainStarter(destIntent, "navigateUpTo")
|
||||||
|
.setResolvedType(resolvedType)
|
||||||
|
.setUserId(srec.mUserId)
|
||||||
.setCaller(srec.app.getThread())
|
.setCaller(srec.app.getThread())
|
||||||
.setActivityInfo(aInfo)
|
|
||||||
.setResultTo(parent.token)
|
.setResultTo(parent.token)
|
||||||
.setCallingPid(-1)
|
.setCallingPid(-1)
|
||||||
.setCallingUid(callingUid)
|
.setCallingUid(callingUid)
|
||||||
@@ -5443,9 +5441,6 @@ class Task extends TaskFragment {
|
|||||||
.setComponentSpecified(true)
|
.setComponentSpecified(true)
|
||||||
.execute();
|
.execute();
|
||||||
foundParentInTask = res == ActivityManager.START_SUCCESS;
|
foundParentInTask = res == ActivityManager.START_SUCCESS;
|
||||||
} catch (RemoteException e) {
|
|
||||||
foundParentInTask = false;
|
|
||||||
}
|
|
||||||
parent.finishIfPossible(resultCode, resultData, resultGrants,
|
parent.finishIfPossible(resultCode, resultData, resultGrants,
|
||||||
"navigate-top", true /* oomAdj */);
|
"navigate-top", true /* oomAdj */);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1312,13 +1312,15 @@ public class RootTaskTests extends WindowTestsBase {
|
|||||||
secondActivity.app.setThread(null);
|
secondActivity.app.setThread(null);
|
||||||
// This should do nothing from a non-attached caller.
|
// This should do nothing from a non-attached caller.
|
||||||
assertFalse(task.navigateUpTo(secondActivity /* source record */,
|
assertFalse(task.navigateUpTo(secondActivity /* source record */,
|
||||||
firstActivity.intent /* destIntent */, null /* destGrants */,
|
firstActivity.intent /* destIntent */, null /* resolvedType */,
|
||||||
0 /* resultCode */, null /* resultData */, null /* resultGrants */));
|
null /* destGrants */, 0 /* resultCode */, null /* resultData */,
|
||||||
|
null /* resultGrants */));
|
||||||
|
|
||||||
secondActivity.app.setThread(thread);
|
secondActivity.app.setThread(thread);
|
||||||
assertTrue(task.navigateUpTo(secondActivity /* source record */,
|
assertTrue(task.navigateUpTo(secondActivity /* source record */,
|
||||||
firstActivity.intent /* destIntent */, null /* destGrants */,
|
firstActivity.intent /* destIntent */, null /* resolvedType */,
|
||||||
0 /* resultCode */, null /* resultData */, null /* resultGrants */));
|
null /* destGrants */, 0 /* resultCode */, null /* resultData */,
|
||||||
|
null /* resultGrants */));
|
||||||
// The firstActivity uses default launch mode, so the activities between it and itself will
|
// The firstActivity uses default launch mode, so the activities between it and itself will
|
||||||
// be finished.
|
// be finished.
|
||||||
assertTrue(secondActivity.finishing);
|
assertTrue(secondActivity.finishing);
|
||||||
|
|||||||
Reference in New Issue
Block a user