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

Commit 78488681 authored by Abel Tesfaye's avatar Abel Tesfaye Committed by Android (Google) Code Review
Browse files

Merge "Add LatencyTracker for CameraAutoRotate in...

Merge "Add LatencyTracker for CameraAutoRotate in RotationResolverManagerPerUserService" into sc-dev
parents ab0c4fbc 423b78ae
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -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,
@@ -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 */
@@ -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 {
@@ -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;
@@ -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:
+32 −1
Original line number Diff line number Diff line
@@ -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;

@@ -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;

/**
@@ -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")
@@ -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(() -> {