summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-03-21 22:55:03 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-03-21 22:55:09 +0000
commit11f5cf937a0c27eaa5d5e7d0329c587fc0232620 (patch)
tree565e12e40c2998733942e296fde05bca18bda405
parent017aee5a6628a5c991c1ddba33f855c7458f206e (diff)
parentb3b43130db1c02493ca881ad95adf27ec0cbe8ad (diff)
Merge "Send launch token to activity manager"
-rw-r--r--core/java/android/content/Intent.java13
-rw-r--r--services/core/java/com/android/server/am/ActivityMetricsLogger.java1
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java4
-rw-r--r--services/core/java/com/android/server/pm/InstantAppResolver.java2
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(