Loading core/java/com/android/internal/util/LatencyTracker.java +13 −3 Original line number Diff line number Diff line Loading @@ -100,6 +100,11 @@ public class LatencyTracker { */ public static final int ACTION_ROTATE_SCREEN_SENSOR = 9; /** * Time it takes to for the camera based algorithm to rotate the screen. */ public static final int ACTION_ROTATE_SCREEN_CAMERA_CHECK = 10; private static final int[] ACTIONS_ALL = { ACTION_EXPAND_PANEL, ACTION_TOGGLE_RECENTS, Loading @@ -110,7 +115,8 @@ public class LatencyTracker { ACTION_ROTATE_SCREEN, ACTION_FACE_WAKE_AND_UNLOCK, ACTION_START_RECENTS_ANIMATION, ACTION_ROTATE_SCREEN_SENSOR ACTION_ROTATE_SCREEN_SENSOR, ACTION_ROTATE_SCREEN_CAMERA_CHECK }; /** @hide */ Loading @@ -124,7 +130,8 @@ public class LatencyTracker { ACTION_ROTATE_SCREEN, ACTION_FACE_WAKE_AND_UNLOCK, ACTION_START_RECENTS_ANIMATION, ACTION_ROTATE_SCREEN_SENSOR ACTION_ROTATE_SCREEN_SENSOR, ACTION_ROTATE_SCREEN_CAMERA_CHECK }) @Retention(RetentionPolicy.SOURCE) public @interface Action { Loading @@ -140,7 +147,8 @@ public class LatencyTracker { FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_ROTATE_SCREEN, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_FACE_WAKE_AND_UNLOCK, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_START_RECENTS_ANIMATION, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_ROTATE_SCREEN_SENSOR FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_ROTATE_SCREEN_SENSOR, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_ROTATE_SCREEN_CAMERA_CHECK }; private static LatencyTracker sLatencyTracker; Loading Loading @@ -217,6 +225,8 @@ public class LatencyTracker { return "ACTION_FACE_WAKE_AND_UNLOCK"; case 9: return "ACTION_START_RECENTS_ANIMATION"; case 10: return "ACTION_ROTATE_SCREEN_CAMERA_CHECK"; case 11: return "ACTION_ROTATE_SCREEN_SENSOR"; default: Loading services/core/java/com/android/server/rotationresolver/RotationResolverManagerPerUserService.java +32 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.rotationresolver; import static android.service.rotationresolver.RotationResolverService.ROTATION_RESULT_FAILURE_CANCELLED; import static com.android.internal.util.LatencyTracker.ACTION_ROTATE_SCREEN_CAMERA_CHECK; import static com.android.server.rotationresolver.RotationResolverManagerService.RESOLUTION_UNAVAILABLE; import static com.android.server.rotationresolver.RotationResolverManagerService.logRotationStats; Loading @@ -38,6 +39,7 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.LatencyTracker; import com.android.server.infra.AbstractPerUserSystemService; /** Loading @@ -62,10 +64,13 @@ final class RotationResolverManagerPerUserService extends RemoteRotationResolverService mRemoteService; private ComponentName mComponentName; @GuardedBy("mLock") private LatencyTracker mLatencyTracker; RotationResolverManagerPerUserService(@NonNull RotationResolverManagerService main, @NonNull Object lock, @UserIdInt int userId) { super(main, lock, userId); mLatencyTracker = LatencyTracker.getInstance(getContext()); } @GuardedBy("mLock") Loading Loading @@ -108,7 +113,33 @@ final class RotationResolverManagerPerUserService extends cancelLocked(); } mCurrentRequest = new RemoteRotationResolverService.RotationRequest(callbackInternal, synchronized (mLock) { mLatencyTracker.onActionStart(ACTION_ROTATE_SCREEN_CAMERA_CHECK); } /** Need to wrap RotationResolverCallbackInternal since there was no other way to hook into the success/failure callback **/ final RotationResolverInternal.RotationResolverCallbackInternal wrapper = new RotationResolverInternal.RotationResolverCallbackInternal() { @Override public void onSuccess(int result) { synchronized (mLock) { mLatencyTracker .onActionEnd(ACTION_ROTATE_SCREEN_CAMERA_CHECK); } callbackInternal.onSuccess(result); } @Override public void onFailure(int error) { synchronized (mLock) { mLatencyTracker .onActionEnd(ACTION_ROTATE_SCREEN_CAMERA_CHECK); } callbackInternal.onFailure(error); } }; mCurrentRequest = new RemoteRotationResolverService.RotationRequest(wrapper, request, cancellationSignalInternal); cancellationSignalInternal.setOnCancelListener(() -> { Loading Loading
core/java/com/android/internal/util/LatencyTracker.java +13 −3 Original line number Diff line number Diff line Loading @@ -100,6 +100,11 @@ public class LatencyTracker { */ public static final int ACTION_ROTATE_SCREEN_SENSOR = 9; /** * Time it takes to for the camera based algorithm to rotate the screen. */ public static final int ACTION_ROTATE_SCREEN_CAMERA_CHECK = 10; private static final int[] ACTIONS_ALL = { ACTION_EXPAND_PANEL, ACTION_TOGGLE_RECENTS, Loading @@ -110,7 +115,8 @@ public class LatencyTracker { ACTION_ROTATE_SCREEN, ACTION_FACE_WAKE_AND_UNLOCK, ACTION_START_RECENTS_ANIMATION, ACTION_ROTATE_SCREEN_SENSOR ACTION_ROTATE_SCREEN_SENSOR, ACTION_ROTATE_SCREEN_CAMERA_CHECK }; /** @hide */ Loading @@ -124,7 +130,8 @@ public class LatencyTracker { ACTION_ROTATE_SCREEN, ACTION_FACE_WAKE_AND_UNLOCK, ACTION_START_RECENTS_ANIMATION, ACTION_ROTATE_SCREEN_SENSOR ACTION_ROTATE_SCREEN_SENSOR, ACTION_ROTATE_SCREEN_CAMERA_CHECK }) @Retention(RetentionPolicy.SOURCE) public @interface Action { Loading @@ -140,7 +147,8 @@ public class LatencyTracker { FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_ROTATE_SCREEN, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_FACE_WAKE_AND_UNLOCK, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_START_RECENTS_ANIMATION, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_ROTATE_SCREEN_SENSOR FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_ROTATE_SCREEN_SENSOR, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_ROTATE_SCREEN_CAMERA_CHECK }; private static LatencyTracker sLatencyTracker; Loading Loading @@ -217,6 +225,8 @@ public class LatencyTracker { return "ACTION_FACE_WAKE_AND_UNLOCK"; case 9: return "ACTION_START_RECENTS_ANIMATION"; case 10: return "ACTION_ROTATE_SCREEN_CAMERA_CHECK"; case 11: return "ACTION_ROTATE_SCREEN_SENSOR"; default: Loading
services/core/java/com/android/server/rotationresolver/RotationResolverManagerPerUserService.java +32 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.rotationresolver; import static android.service.rotationresolver.RotationResolverService.ROTATION_RESULT_FAILURE_CANCELLED; import static com.android.internal.util.LatencyTracker.ACTION_ROTATE_SCREEN_CAMERA_CHECK; import static com.android.server.rotationresolver.RotationResolverManagerService.RESOLUTION_UNAVAILABLE; import static com.android.server.rotationresolver.RotationResolverManagerService.logRotationStats; Loading @@ -38,6 +39,7 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.LatencyTracker; import com.android.server.infra.AbstractPerUserSystemService; /** Loading @@ -62,10 +64,13 @@ final class RotationResolverManagerPerUserService extends RemoteRotationResolverService mRemoteService; private ComponentName mComponentName; @GuardedBy("mLock") private LatencyTracker mLatencyTracker; RotationResolverManagerPerUserService(@NonNull RotationResolverManagerService main, @NonNull Object lock, @UserIdInt int userId) { super(main, lock, userId); mLatencyTracker = LatencyTracker.getInstance(getContext()); } @GuardedBy("mLock") Loading Loading @@ -108,7 +113,33 @@ final class RotationResolverManagerPerUserService extends cancelLocked(); } mCurrentRequest = new RemoteRotationResolverService.RotationRequest(callbackInternal, synchronized (mLock) { mLatencyTracker.onActionStart(ACTION_ROTATE_SCREEN_CAMERA_CHECK); } /** Need to wrap RotationResolverCallbackInternal since there was no other way to hook into the success/failure callback **/ final RotationResolverInternal.RotationResolverCallbackInternal wrapper = new RotationResolverInternal.RotationResolverCallbackInternal() { @Override public void onSuccess(int result) { synchronized (mLock) { mLatencyTracker .onActionEnd(ACTION_ROTATE_SCREEN_CAMERA_CHECK); } callbackInternal.onSuccess(result); } @Override public void onFailure(int error) { synchronized (mLock) { mLatencyTracker .onActionEnd(ACTION_ROTATE_SCREEN_CAMERA_CHECK); } callbackInternal.onFailure(error); } }; mCurrentRequest = new RemoteRotationResolverService.RotationRequest(wrapper, request, cancellationSignalInternal); cancellationSignalInternal.setOnCancelListener(() -> { Loading