Merge "Pass real calling uid to metrics logger if available" into sc-dev am: 87a5a818c3
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14747455 Change-Id: I13fdbef49482cef600dc88bc53ce0b727db49d21
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user