Merge "Refactor start activity methods"
This commit is contained in:
@@ -284,7 +284,7 @@ public class ActivityStartController {
|
||||
.setRequestCode(requestCode)
|
||||
.setStartFlags(startFlags)
|
||||
.setActivityOptions(options)
|
||||
.setMayWait(userId)
|
||||
.setUserId(userId)
|
||||
.setInTask(inTask)
|
||||
.setOriginatingPendingIntent(originatingPendingIntent)
|
||||
.setAllowBackgroundActivityStart(allowBackgroundActivityStart)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1061,7 +1061,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
|
||||
.setStartFlags(startFlags)
|
||||
.setProfilerInfo(profilerInfo)
|
||||
.setActivityOptions(bOptions)
|
||||
.setMayWait(userId)
|
||||
.setUserId(userId)
|
||||
.execute();
|
||||
|
||||
}
|
||||
@@ -1232,7 +1232,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
|
||||
.setRequestCode(requestCode)
|
||||
.setStartFlags(startFlags)
|
||||
.setActivityOptions(bOptions)
|
||||
.setMayWait(userId)
|
||||
.setUserId(userId)
|
||||
.setProfilerInfo(profilerInfo)
|
||||
.setWaitResult(res)
|
||||
.execute();
|
||||
@@ -1259,7 +1259,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
|
||||
.setStartFlags(startFlags)
|
||||
.setGlobalConfiguration(config)
|
||||
.setActivityOptions(bOptions)
|
||||
.setMayWait(userId)
|
||||
.setUserId(userId)
|
||||
.execute();
|
||||
}
|
||||
}
|
||||
@@ -1389,7 +1389,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
|
||||
.setRequestCode(requestCode)
|
||||
.setStartFlags(startFlags)
|
||||
.setActivityOptions(bOptions)
|
||||
.setMayWait(userId)
|
||||
.setUserId(userId)
|
||||
.setIgnoreTargetSecurity(ignoreTargetSecurity)
|
||||
.setFilterCallingUid(isResolver ? 0 /* system */ : targetUid)
|
||||
// The target may well be in the background, which would normally prevent it
|
||||
@@ -1437,7 +1437,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
|
||||
.setStartFlags(startFlags)
|
||||
.setProfilerInfo(profilerInfo)
|
||||
.setActivityOptions(bOptions)
|
||||
.setMayWait(userId)
|
||||
.setUserId(userId)
|
||||
.setAllowBackgroundActivityStart(true)
|
||||
.execute();
|
||||
}
|
||||
@@ -1453,7 +1453,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
|
||||
.setCallingPackage(callingPackage)
|
||||
.setResolvedType(resolvedType)
|
||||
.setActivityOptions(bOptions)
|
||||
.setMayWait(userId)
|
||||
.setUserId(userId)
|
||||
.setAllowBackgroundActivityStart(true)
|
||||
.execute();
|
||||
}
|
||||
|
||||
@@ -155,7 +155,7 @@ class AppTaskImpl extends IAppTask.Stub {
|
||||
.setCallingPackage(callingPackage)
|
||||
.setResolvedType(resolvedType)
|
||||
.setActivityOptions(bOptions)
|
||||
.setMayWait(callingUser)
|
||||
.setUserId(callingUser)
|
||||
.setInTask(tr)
|
||||
.execute();
|
||||
}
|
||||
|
||||
@@ -452,7 +452,7 @@ class RecentsAnimation implements RecentsAnimationCallbacks,
|
||||
.setCallingUid(mRecentsUid)
|
||||
.setCallingPackage(mRecentsComponent.getPackageName())
|
||||
.setActivityOptions(new SafeActivityOptions(options))
|
||||
.setMayWait(mUserId)
|
||||
.setUserId(mUserId)
|
||||
.execute();
|
||||
}
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.never;
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spy;
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.times;
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
|
||||
import static com.android.server.wm.ActivityDisplay.POSITION_BOTTOM;
|
||||
@@ -99,6 +100,7 @@ public class ActivityStarterTests extends ActivityTestsBase {
|
||||
private ActivityStarter mStarter;
|
||||
private ActivityStartController mController;
|
||||
private ActivityMetricsLogger mActivityMetricsLogger;
|
||||
private PackageManagerInternal mMockPackageManager;
|
||||
|
||||
private static final int PRECONDITION_NO_CALLER_APP = 1;
|
||||
private static final int PRECONDITION_NO_INTENT_COMPONENT = 1 << 1;
|
||||
@@ -359,17 +361,20 @@ public class ActivityStarterTests extends ActivityTestsBase {
|
||||
}
|
||||
|
||||
// Set up mock package manager internal and make sure no unmocked methods are called
|
||||
PackageManagerInternal mockPackageManager = mock(PackageManagerInternal.class,
|
||||
mMockPackageManager = mock(PackageManagerInternal.class,
|
||||
invocation -> {
|
||||
throw new RuntimeException("Not stubbed");
|
||||
});
|
||||
doReturn(mockPackageManager).when(mService).getPackageManagerInternalLocked();
|
||||
doReturn(mMockPackageManager).when(mService).getPackageManagerInternalLocked();
|
||||
doReturn(false).when(mMockPackageManager).isInstantAppInstallerComponent(any());
|
||||
doReturn(null).when(mMockPackageManager).resolveIntent(any(), any(), anyInt(), anyInt(),
|
||||
anyBoolean(), anyInt());
|
||||
|
||||
// Never review permissions
|
||||
doReturn(false).when(mockPackageManager).isPermissionsReviewRequired(any(), anyInt());
|
||||
doNothing().when(mockPackageManager).grantImplicitAccess(
|
||||
doReturn(false).when(mMockPackageManager).isPermissionsReviewRequired(any(), anyInt());
|
||||
doNothing().when(mMockPackageManager).grantImplicitAccess(
|
||||
anyInt(), any(), anyInt(), anyInt());
|
||||
doNothing().when(mockPackageManager).notifyPackageUse(anyString(), anyInt());
|
||||
doNothing().when(mMockPackageManager).notifyPackageUse(anyString(), anyInt());
|
||||
|
||||
final Intent intent = new Intent();
|
||||
intent.addFlags(launchFlags);
|
||||
@@ -913,4 +918,46 @@ public class ActivityStarterTests extends ActivityTestsBase {
|
||||
verify(recentTasks, times(1)).setFreezeTaskListReordering();
|
||||
verify(recentTasks, times(1)).resetFreezeTaskListReorderingOnTimeout();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoActivityInfo() {
|
||||
final ActivityStarter starter = prepareStarter(0 /* flags */);
|
||||
spyOn(starter.mRequest);
|
||||
|
||||
final Intent intent = new Intent();
|
||||
intent.setComponent(ActivityBuilder.getDefaultComponent());
|
||||
starter.setReason("testNoActivityInfo").setIntent(intent)
|
||||
.setActivityInfo(null).execute();
|
||||
verify(starter.mRequest).resolveActivity(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResolveEphemeralInstaller() {
|
||||
final ActivityStarter starter = prepareStarter(0 /* flags */);
|
||||
final Intent intent = new Intent();
|
||||
intent.setComponent(ActivityBuilder.getDefaultComponent());
|
||||
|
||||
doReturn(true).when(mMockPackageManager).isInstantAppInstallerComponent(any());
|
||||
starter.setIntent(intent).mRequest.resolveActivity(mService.mStackSupervisor);
|
||||
|
||||
// Make sure the client intent won't be modified.
|
||||
assertThat(intent.getComponent()).isNotNull();
|
||||
assertThat(starter.getIntent().getComponent()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNotAllowIntentWithFd() {
|
||||
final ActivityStarter starter = prepareStarter(0 /* flags */);
|
||||
final Intent intent = spy(new Intent());
|
||||
intent.setComponent(ActivityBuilder.getDefaultComponent());
|
||||
doReturn(true).when(intent).hasFileDescriptors();
|
||||
|
||||
boolean exceptionCaught = false;
|
||||
try {
|
||||
starter.setIntent(intent).execute();
|
||||
} catch (IllegalArgumentException ex) {
|
||||
exceptionCaught = true;
|
||||
}
|
||||
assertThat(exceptionCaught).isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user