Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bb82c46b authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "[wm] add incremental indicators for app start metrics" into sc-dev am:...

Merge "[wm] add incremental indicators for app start metrics" into sc-dev am: 2fd8a28e am: 7d370bd7

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14495606

Change-Id: Ia99f9505a7a0827b5f31d79c33ae2a88aeef5c0d
parents 97102fdd 7d370bd7
Loading
Loading
Loading
Loading
+32 −2
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ import android.app.WindowConfiguration.WindowingMode;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.IncrementalStatesInfo;
import android.content.pm.dex.ArtManagerInternal;
import android.content.pm.dex.PackageOptimizationInfo;
import android.metrics.LogMaker;
@@ -84,6 +85,7 @@ import android.os.Handler;
import android.os.Looper;
import android.os.SystemClock;
import android.os.Trace;
import android.os.incremental.IncrementalManager;
import android.util.ArrayMap;
import android.util.EventLog;
import android.util.Log;
@@ -948,6 +950,14 @@ class ActivityMetricsLogger {
        builder.addTaggedData(PACKAGE_OPTIMIZATION_COMPILATION_FILTER,
                packageOptimizationInfo.getCompilationFilter());
        mMetricsLogger.write(builder);

        // Incremental info
        boolean isIncremental = false, isLoading = false;
        final String codePath = info.applicationInfo.getCodePath();
        if (codePath != null && IncrementalManager.isIncrementalPath(codePath)) {
            isIncremental = true;
            isLoading = isIncrementalLoading(info.packageName, info.userId);
        }
        FrameworkStatsLog.write(
                FrameworkStatsLog.APP_START_OCCURRED,
                info.applicationInfo.uid,
@@ -967,7 +977,10 @@ class ActivityMetricsLogger {
                packageOptimizationInfo.getCompilationFilter(),
                info.sourceType,
                info.sourceEventDelayMs,
                isHibernating);
                isHibernating,
                isIncremental,
                isLoading,
                info.launchedActivityName.hashCode());

        if (DEBUG_METRICS) {
            Slog.i(TAG, String.format("APP_START_OCCURRED(%s, %s, %s, %s, %s)",
@@ -982,6 +995,12 @@ class ActivityMetricsLogger {
        logAppStartMemoryStateCapture(info);
    }

    private boolean isIncrementalLoading(String packageName, int userId) {
        final IncrementalStatesInfo info = mSupervisor.mService.getPackageManagerInternalLocked()
                .getIncrementalStatesInfo(packageName, 0 /* filterCallingUid */, userId);
        return info != null && info.isLoading();
    }

    private void logAppDisplayed(TransitionInfoSnapshot info) {
        if (info.type != TYPE_TRANSITION_WARM_LAUNCH && info.type != TYPE_TRANSITION_COLD_LAUNCH) {
            return;
@@ -1063,6 +1082,14 @@ class ActivityMetricsLogger {
        mMetricsLogger.write(builder);
        final PackageOptimizationInfo packageOptimizationInfo =
                infoSnapshot.getPackageOptimizationInfo(getArtManagerInternal());
        // Incremental info
        boolean isIncremental = false, isLoading = false;
        final String codePath = info.mLastLaunchedActivity.info.applicationInfo.getCodePath();
        if (codePath != null && IncrementalManager.isIncrementalPath(codePath)) {
            isIncremental = true;
            isLoading = isIncrementalLoading(info.mLastLaunchedActivity.packageName,
                            info.mLastLaunchedActivity.mUserId);
        }
        FrameworkStatsLog.write(
                FrameworkStatsLog.APP_START_FULLY_DRAWN,
                info.mLastLaunchedActivity.info.applicationInfo.uid,
@@ -1076,7 +1103,10 @@ class ActivityMetricsLogger {
                packageOptimizationInfo.getCompilationReason(),
                packageOptimizationInfo.getCompilationFilter(),
                info.mSourceType,
                info.mSourceEventDelayMs);
                info.mSourceEventDelayMs,
                isIncremental,
                isLoading,
                info.mLastLaunchedActivity.info.name.hashCode());

        // Ends the trace started at the beginning of this function. This is located here to allow
        // the trace slice to have a noticable duration.