summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Todd Kennedy <toddke@google.com> 2016-04-11 17:18:25 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-04-11 17:18:26 +0000
commitf86ce783c6726694ad9f6d5e9b5d3b58c3b7e09c (patch)
tree62a527bf76b9c63d3cbeb81c5c65f98ecc0262ce
parent42cf25f735d0984e908bc30a948c631b39f2fd42 (diff)
parent7efb7eff63ba7c57de918afba9140d74a816ecc6 (diff)
Merge "Add systrace for resolveIntent()" into nyc-dev
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java56
1 files changed, 37 insertions, 19 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index fc829c3e2c00..4c03a33991fa 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -4716,27 +4716,39 @@ public class PackageManagerService extends IPackageManager.Stub {
@Override
public ResolveInfo resolveIntent(Intent intent, String resolvedType,
int flags, int userId) {
- if (!sUserManager.exists(userId)) return null;
- flags = updateFlagsForResolve(flags, userId, intent);
- enforceCrossUserPermission(Binder.getCallingUid(), userId,
- false /* requireFullPermission */, false /* checkShell */, "resolve intent");
- final List<ResolveInfo> query = queryIntentActivitiesInternal(intent, resolvedType, flags,
- userId);
- final ResolveInfo bestChoice =
- chooseBestActivity(intent, resolvedType, flags, query, userId);
+ try {
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "resolveIntent");
- if (isEphemeralAllowed(intent, query, userId)) {
- final EphemeralResolveInfo ai =
- getEphemeralResolveInfo(intent, resolvedType, userId);
- if (ai != null) {
- if (DEBUG_EPHEMERAL) {
- Slog.v(TAG, "Returning an EphemeralResolveInfo");
+ if (!sUserManager.exists(userId)) return null;
+ flags = updateFlagsForResolve(flags, userId, intent);
+ enforceCrossUserPermission(Binder.getCallingUid(), userId,
+ false /*requireFullPermission*/, false /*checkShell*/, "resolve intent");
+
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "queryIntentActivities");
+ final List<ResolveInfo> query = queryIntentActivitiesInternal(intent, resolvedType,
+ flags, userId);
+ Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
+
+ final ResolveInfo bestChoice =
+ chooseBestActivity(intent, resolvedType, flags, query, userId);
+
+ if (isEphemeralAllowed(intent, query, userId)) {
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "resolveEphemeral");
+ final EphemeralResolveInfo ai =
+ getEphemeralResolveInfo(intent, resolvedType, userId);
+ if (ai != null) {
+ if (DEBUG_EPHEMERAL) {
+ Slog.v(TAG, "Returning an EphemeralResolveInfo");
+ }
+ bestChoice.ephemeralInstaller = mEphemeralInstallerInfo;
+ bestChoice.ephemeralResolveInfo = ai;
}
- bestChoice.ephemeralInstaller = mEphemeralInstallerInfo;
- bestChoice.ephemeralResolveInfo = ai;
+ Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
}
+ return bestChoice;
+ } finally {
+ Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
}
- return bestChoice;
}
@Override
@@ -5183,8 +5195,14 @@ public class PackageManagerService extends IPackageManager.Stub {
@Override
public @NonNull ParceledListSlice<ResolveInfo> queryIntentActivities(Intent intent,
String resolvedType, int flags, int userId) {
- return new ParceledListSlice<>(
- queryIntentActivitiesInternal(intent, resolvedType, flags, userId));
+ try {
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "queryIntentActivities");
+
+ return new ParceledListSlice<>(
+ queryIntentActivitiesInternal(intent, resolvedType, flags, userId));
+ } finally {
+ Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
+ }
}
private @NonNull List<ResolveInfo> queryIntentActivitiesInternal(Intent intent,