Merge "Pass real calling uid to metrics logger if available" into sc-dev
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.ArtManagerInternal;
|
||||||
import android.content.pm.dex.PackageOptimizationInfo;
|
import android.content.pm.dex.PackageOptimizationInfo;
|
||||||
import android.metrics.LogMaker;
|
import android.metrics.LogMaker;
|
||||||
import android.os.Binder;
|
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
@@ -507,22 +506,13 @@ class ActivityMetricsLogger {
|
|||||||
return notifyActivityLaunching(intent, null /* caller */, IGNORE_CALLER);
|
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
|
* 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
|
* 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) {
|
int callingUid) {
|
||||||
final long transitionStartTimeNs = SystemClock.elapsedRealtimeNanos();
|
final long transitionStartTimeNs = SystemClock.elapsedRealtimeNanos();
|
||||||
TransitionInfo existingInfo = null;
|
TransitionInfo existingInfo = null;
|
||||||
|
|||||||
@@ -617,8 +617,10 @@ class ActivityStarter {
|
|||||||
final LaunchingState launchingState;
|
final LaunchingState launchingState;
|
||||||
synchronized (mService.mGlobalLock) {
|
synchronized (mService.mGlobalLock) {
|
||||||
final ActivityRecord caller = ActivityRecord.forTokenLocked(mRequest.resultTo);
|
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(
|
launchingState = mSupervisor.getActivityMetricsLogger().notifyActivityLaunching(
|
||||||
mRequest.intent, caller);
|
mRequest.intent, caller, callingUid);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the caller hasn't already resolved the activity, we're willing
|
// 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) {
|
private void notifyActivityLaunching(Intent intent) {
|
||||||
final ActivityMetricsLogger.LaunchingState previousState = mLaunchingState;
|
final ActivityMetricsLogger.LaunchingState previousState = mLaunchingState;
|
||||||
mLaunchingState = mActivityMetricsLogger.notifyActivityLaunching(intent,
|
mLaunchingState = mActivityMetricsLogger.notifyActivityLaunching(intent,
|
||||||
mLaunchTopByTrampoline ? mTrampolineActivity : null /* caller */);
|
mLaunchTopByTrampoline ? mTrampolineActivity : null /* caller */,
|
||||||
|
mLaunchTopByTrampoline ? mTrampolineActivity.getUid() : 0);
|
||||||
if (mLaunchTopByTrampoline) {
|
if (mLaunchTopByTrampoline) {
|
||||||
// The transition of TrampolineActivity has not been completed, so when the next
|
// The transition of TrampolineActivity has not been completed, so when the next
|
||||||
// activity is starting from it, the same launching state should be returned.
|
// activity is starting from it, the same launching state should be returned.
|
||||||
@@ -429,7 +430,7 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase {
|
|||||||
.setCreateTask(true)
|
.setCreateTask(true)
|
||||||
.build();
|
.build();
|
||||||
mActivityMetricsLogger.notifyActivityLaunching(activityOnNewTask.intent,
|
mActivityMetricsLogger.notifyActivityLaunching(activityOnNewTask.intent,
|
||||||
mTrampolineActivity /* caller */);
|
mTrampolineActivity /* caller */, mTrampolineActivity.getUid());
|
||||||
notifyActivityLaunched(START_SUCCESS, activityOnNewTask);
|
notifyActivityLaunched(START_SUCCESS, activityOnNewTask);
|
||||||
|
|
||||||
transitToDrawnAndVerifyOnLaunchFinished(activityOnNewTask);
|
transitToDrawnAndVerifyOnLaunchFinished(activityOnNewTask);
|
||||||
@@ -453,7 +454,7 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase {
|
|||||||
|
|
||||||
// Before TopActivity is drawn, it launches another activity on a different display.
|
// Before TopActivity is drawn, it launches another activity on a different display.
|
||||||
mActivityMetricsLogger.notifyActivityLaunching(activityOnNewDisplay.intent,
|
mActivityMetricsLogger.notifyActivityLaunching(activityOnNewDisplay.intent,
|
||||||
mTopActivity /* caller */);
|
mTopActivity /* caller */, mTopActivity.getUid());
|
||||||
notifyActivityLaunched(START_SUCCESS, activityOnNewDisplay);
|
notifyActivityLaunched(START_SUCCESS, activityOnNewDisplay);
|
||||||
|
|
||||||
// There should be 2 events instead of coalescing as one event.
|
// There should be 2 events instead of coalescing as one event.
|
||||||
|
|||||||
Reference in New Issue
Block a user