diff options
| author | 2017-03-21 22:55:03 +0000 | |
|---|---|---|
| committer | 2017-03-21 22:55:09 +0000 | |
| commit | 11f5cf937a0c27eaa5d5e7d0329c587fc0232620 (patch) | |
| tree | 565e12e40c2998733942e296fde05bca18bda405 | |
| parent | 017aee5a6628a5c991c1ddba33f855c7458f206e (diff) | |
| parent | b3b43130db1c02493ca881ad95adf27ec0cbe8ad (diff) | |
Merge "Send launch token to activity manager"
4 files changed, 20 insertions, 0 deletions
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index bd31b03d7cff..e7d306dc63cc 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -5123,6 +5123,8 @@ public class Intent implements Parcelable, Cloneable { private Intent mSelector; private ClipData mClipData; private int mContentUserHint = UserHandle.USER_CURRENT; + /** Token to track instant app launches. Local only; do not copy cross-process. */ + private String mLaunchToken; // --------------------------------------------------------------------- @@ -5143,6 +5145,7 @@ public class Intent implements Parcelable, Cloneable { this.mComponent = o.mComponent; this.mFlags = o.mFlags; this.mContentUserHint = o.mContentUserHint; + this.mLaunchToken = o.mLaunchToken; if (o.mCategories != null) { this.mCategories = new ArraySet<String>(o.mCategories); } @@ -6379,6 +6382,16 @@ public class Intent implements Parcelable, Cloneable { return mContentUserHint; } + /** @hide */ + public String getLaunchToken() { + return mLaunchToken; + } + + /** @hide */ + public void setLaunchToken(String launchToken) { + mLaunchToken = launchToken; + } + /** * Sets the ClassLoader that will be used when unmarshalling * any Parcelable values from the extras of this Intent. diff --git a/services/core/java/com/android/server/am/ActivityMetricsLogger.java b/services/core/java/com/android/server/am/ActivityMetricsLogger.java index dd8c05ea9b87..04a09fe4305e 100644 --- a/services/core/java/com/android/server/am/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/am/ActivityMetricsLogger.java @@ -321,6 +321,7 @@ class ActivityMetricsLogger { if (info.launchedActivity.info.launchToken != null) { builder.addTaggedData(FIELD_INSTANT_APP_LAUNCH_TOKEN, info.launchedActivity.info.launchToken); + info.launchedActivity.info.launchToken = null; } builder.addTaggedData(APP_TRANSITION_IS_EPHEMERAL, info.launchedActivity.info.applicationInfo.isInstantApp() ? 1 : 0); diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 1116fc3900d7..2be87dcf3b79 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -1227,6 +1227,10 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D mService.setProfileApp(aInfo.applicationInfo, aInfo.processName, profilerInfo); } } + final String intentLaunchToken = intent.getLaunchToken(); + if (aInfo.launchToken == null && intentLaunchToken != null) { + aInfo.launchToken = intentLaunchToken; + } } return aInfo; } diff --git a/services/core/java/com/android/server/pm/InstantAppResolver.java b/services/core/java/com/android/server/pm/InstantAppResolver.java index 86124a823810..59f8a2d0da20 100644 --- a/services/core/java/com/android/server/pm/InstantAppResolver.java +++ b/services/core/java/com/android/server/pm/InstantAppResolver.java @@ -200,6 +200,7 @@ public abstract class InstantAppResolver { // Intent that is launched if the package couldn't be installed for any reason. final Intent failureIntent = new Intent(origIntent); failureIntent.setFlags(failureIntent.getFlags() | Intent.FLAG_IGNORE_EPHEMERAL); + failureIntent.setLaunchToken(token); try { final IIntentSender failureIntentTarget = ActivityManager.getService() .getIntentSender( @@ -216,6 +217,7 @@ public abstract class InstantAppResolver { // Intent that is launched if the package was installed successfully. final Intent successIntent = new Intent(origIntent); + successIntent.setLaunchToken(token); try { final IIntentSender successIntentTarget = ActivityManager.getService() .getIntentSender( |