Loading services/core/java/com/android/server/am/ActivityManagerService.java +48 −28 Original line number Diff line number Diff line Loading @@ -4136,7 +4136,8 @@ public class ActivityManagerService extends IActivityManager.Stub ri.activityInfo.packageName, ri.activityInfo.name)); mActivityStarter.startActivityLocked(null, intent, null /*ephemeralIntent*/, null, ri.activityInfo, null /*rInfo*/, null, null, null, null, 0, 0, 0, null, 0, 0, 0, null, false, false, null, null, null); null, 0, 0, 0, null, false, false, null, null, null, "startSetupActivity"); } } } Loading Loading @@ -4475,8 +4476,9 @@ public class ActivityManagerService extends IActivityManager.Stub container.checkEmbeddedAllowedInner(userId, intent, mimeType); intent.addFlags(FORCE_NEW_TASK_FLAGS); return mActivityStarter.startActivityMayWait(null, -1, null, intent, mimeType, null, null, null, null, 0, 0, null, null, null, null, false, userId, container, null); return mActivityStarter.startActivityMayWait(null, -1, null, intent, mimeType, null, null, null, null, 0, 0, null, null, null, null, false, userId, container, null, "startActivity"); } @Override Loading @@ -4489,7 +4491,8 @@ public class ActivityManagerService extends IActivityManager.Stub // TODO: Switch to user app stacks here. return mActivityStarter.startActivityMayWait(caller, -1, callingPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, profilerInfo, null, null, bOptions, false, userId, null, null); profilerInfo, null, null, bOptions, false, userId, null, null, "startActivityAsUser"); } @Override Loading Loading @@ -4552,7 +4555,8 @@ public class ActivityManagerService extends IActivityManager.Stub try { int ret = mActivityStarter.startActivityMayWait(null, targetUid, targetPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, null, null, null, bOptions, ignoreTargetSecurity, userId, null, null); null, null, bOptions, ignoreTargetSecurity, userId, null, null, "startActivityAsCaller"); return ret; } catch (SecurityException e) { // XXX need to figure out how to propagate to original app. Loading Loading @@ -4581,7 +4585,7 @@ public class ActivityManagerService extends IActivityManager.Stub // TODO: Switch to user app stacks here. mActivityStarter.startActivityMayWait(caller, -1, callingPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, profilerInfo, res, null, bOptions, false, userId, null, null); bOptions, false, userId, null, null, "startActivityAndWait"); return res; } Loading @@ -4595,7 +4599,7 @@ public class ActivityManagerService extends IActivityManager.Stub // TODO: Switch to user app stacks here. int ret = mActivityStarter.startActivityMayWait(caller, -1, callingPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, null, null, config, bOptions, false, userId, null, null); null, null, config, bOptions, false, userId, null, null, "startActivityWithConfig"); return ret; } Loading Loading @@ -4652,7 +4656,7 @@ public class ActivityManagerService extends IActivityManager.Stub // TODO: Switch to user app stacks here. return mActivityStarter.startActivityMayWait(null, callingUid, callingPackage, intent, resolvedType, session, interactor, null, null, 0, startFlags, profilerInfo, null, null, bOptions, false, userId, null, null); null, bOptions, false, userId, null, null, "startVoiceActivity"); } @Override Loading @@ -4671,7 +4675,7 @@ public class ActivityManagerService extends IActivityManager.Stub ALLOW_FULL_ONLY, "startAssistantActivity", null); return mActivityStarter.startActivityMayWait(null, callingUid, callingPackage, intent, resolvedType, null, null, null, null, 0, 0, null, null, null, bOptions, false, userId, null, null); userId, null, null, "startAssistantActivity"); } @Override Loading Loading @@ -4844,7 +4848,7 @@ public class ActivityManagerService extends IActivityManager.Stub null /*ephemeralIntent*/, r.resolvedType, aInfo, null /*rInfo*/, null, null, resultTo != null ? resultTo.appToken : null, resultWho, requestCode, -1, r.launchedFromUid, r.launchedFromPackage, -1, r.launchedFromUid, 0, options, false, false, null, null, null); false, false, null, null, null, "startNextMatchingActivity"); Binder.restoreCallingIdentity(origId); r.finishing = wasFinishing; Loading Loading @@ -4876,7 +4880,7 @@ public class ActivityManagerService extends IActivityManager.Stub final int startActivityInPackage(int uid, String callingPackage, Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode, int startFlags, Bundle bOptions, int userId, IActivityContainer container, TaskRecord inTask) { IActivityContainer container, TaskRecord inTask, String reason) { userId = mUserController.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), userId, false, ALLOW_FULL_ONLY, "startActivityInPackage", null); Loading @@ -4884,7 +4888,7 @@ public class ActivityManagerService extends IActivityManager.Stub // TODO: Switch to user app stacks here. int ret = mActivityStarter.startActivityMayWait(null, uid, callingPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, null, null, null, bOptions, false, userId, container, inTask); null, null, null, bOptions, false, userId, container, inTask, reason); return ret; } Loading @@ -4892,12 +4896,13 @@ public class ActivityManagerService extends IActivityManager.Stub public final int startActivities(IApplicationThread caller, String callingPackage, Intent[] intents, String[] resolvedTypes, IBinder resultTo, Bundle bOptions, int userId) { enforceNotIsolatedCaller("startActivities"); final String reason = "startActivities"; enforceNotIsolatedCaller(reason); userId = mUserController.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), userId, false, ALLOW_FULL_ONLY, "startActivity", null); userId, false, ALLOW_FULL_ONLY, reason, null); // TODO: Switch to user app stacks here. int ret = mActivityStarter.startActivities(caller, -1, callingPackage, intents, resolvedTypes, resultTo, bOptions, userId); resolvedTypes, resultTo, bOptions, userId, reason); return ret; } Loading @@ -4905,11 +4910,12 @@ public class ActivityManagerService extends IActivityManager.Stub Intent[] intents, String[] resolvedTypes, IBinder resultTo, Bundle bOptions, int userId) { final String reason = "startActivityInPackage"; userId = mUserController.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), userId, false, ALLOW_FULL_ONLY, "startActivityInPackage", null); userId, false, ALLOW_FULL_ONLY, reason, null); // TODO: Switch to user app stacks here. int ret = mActivityStarter.startActivities(null, uid, callingPackage, intents, resolvedTypes, resultTo, bOptions, userId); resultTo, bOptions, userId, reason); return ret; } Loading Loading @@ -14941,6 +14947,10 @@ public class ActivityManagerService extends IActivityManager.Stub synchronized (this) { dumpLastANRLocked(pw); } } else if ("starter".equals(cmd)) { synchronized (this) { dumpActivityStarterLocked(pw); } } else if ("recents".equals(cmd) || "r".equals(cmd)) { synchronized (this) { dumpRecentsLocked(fd, pw, args, opti, true, dumpPackage); Loading Loading @@ -15174,6 +15184,11 @@ public class ActivityManagerService extends IActivityManager.Stub if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); } dumpActivityStarterLocked(pw); pw.println(); if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); } dumpActivitiesLocked(fd, pw, args, opti, dumpAll, dumpClient, dumpPackage); if (mAssociations.size() > 0) { pw.println(); Loading Loading @@ -15239,6 +15254,11 @@ public class ActivityManagerService extends IActivityManager.Stub if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); } dumpActivityStarterLocked(pw); pw.println(); if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); } dumpActivitiesLocked(fd, pw, args, opti, dumpAll, dumpClient, dumpPackage); if (mAssociations.size() > 0) { pw.println(); Loading @@ -15258,14 +15278,19 @@ public class ActivityManagerService extends IActivityManager.Stub } private void dumpLastANRLocked(PrintWriter pw) { if (mLastANRState == null) { pw.println("ACTIVITY MANAGER ACTIVITIES (dumpsys activity lastanr)"); if (mLastANRState == null) { pw.println(" <no ANR has occurred since boot>"); } else { pw.println(mLastANRState); } } private void dumpActivityStarterLocked(PrintWriter pw) { pw.println("ACTIVITY MANAGER ACTIVITIES (dumpsys activity starter)"); mActivityStarter.dump(pw, ""); } void dumpActivitiesLocked(FileDescriptor fd, PrintWriter pw, String[] args, int opti, boolean dumpAll, boolean dumpClient, String dumpPackage) { dumpActivitiesLocked(fd, pw, args, opti, dumpAll, dumpClient, dumpPackage, Loading @@ -15292,7 +15317,6 @@ public class ActivityManagerService extends IActivityManager.Stub if (needSep) { pw.println(); } needSep = true; printedAnything = true; mStackSupervisor.dump(pw, " "); } Loading Loading @@ -24015,17 +24039,13 @@ public class ActivityManagerService extends IActivityManager.Stub if (reason != null) { pw.println(" Reason: " + reason); } pw.println(" mLastHomeActivityStartResult: " + mActivityStarter.mLastHomeActivityStartResult); final ActivityRecord r = mActivityStarter.mLastHomeActivityStartRecord[0]; if (r != null) { pw.println(" mLastHomeActivityStartRecord:"); r.dump(pw, " "); } pw.println(); mActivityStarter.dump(pw, " "); pw.println(); pw.println("-------------------------------------------------------------------------------"); dumpActivitiesLocked(null /* fd */, pw, null /* args */, 0 /* opti */, true /* dumpAll */, false /* dumpClient */, null /* dumpPackage */, "ACTIVITY MANAGER ACTIVITIES (dumpsys activity lastanr)"); "" /* header */); pw.println(); pw.close(); Loading Loading @@ -24267,7 +24287,7 @@ public class ActivityManagerService extends IActivityManager.Stub } return mActivityStarter.startActivityMayWait(appThread, -1, callingPackage, intent, resolvedType, null, null, null, null, 0, 0, null, null, null, bOptions, false, callingUser, null, tr); null, bOptions, false, callingUser, null, tr, "AppTaskImpl"); } @Override services/core/java/com/android/server/am/ActivityStack.java +1 −1 Original line number Diff line number Diff line Loading @@ -3920,7 +3920,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai destIntent, null /*ephemeralIntent*/, null, aInfo, null /*rInfo*/, null, null, parent.appToken, null, 0, -1, parent.launchedFromUid, parent.launchedFromPackage, -1, parent.launchedFromUid, 0, null, false, true, null, null, null); false, true, null, null, null, "navigateUpTo"); foundParentInTask = res == ActivityManager.START_SUCCESS; } catch (RemoteException e) { foundParentInTask = false; Loading services/core/java/com/android/server/am/ActivityStackSupervisor.java +1 −1 Original line number Diff line number Diff line Loading @@ -5180,7 +5180,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY); userId = task.userId; int result = mService.startActivityInPackage(callingUid, callingPackage, intent, null, null, null, 0, 0, bOptions, userId, null, task); null, null, 0, 0, bOptions, userId, null, task, "startActivityFromRecents"); if (launchStackId == DOCKED_STACK_ID) { setResizingDuringAnimation(task); } Loading services/core/java/com/android/server/am/ActivityStarter.java +86 −8 Original line number Diff line number Diff line Loading @@ -115,6 +115,7 @@ import android.os.SystemClock; import android.os.UserHandle; import android.os.UserManager; import android.service.voice.IVoiceInteractionSession; import android.text.TextUtils; import android.util.EventLog; import android.util.Slog; Loading @@ -124,7 +125,10 @@ import com.android.server.am.ActivityStackSupervisor.PendingActivityLaunch; import com.android.server.pm.InstantAppResolver; import com.android.server.wm.WindowManagerService; import java.io.PrintWriter; import java.text.DateFormat; import java.util.ArrayList; import java.util.Date; /** * Controller for interpreting how and then launching activities. Loading Loading @@ -189,9 +193,17 @@ class ActivityStarter { private boolean mUsingVr2dDisplay; // Last home activity record we attempted to start final ActivityRecord[] mLastHomeActivityStartRecord = new ActivityRecord[1]; private final ActivityRecord[] mLastHomeActivityStartRecord = new ActivityRecord[1]; // The result of the last home activity we attempted to start. int mLastHomeActivityStartResult; private int mLastHomeActivityStartResult; // Last activity record we attempted to start private final ActivityRecord[] mLastStartActivityRecord = new ActivityRecord[1]; // The result of the last activity we attempted to start. private int mLastStartActivityResult; // Time in milli seconds we attempted to start the last activity. private long mLastStartActivityTimeMs; // The reason we were trying to start the last activity private String mLastStartReason; private void reset() { mStartActivity = null; Loading Loading @@ -241,7 +253,37 @@ class ActivityStarter { mUsingVr2dDisplay = false; } final int startActivityLocked(IApplicationThread caller, Intent intent, Intent ephemeralIntent, int startActivityLocked(IApplicationThread caller, Intent intent, Intent ephemeralIntent, String resolvedType, ActivityInfo aInfo, ResolveInfo rInfo, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, IBinder resultTo, String resultWho, int requestCode, int callingPid, int callingUid, String callingPackage, int realCallingPid, int realCallingUid, int startFlags, ActivityOptions options, boolean ignoreTargetSecurity, boolean componentSpecified, ActivityRecord[] outActivity, ActivityStackSupervisor.ActivityContainer container, TaskRecord inTask, String reason) { if (TextUtils.isEmpty(reason)) { throw new IllegalArgumentException("Need to specify a reason."); } mLastStartReason = reason; mLastStartActivityTimeMs = System.currentTimeMillis(); mLastStartActivityRecord[0] = null; mLastStartActivityResult = startActivity(caller, intent, ephemeralIntent, resolvedType, aInfo, rInfo, voiceSession, voiceInteractor, resultTo, resultWho, requestCode, callingPid, callingUid, callingPackage, realCallingPid, realCallingUid, startFlags, options, ignoreTargetSecurity, componentSpecified, mLastStartActivityRecord, container, inTask); if (outActivity != null) { // mLastStartActivityRecord[0] is set in the call to startActivity above. outActivity[0] = mLastStartActivityRecord[0]; } return mLastStartActivityResult; } /** DO NOT call this method directly. Use {@link #startActivityLocked} instead. */ private int startActivity(IApplicationThread caller, Intent intent, Intent ephemeralIntent, String resolvedType, ActivityInfo aInfo, ResolveInfo rInfo, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, IBinder resultTo, String resultWho, int requestCode, int callingPid, int callingUid, Loading Loading @@ -604,7 +646,7 @@ class ActivityStarter { null /*callingPackage*/, 0 /*realCallingPid*/, 0 /*realCallingUid*/, 0 /*startFlags*/, null /*options*/, false /*ignoreTargetSecurity*/, false /*componentSpecified*/, mLastHomeActivityStartRecord /*outActivity*/, null /*container*/, null /*inTask*/); null /*container*/, null /*inTask*/, "startHomeActivity: " + reason); if (mSupervisor.inResumeTopActivity) { // If we are in resume section already, home activity will be initialized, but not // resumed (to avoid recursive resume) and will stay that way until something pokes it Loading @@ -629,7 +671,7 @@ class ActivityStarter { IBinder resultTo, String resultWho, int requestCode, int startFlags, ProfilerInfo profilerInfo, WaitResult outResult, Configuration globalConfig, Bundle bOptions, boolean ignoreTargetSecurity, int userId, IActivityContainer iContainer, TaskRecord inTask) { IActivityContainer iContainer, TaskRecord inTask, String reason) { // Refuse possible leaked file descriptors if (intent != null && intent.hasFileDescriptors()) { throw new IllegalArgumentException("File descriptors passed in Intent"); Loading Loading @@ -784,7 +826,7 @@ class ActivityStarter { resultTo, resultWho, requestCode, callingPid, callingUid, callingPackage, realCallingPid, realCallingUid, startFlags, options, ignoreTargetSecurity, componentSpecified, outRecord, container, inTask); inTask, reason); Binder.restoreCallingIdentity(origId); Loading Loading @@ -847,7 +889,7 @@ class ActivityStarter { final int startActivities(IApplicationThread caller, int callingUid, String callingPackage, Intent[] intents, String[] resolvedTypes, IBinder resultTo, Bundle bOptions, int userId) { Bundle bOptions, int userId, String reason) { if (intents == null) { throw new NullPointerException("intents is null"); } Loading Loading @@ -909,7 +951,7 @@ class ActivityStarter { resolvedTypes[i], aInfo, null /*rInfo*/, null, null, resultTo, null, -1, callingPid, callingUid, callingPackage, realCallingPid, realCallingUid, 0, options, false, componentSpecified, outActivity, null, null); options, false, componentSpecified, outActivity, null, null, reason); if (res < 0) { return res; } Loading Loading @@ -2261,4 +2303,40 @@ class ActivityStarter { } return didSomething; } void dump(PrintWriter pw, String prefix) { pw.println(prefix + "ActivityStarter:"); prefix = prefix + " "; pw.println(prefix + "mLastStartReason=" + mLastStartReason); pw.println(prefix + "mLastStartActivityTimeMs=" + DateFormat.getDateTimeInstance().format(new Date(mLastStartActivityTimeMs))); pw.println(prefix + "mLastStartActivityResult=" + mLastStartActivityResult); ActivityRecord r = mLastStartActivityRecord[0]; if (r != null) { pw.println(prefix + "mLastStartActivityRecord:"); r.dump(pw, prefix + " "); } pw.println(prefix + "mLastHomeActivityStartResult=" + mLastHomeActivityStartResult); r = mLastHomeActivityStartRecord[0]; if (r != null) { pw.println(prefix + "mLastHomeActivityStartRecord:"); r.dump(pw, prefix + " "); } if (mStartActivity != null) { pw.println(prefix + "mStartActivity:"); mStartActivity.dump(pw, prefix + " "); } if (mIntent != null) { pw.println(prefix + "mIntent=" + mIntent); } if (mOptions != null) { pw.println(prefix + "mOptions=" + mOptions); } pw.println(prefix + "mLaunchSingleTop=" + mLaunchSingleTop + " mLaunchSingleInstance=" + mLaunchSingleInstance + " mLaunchSingleTask=" + mLaunchSingleTask + " mLaunchFlags=0x" + Integer.toHexString(mLaunchFlags) + " mDoResume=" + mDoResume + " mAddingToTask=" + mAddingToTask); } } services/core/java/com/android/server/am/AppErrors.java +1 −1 Original line number Diff line number Diff line Loading @@ -411,7 +411,7 @@ class AppErrors { task.mCallingPackage, task.intent, null, null, null, 0, 0, ActivityOptions.makeBasic().toBundle(), task.userId, null, null); task.userId, null, null, "AppErrors"); } } } Loading Loading
services/core/java/com/android/server/am/ActivityManagerService.java +48 −28 Original line number Diff line number Diff line Loading @@ -4136,7 +4136,8 @@ public class ActivityManagerService extends IActivityManager.Stub ri.activityInfo.packageName, ri.activityInfo.name)); mActivityStarter.startActivityLocked(null, intent, null /*ephemeralIntent*/, null, ri.activityInfo, null /*rInfo*/, null, null, null, null, 0, 0, 0, null, 0, 0, 0, null, false, false, null, null, null); null, 0, 0, 0, null, false, false, null, null, null, "startSetupActivity"); } } } Loading Loading @@ -4475,8 +4476,9 @@ public class ActivityManagerService extends IActivityManager.Stub container.checkEmbeddedAllowedInner(userId, intent, mimeType); intent.addFlags(FORCE_NEW_TASK_FLAGS); return mActivityStarter.startActivityMayWait(null, -1, null, intent, mimeType, null, null, null, null, 0, 0, null, null, null, null, false, userId, container, null); return mActivityStarter.startActivityMayWait(null, -1, null, intent, mimeType, null, null, null, null, 0, 0, null, null, null, null, false, userId, container, null, "startActivity"); } @Override Loading @@ -4489,7 +4491,8 @@ public class ActivityManagerService extends IActivityManager.Stub // TODO: Switch to user app stacks here. return mActivityStarter.startActivityMayWait(caller, -1, callingPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, profilerInfo, null, null, bOptions, false, userId, null, null); profilerInfo, null, null, bOptions, false, userId, null, null, "startActivityAsUser"); } @Override Loading Loading @@ -4552,7 +4555,8 @@ public class ActivityManagerService extends IActivityManager.Stub try { int ret = mActivityStarter.startActivityMayWait(null, targetUid, targetPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, null, null, null, bOptions, ignoreTargetSecurity, userId, null, null); null, null, bOptions, ignoreTargetSecurity, userId, null, null, "startActivityAsCaller"); return ret; } catch (SecurityException e) { // XXX need to figure out how to propagate to original app. Loading Loading @@ -4581,7 +4585,7 @@ public class ActivityManagerService extends IActivityManager.Stub // TODO: Switch to user app stacks here. mActivityStarter.startActivityMayWait(caller, -1, callingPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, profilerInfo, res, null, bOptions, false, userId, null, null); bOptions, false, userId, null, null, "startActivityAndWait"); return res; } Loading @@ -4595,7 +4599,7 @@ public class ActivityManagerService extends IActivityManager.Stub // TODO: Switch to user app stacks here. int ret = mActivityStarter.startActivityMayWait(caller, -1, callingPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, null, null, config, bOptions, false, userId, null, null); null, null, config, bOptions, false, userId, null, null, "startActivityWithConfig"); return ret; } Loading Loading @@ -4652,7 +4656,7 @@ public class ActivityManagerService extends IActivityManager.Stub // TODO: Switch to user app stacks here. return mActivityStarter.startActivityMayWait(null, callingUid, callingPackage, intent, resolvedType, session, interactor, null, null, 0, startFlags, profilerInfo, null, null, bOptions, false, userId, null, null); null, bOptions, false, userId, null, null, "startVoiceActivity"); } @Override Loading @@ -4671,7 +4675,7 @@ public class ActivityManagerService extends IActivityManager.Stub ALLOW_FULL_ONLY, "startAssistantActivity", null); return mActivityStarter.startActivityMayWait(null, callingUid, callingPackage, intent, resolvedType, null, null, null, null, 0, 0, null, null, null, bOptions, false, userId, null, null); userId, null, null, "startAssistantActivity"); } @Override Loading Loading @@ -4844,7 +4848,7 @@ public class ActivityManagerService extends IActivityManager.Stub null /*ephemeralIntent*/, r.resolvedType, aInfo, null /*rInfo*/, null, null, resultTo != null ? resultTo.appToken : null, resultWho, requestCode, -1, r.launchedFromUid, r.launchedFromPackage, -1, r.launchedFromUid, 0, options, false, false, null, null, null); false, false, null, null, null, "startNextMatchingActivity"); Binder.restoreCallingIdentity(origId); r.finishing = wasFinishing; Loading Loading @@ -4876,7 +4880,7 @@ public class ActivityManagerService extends IActivityManager.Stub final int startActivityInPackage(int uid, String callingPackage, Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode, int startFlags, Bundle bOptions, int userId, IActivityContainer container, TaskRecord inTask) { IActivityContainer container, TaskRecord inTask, String reason) { userId = mUserController.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), userId, false, ALLOW_FULL_ONLY, "startActivityInPackage", null); Loading @@ -4884,7 +4888,7 @@ public class ActivityManagerService extends IActivityManager.Stub // TODO: Switch to user app stacks here. int ret = mActivityStarter.startActivityMayWait(null, uid, callingPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, null, null, null, bOptions, false, userId, container, inTask); null, null, null, bOptions, false, userId, container, inTask, reason); return ret; } Loading @@ -4892,12 +4896,13 @@ public class ActivityManagerService extends IActivityManager.Stub public final int startActivities(IApplicationThread caller, String callingPackage, Intent[] intents, String[] resolvedTypes, IBinder resultTo, Bundle bOptions, int userId) { enforceNotIsolatedCaller("startActivities"); final String reason = "startActivities"; enforceNotIsolatedCaller(reason); userId = mUserController.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), userId, false, ALLOW_FULL_ONLY, "startActivity", null); userId, false, ALLOW_FULL_ONLY, reason, null); // TODO: Switch to user app stacks here. int ret = mActivityStarter.startActivities(caller, -1, callingPackage, intents, resolvedTypes, resultTo, bOptions, userId); resolvedTypes, resultTo, bOptions, userId, reason); return ret; } Loading @@ -4905,11 +4910,12 @@ public class ActivityManagerService extends IActivityManager.Stub Intent[] intents, String[] resolvedTypes, IBinder resultTo, Bundle bOptions, int userId) { final String reason = "startActivityInPackage"; userId = mUserController.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), userId, false, ALLOW_FULL_ONLY, "startActivityInPackage", null); userId, false, ALLOW_FULL_ONLY, reason, null); // TODO: Switch to user app stacks here. int ret = mActivityStarter.startActivities(null, uid, callingPackage, intents, resolvedTypes, resultTo, bOptions, userId); resultTo, bOptions, userId, reason); return ret; } Loading Loading @@ -14941,6 +14947,10 @@ public class ActivityManagerService extends IActivityManager.Stub synchronized (this) { dumpLastANRLocked(pw); } } else if ("starter".equals(cmd)) { synchronized (this) { dumpActivityStarterLocked(pw); } } else if ("recents".equals(cmd) || "r".equals(cmd)) { synchronized (this) { dumpRecentsLocked(fd, pw, args, opti, true, dumpPackage); Loading Loading @@ -15174,6 +15184,11 @@ public class ActivityManagerService extends IActivityManager.Stub if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); } dumpActivityStarterLocked(pw); pw.println(); if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); } dumpActivitiesLocked(fd, pw, args, opti, dumpAll, dumpClient, dumpPackage); if (mAssociations.size() > 0) { pw.println(); Loading Loading @@ -15239,6 +15254,11 @@ public class ActivityManagerService extends IActivityManager.Stub if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); } dumpActivityStarterLocked(pw); pw.println(); if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); } dumpActivitiesLocked(fd, pw, args, opti, dumpAll, dumpClient, dumpPackage); if (mAssociations.size() > 0) { pw.println(); Loading @@ -15258,14 +15278,19 @@ public class ActivityManagerService extends IActivityManager.Stub } private void dumpLastANRLocked(PrintWriter pw) { if (mLastANRState == null) { pw.println("ACTIVITY MANAGER ACTIVITIES (dumpsys activity lastanr)"); if (mLastANRState == null) { pw.println(" <no ANR has occurred since boot>"); } else { pw.println(mLastANRState); } } private void dumpActivityStarterLocked(PrintWriter pw) { pw.println("ACTIVITY MANAGER ACTIVITIES (dumpsys activity starter)"); mActivityStarter.dump(pw, ""); } void dumpActivitiesLocked(FileDescriptor fd, PrintWriter pw, String[] args, int opti, boolean dumpAll, boolean dumpClient, String dumpPackage) { dumpActivitiesLocked(fd, pw, args, opti, dumpAll, dumpClient, dumpPackage, Loading @@ -15292,7 +15317,6 @@ public class ActivityManagerService extends IActivityManager.Stub if (needSep) { pw.println(); } needSep = true; printedAnything = true; mStackSupervisor.dump(pw, " "); } Loading Loading @@ -24015,17 +24039,13 @@ public class ActivityManagerService extends IActivityManager.Stub if (reason != null) { pw.println(" Reason: " + reason); } pw.println(" mLastHomeActivityStartResult: " + mActivityStarter.mLastHomeActivityStartResult); final ActivityRecord r = mActivityStarter.mLastHomeActivityStartRecord[0]; if (r != null) { pw.println(" mLastHomeActivityStartRecord:"); r.dump(pw, " "); } pw.println(); mActivityStarter.dump(pw, " "); pw.println(); pw.println("-------------------------------------------------------------------------------"); dumpActivitiesLocked(null /* fd */, pw, null /* args */, 0 /* opti */, true /* dumpAll */, false /* dumpClient */, null /* dumpPackage */, "ACTIVITY MANAGER ACTIVITIES (dumpsys activity lastanr)"); "" /* header */); pw.println(); pw.close(); Loading Loading @@ -24267,7 +24287,7 @@ public class ActivityManagerService extends IActivityManager.Stub } return mActivityStarter.startActivityMayWait(appThread, -1, callingPackage, intent, resolvedType, null, null, null, null, 0, 0, null, null, null, bOptions, false, callingUser, null, tr); null, bOptions, false, callingUser, null, tr, "AppTaskImpl"); } @Override
services/core/java/com/android/server/am/ActivityStack.java +1 −1 Original line number Diff line number Diff line Loading @@ -3920,7 +3920,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai destIntent, null /*ephemeralIntent*/, null, aInfo, null /*rInfo*/, null, null, parent.appToken, null, 0, -1, parent.launchedFromUid, parent.launchedFromPackage, -1, parent.launchedFromUid, 0, null, false, true, null, null, null); false, true, null, null, null, "navigateUpTo"); foundParentInTask = res == ActivityManager.START_SUCCESS; } catch (RemoteException e) { foundParentInTask = false; Loading
services/core/java/com/android/server/am/ActivityStackSupervisor.java +1 −1 Original line number Diff line number Diff line Loading @@ -5180,7 +5180,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY); userId = task.userId; int result = mService.startActivityInPackage(callingUid, callingPackage, intent, null, null, null, 0, 0, bOptions, userId, null, task); null, null, 0, 0, bOptions, userId, null, task, "startActivityFromRecents"); if (launchStackId == DOCKED_STACK_ID) { setResizingDuringAnimation(task); } Loading
services/core/java/com/android/server/am/ActivityStarter.java +86 −8 Original line number Diff line number Diff line Loading @@ -115,6 +115,7 @@ import android.os.SystemClock; import android.os.UserHandle; import android.os.UserManager; import android.service.voice.IVoiceInteractionSession; import android.text.TextUtils; import android.util.EventLog; import android.util.Slog; Loading @@ -124,7 +125,10 @@ import com.android.server.am.ActivityStackSupervisor.PendingActivityLaunch; import com.android.server.pm.InstantAppResolver; import com.android.server.wm.WindowManagerService; import java.io.PrintWriter; import java.text.DateFormat; import java.util.ArrayList; import java.util.Date; /** * Controller for interpreting how and then launching activities. Loading Loading @@ -189,9 +193,17 @@ class ActivityStarter { private boolean mUsingVr2dDisplay; // Last home activity record we attempted to start final ActivityRecord[] mLastHomeActivityStartRecord = new ActivityRecord[1]; private final ActivityRecord[] mLastHomeActivityStartRecord = new ActivityRecord[1]; // The result of the last home activity we attempted to start. int mLastHomeActivityStartResult; private int mLastHomeActivityStartResult; // Last activity record we attempted to start private final ActivityRecord[] mLastStartActivityRecord = new ActivityRecord[1]; // The result of the last activity we attempted to start. private int mLastStartActivityResult; // Time in milli seconds we attempted to start the last activity. private long mLastStartActivityTimeMs; // The reason we were trying to start the last activity private String mLastStartReason; private void reset() { mStartActivity = null; Loading Loading @@ -241,7 +253,37 @@ class ActivityStarter { mUsingVr2dDisplay = false; } final int startActivityLocked(IApplicationThread caller, Intent intent, Intent ephemeralIntent, int startActivityLocked(IApplicationThread caller, Intent intent, Intent ephemeralIntent, String resolvedType, ActivityInfo aInfo, ResolveInfo rInfo, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, IBinder resultTo, String resultWho, int requestCode, int callingPid, int callingUid, String callingPackage, int realCallingPid, int realCallingUid, int startFlags, ActivityOptions options, boolean ignoreTargetSecurity, boolean componentSpecified, ActivityRecord[] outActivity, ActivityStackSupervisor.ActivityContainer container, TaskRecord inTask, String reason) { if (TextUtils.isEmpty(reason)) { throw new IllegalArgumentException("Need to specify a reason."); } mLastStartReason = reason; mLastStartActivityTimeMs = System.currentTimeMillis(); mLastStartActivityRecord[0] = null; mLastStartActivityResult = startActivity(caller, intent, ephemeralIntent, resolvedType, aInfo, rInfo, voiceSession, voiceInteractor, resultTo, resultWho, requestCode, callingPid, callingUid, callingPackage, realCallingPid, realCallingUid, startFlags, options, ignoreTargetSecurity, componentSpecified, mLastStartActivityRecord, container, inTask); if (outActivity != null) { // mLastStartActivityRecord[0] is set in the call to startActivity above. outActivity[0] = mLastStartActivityRecord[0]; } return mLastStartActivityResult; } /** DO NOT call this method directly. Use {@link #startActivityLocked} instead. */ private int startActivity(IApplicationThread caller, Intent intent, Intent ephemeralIntent, String resolvedType, ActivityInfo aInfo, ResolveInfo rInfo, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, IBinder resultTo, String resultWho, int requestCode, int callingPid, int callingUid, Loading Loading @@ -604,7 +646,7 @@ class ActivityStarter { null /*callingPackage*/, 0 /*realCallingPid*/, 0 /*realCallingUid*/, 0 /*startFlags*/, null /*options*/, false /*ignoreTargetSecurity*/, false /*componentSpecified*/, mLastHomeActivityStartRecord /*outActivity*/, null /*container*/, null /*inTask*/); null /*container*/, null /*inTask*/, "startHomeActivity: " + reason); if (mSupervisor.inResumeTopActivity) { // If we are in resume section already, home activity will be initialized, but not // resumed (to avoid recursive resume) and will stay that way until something pokes it Loading @@ -629,7 +671,7 @@ class ActivityStarter { IBinder resultTo, String resultWho, int requestCode, int startFlags, ProfilerInfo profilerInfo, WaitResult outResult, Configuration globalConfig, Bundle bOptions, boolean ignoreTargetSecurity, int userId, IActivityContainer iContainer, TaskRecord inTask) { IActivityContainer iContainer, TaskRecord inTask, String reason) { // Refuse possible leaked file descriptors if (intent != null && intent.hasFileDescriptors()) { throw new IllegalArgumentException("File descriptors passed in Intent"); Loading Loading @@ -784,7 +826,7 @@ class ActivityStarter { resultTo, resultWho, requestCode, callingPid, callingUid, callingPackage, realCallingPid, realCallingUid, startFlags, options, ignoreTargetSecurity, componentSpecified, outRecord, container, inTask); inTask, reason); Binder.restoreCallingIdentity(origId); Loading Loading @@ -847,7 +889,7 @@ class ActivityStarter { final int startActivities(IApplicationThread caller, int callingUid, String callingPackage, Intent[] intents, String[] resolvedTypes, IBinder resultTo, Bundle bOptions, int userId) { Bundle bOptions, int userId, String reason) { if (intents == null) { throw new NullPointerException("intents is null"); } Loading Loading @@ -909,7 +951,7 @@ class ActivityStarter { resolvedTypes[i], aInfo, null /*rInfo*/, null, null, resultTo, null, -1, callingPid, callingUid, callingPackage, realCallingPid, realCallingUid, 0, options, false, componentSpecified, outActivity, null, null); options, false, componentSpecified, outActivity, null, null, reason); if (res < 0) { return res; } Loading Loading @@ -2261,4 +2303,40 @@ class ActivityStarter { } return didSomething; } void dump(PrintWriter pw, String prefix) { pw.println(prefix + "ActivityStarter:"); prefix = prefix + " "; pw.println(prefix + "mLastStartReason=" + mLastStartReason); pw.println(prefix + "mLastStartActivityTimeMs=" + DateFormat.getDateTimeInstance().format(new Date(mLastStartActivityTimeMs))); pw.println(prefix + "mLastStartActivityResult=" + mLastStartActivityResult); ActivityRecord r = mLastStartActivityRecord[0]; if (r != null) { pw.println(prefix + "mLastStartActivityRecord:"); r.dump(pw, prefix + " "); } pw.println(prefix + "mLastHomeActivityStartResult=" + mLastHomeActivityStartResult); r = mLastHomeActivityStartRecord[0]; if (r != null) { pw.println(prefix + "mLastHomeActivityStartRecord:"); r.dump(pw, prefix + " "); } if (mStartActivity != null) { pw.println(prefix + "mStartActivity:"); mStartActivity.dump(pw, prefix + " "); } if (mIntent != null) { pw.println(prefix + "mIntent=" + mIntent); } if (mOptions != null) { pw.println(prefix + "mOptions=" + mOptions); } pw.println(prefix + "mLaunchSingleTop=" + mLaunchSingleTop + " mLaunchSingleInstance=" + mLaunchSingleInstance + " mLaunchSingleTask=" + mLaunchSingleTask + " mLaunchFlags=0x" + Integer.toHexString(mLaunchFlags) + " mDoResume=" + mDoResume + " mAddingToTask=" + mAddingToTask); } }
services/core/java/com/android/server/am/AppErrors.java +1 −1 Original line number Diff line number Diff line Loading @@ -411,7 +411,7 @@ class AppErrors { task.mCallingPackage, task.intent, null, null, null, 0, 0, ActivityOptions.makeBasic().toBundle(), task.userId, null, null); task.userId, null, null, "AppErrors"); } } } Loading