Merge "Pass real calling uid to metrics logger if available" into sc-dev am: 87a5a818c3 am: 84924257c9

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

Change-Id: I38b6565367315d43509cbb14cd3dc3da4b0ddcc7
This commit is contained in:
Riddle Hsu
2021-05-31 06:18:08 +00:00
committed by Automerger Merge Worker
3 changed files with 10 additions and 17 deletions

View File

@@ -80,7 +80,6 @@ import android.content.pm.IncrementalStatesInfo;
import android.content.pm.dex.ArtManagerInternal;
import android.content.pm.dex.PackageOptimizationInfo;
import android.metrics.LogMaker;
import android.os.Binder;
import android.os.Handler;
import android.os.Looper;
import android.os.SystemClock;
@@ -507,22 +506,13 @@ class ActivityMetricsLogger {
return notifyActivityLaunching(intent, null /* caller */, IGNORE_CALLER);
}
/**
* If the caller is found in an active transition, it will be considered as consecutive launch
* and coalesced into the active transition.
*
* @see #notifyActivityLaunching(Intent, ActivityRecord, int)
*/
LaunchingState notifyActivityLaunching(Intent intent, @Nullable ActivityRecord caller) {
return notifyActivityLaunching(intent, caller, Binder.getCallingUid());
}
/**
* Notifies the tracker at the earliest possible point when we are starting to launch an
* activity. The caller must ensure that {@link #notifyActivityLaunched} will be called later
* with the returned {@link LaunchingState}.
* with the returned {@link LaunchingState}. If the caller is found in an active transition,
* it will be considered as consecutive launch and coalesced into the active transition.
*/
private LaunchingState notifyActivityLaunching(Intent intent, @Nullable ActivityRecord caller,
LaunchingState notifyActivityLaunching(Intent intent, @Nullable ActivityRecord caller,
int callingUid) {
final long transitionStartTimeNs = SystemClock.elapsedRealtimeNanos();
TransitionInfo existingInfo = null;

View File

@@ -618,8 +618,10 @@ class ActivityStarter {
final LaunchingState launchingState;
synchronized (mService.mGlobalLock) {
final ActivityRecord caller = ActivityRecord.forTokenLocked(mRequest.resultTo);
final int callingUid = mRequest.realCallingUid == Request.DEFAULT_REAL_CALLING_UID
? Binder.getCallingUid() : mRequest.realCallingUid;
launchingState = mSupervisor.getActivityMetricsLogger().notifyActivityLaunching(
mRequest.intent, caller);
mRequest.intent, caller, callingUid);
}
// If the caller hasn't already resolved the activity, we're willing

View File

@@ -306,7 +306,8 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase {
private void notifyActivityLaunching(Intent intent) {
final ActivityMetricsLogger.LaunchingState previousState = mLaunchingState;
mLaunchingState = mActivityMetricsLogger.notifyActivityLaunching(intent,
mLaunchTopByTrampoline ? mTrampolineActivity : null /* caller */);
mLaunchTopByTrampoline ? mTrampolineActivity : null /* caller */,
mLaunchTopByTrampoline ? mTrampolineActivity.getUid() : 0);
if (mLaunchTopByTrampoline) {
// The transition of TrampolineActivity has not been completed, so when the next
// activity is starting from it, the same launching state should be returned.
@@ -429,7 +430,7 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase {
.setCreateTask(true)
.build();
mActivityMetricsLogger.notifyActivityLaunching(activityOnNewTask.intent,
mTrampolineActivity /* caller */);
mTrampolineActivity /* caller */, mTrampolineActivity.getUid());
notifyActivityLaunched(START_SUCCESS, activityOnNewTask);
transitToDrawnAndVerifyOnLaunchFinished(activityOnNewTask);
@@ -453,7 +454,7 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase {
// Before TopActivity is drawn, it launches another activity on a different display.
mActivityMetricsLogger.notifyActivityLaunching(activityOnNewDisplay.intent,
mTopActivity /* caller */);
mTopActivity /* caller */, mTopActivity.getUid());
notifyActivityLaunched(START_SUCCESS, activityOnNewDisplay);
// There should be 2 events instead of coalescing as one event.