Loading core/java/com/android/internal/util/LatencyTracker.java +13 −3 Original line number Diff line number Diff line Loading @@ -132,6 +132,11 @@ public class LatencyTracker { */ public static final int ACTION_UDFPS_ILLUMINATE = 14; /** * Time it takes for the gesture back affordance arrow to show up. */ public static final int ACTION_SHOW_BACK_ARROW = 15; private static final int[] ACTIONS_ALL = { ACTION_EXPAND_PANEL, ACTION_TOGGLE_RECENTS, Loading @@ -147,7 +152,8 @@ public class LatencyTracker { ACTION_LOCKSCREEN_UNLOCK, ACTION_USER_SWITCH, ACTION_SWITCH_DISPLAY_UNFOLD, ACTION_UDFPS_ILLUMINATE ACTION_UDFPS_ILLUMINATE, ACTION_SHOW_BACK_ARROW, }; /** @hide */ Loading @@ -166,7 +172,8 @@ public class LatencyTracker { ACTION_LOCKSCREEN_UNLOCK, ACTION_USER_SWITCH, ACTION_SWITCH_DISPLAY_UNFOLD, ACTION_UDFPS_ILLUMINATE ACTION_UDFPS_ILLUMINATE, ACTION_SHOW_BACK_ARROW }) @Retention(RetentionPolicy.SOURCE) public @interface Action { Loading @@ -187,7 +194,8 @@ public class LatencyTracker { FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_LOCKSCREEN_UNLOCK, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_USER_SWITCH, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_SWITCH_DISPLAY_UNFOLD, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_UDFPS_ILLUMINATE FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_UDFPS_ILLUMINATE, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_SHOW_BACK_ARROW, }; private static LatencyTracker sLatencyTracker; Loading Loading @@ -277,6 +285,8 @@ public class LatencyTracker { return "ACTION_SWITCH_DISPLAY_UNFOLD"; case 15: return "ACTION_UDFPS_ILLUMINATE"; case 16: return "ACTION_SHOW_BACK_ARROW"; default: throw new IllegalArgumentException("Invalid action"); } Loading packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java +12 −5 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import android.view.WindowMetrics; import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; import com.android.internal.policy.GestureNavigationSettingsObserver; import com.android.internal.util.LatencyTracker; import com.android.systemui.R; import com.android.systemui.SystemUIFactory; import com.android.systemui.broadcast.BroadcastDispatcher; Loading Loading @@ -198,6 +199,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker private final Rect mNavBarOverlayExcludedBounds = new Rect(); private final Region mExcludeRegion = new Region(); private final Region mUnrestrictedExcludeRegion = new Region(); private final LatencyTracker mLatencyTracker; // The left side edge width where touch down is allowed private int mEdgeWidthLeft; Loading Loading @@ -302,7 +304,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker BroadcastDispatcher broadcastDispatcher, ProtoTracer protoTracer, NavigationModeController navigationModeController, ViewConfiguration viewConfiguration, WindowManager windowManager, IWindowManager windowManagerService, FalsingManager falsingManager) { FalsingManager falsingManager, LatencyTracker latencyTracker) { super(broadcastDispatcher); mContext = context; mDisplayId = context.getDisplayId(); Loading @@ -316,6 +318,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker mWindowManager = windowManager; mWindowManagerService = windowManagerService; mFalsingManager = falsingManager; mLatencyTracker = latencyTracker; ComponentName recentsComponentName = ComponentName.unflattenFromString( context.getString(com.android.internal.R.string.config_recentsComponentName)); if (recentsComponentName != null) { Loading Loading @@ -505,7 +508,8 @@ public class EdgeBackGestureHandler extends CurrentUserTracker Choreographer.getInstance(), this::onInputEvent); // Add a nav bar panel window setEdgeBackPlugin(new NavigationBarEdgePanel(mContext, mBackAnimation)); setEdgeBackPlugin( new NavigationBarEdgePanel(mContext, mBackAnimation, mLatencyTracker)); mPluginManager.addPluginListener( this, NavigationEdgeBackPlugin.class, /*allowMultiple=*/ false); } Loading @@ -520,7 +524,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker @Override public void onPluginDisconnected(NavigationEdgeBackPlugin plugin) { setEdgeBackPlugin(new NavigationBarEdgePanel(mContext, mBackAnimation)); setEdgeBackPlugin(new NavigationBarEdgePanel(mContext, mBackAnimation, mLatencyTracker)); } private void setEdgeBackPlugin(NavigationEdgeBackPlugin edgeBackPlugin) { Loading Loading @@ -968,6 +972,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker private final WindowManager mWindowManager; private final IWindowManager mWindowManagerService; private final FalsingManager mFalsingManager; private final LatencyTracker mLatencyTracker; @Inject public Factory(OverviewProxyService overviewProxyService, Loading @@ -975,7 +980,8 @@ public class EdgeBackGestureHandler extends CurrentUserTracker BroadcastDispatcher broadcastDispatcher, ProtoTracer protoTracer, NavigationModeController navigationModeController, ViewConfiguration viewConfiguration, WindowManager windowManager, IWindowManager windowManagerService, FalsingManager falsingManager) { IWindowManager windowManagerService, FalsingManager falsingManager, LatencyTracker latencyTracker) { mOverviewProxyService = overviewProxyService; mSysUiState = sysUiState; mPluginManager = pluginManager; Loading @@ -987,6 +993,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker mWindowManager = windowManager; mWindowManagerService = windowManagerService; mFalsingManager = falsingManager; mLatencyTracker = latencyTracker; } /** Construct a {@link EdgeBackGestureHandler}. */ Loading @@ -994,7 +1001,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker return new EdgeBackGestureHandler(context, mOverviewProxyService, mSysUiState, mPluginManager, mExecutor, mBroadcastDispatcher, mProtoTracer, mNavigationModeController, mViewConfiguration, mWindowManager, mWindowManagerService, mFalsingManager); mWindowManagerService, mFalsingManager, mLatencyTracker); } } Loading packages/SystemUI/src/com/android/systemui/navigationbar/gestural/NavigationBarEdgePanel.java +11 −1 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ import androidx.dynamicanimation.animation.FloatPropertyCompat; import androidx.dynamicanimation.animation.SpringAnimation; import androidx.dynamicanimation.animation.SpringForce; import com.android.internal.util.LatencyTracker; import com.android.settingslib.Utils; import com.android.systemui.Dependency; import com.android.systemui.R; Loading Loading @@ -176,6 +177,7 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl private final ValueAnimator mArrowDisappearAnimation; private final SpringForce mRegularTranslationSpring; private final SpringForce mTriggerBackSpring; private final LatencyTracker mLatencyTracker; private VelocityTracker mVelocityTracker; private boolean mIsDark = false; Loading Loading @@ -225,6 +227,7 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl private float mDisappearAmount; private long mVibrationTime; private int mScreenSize; private boolean mTrackingBackArrowLatency = false; private final Handler mHandler = new Handler(); private final Runnable mFailsafeRunnable = this::onFailsafe; Loading Loading @@ -283,7 +286,7 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl private BackAnimation mBackAnimation; public NavigationBarEdgePanel(Context context, BackAnimation backAnimation) { BackAnimation backAnimation, LatencyTracker latencyTracker) { super(context); mWindowManager = context.getSystemService(WindowManager.class); Loading Loading @@ -383,6 +386,7 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl }, backgroundExecutor); mRegionSamplingHelper.setWindowVisible(true); mShowProtection = !isPrimaryDisplay; mLatencyTracker = latencyTracker; } public void setBackAnimation(BackAnimation backAnimation) { Loading Loading @@ -492,6 +496,8 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl updatePosition(event.getY()); mRegionSamplingHelper.start(mSamplingRect); mWindowManager.updateViewLayout(this, mLayoutParams); mLatencyTracker.onActionStart(LatencyTracker.ACTION_SHOW_BACK_ARROW); mTrackingBackArrowLatency = true; break; case MotionEvent.ACTION_MOVE: handleMoveEvent(event); Loading Loading @@ -547,6 +553,10 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl canvas.drawPath(arrowPath, mPaint); canvas.restore(); if (mTrackingBackArrowLatency) { mLatencyTracker.onActionEnd(LatencyTracker.ACTION_SHOW_BACK_ARROW); mTrackingBackArrowLatency = false; } } @Override Loading Loading
core/java/com/android/internal/util/LatencyTracker.java +13 −3 Original line number Diff line number Diff line Loading @@ -132,6 +132,11 @@ public class LatencyTracker { */ public static final int ACTION_UDFPS_ILLUMINATE = 14; /** * Time it takes for the gesture back affordance arrow to show up. */ public static final int ACTION_SHOW_BACK_ARROW = 15; private static final int[] ACTIONS_ALL = { ACTION_EXPAND_PANEL, ACTION_TOGGLE_RECENTS, Loading @@ -147,7 +152,8 @@ public class LatencyTracker { ACTION_LOCKSCREEN_UNLOCK, ACTION_USER_SWITCH, ACTION_SWITCH_DISPLAY_UNFOLD, ACTION_UDFPS_ILLUMINATE ACTION_UDFPS_ILLUMINATE, ACTION_SHOW_BACK_ARROW, }; /** @hide */ Loading @@ -166,7 +172,8 @@ public class LatencyTracker { ACTION_LOCKSCREEN_UNLOCK, ACTION_USER_SWITCH, ACTION_SWITCH_DISPLAY_UNFOLD, ACTION_UDFPS_ILLUMINATE ACTION_UDFPS_ILLUMINATE, ACTION_SHOW_BACK_ARROW }) @Retention(RetentionPolicy.SOURCE) public @interface Action { Loading @@ -187,7 +194,8 @@ public class LatencyTracker { FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_LOCKSCREEN_UNLOCK, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_USER_SWITCH, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_SWITCH_DISPLAY_UNFOLD, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_UDFPS_ILLUMINATE FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_UDFPS_ILLUMINATE, FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_SHOW_BACK_ARROW, }; private static LatencyTracker sLatencyTracker; Loading Loading @@ -277,6 +285,8 @@ public class LatencyTracker { return "ACTION_SWITCH_DISPLAY_UNFOLD"; case 15: return "ACTION_UDFPS_ILLUMINATE"; case 16: return "ACTION_SHOW_BACK_ARROW"; default: throw new IllegalArgumentException("Invalid action"); } Loading
packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java +12 −5 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import android.view.WindowMetrics; import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; import com.android.internal.policy.GestureNavigationSettingsObserver; import com.android.internal.util.LatencyTracker; import com.android.systemui.R; import com.android.systemui.SystemUIFactory; import com.android.systemui.broadcast.BroadcastDispatcher; Loading Loading @@ -198,6 +199,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker private final Rect mNavBarOverlayExcludedBounds = new Rect(); private final Region mExcludeRegion = new Region(); private final Region mUnrestrictedExcludeRegion = new Region(); private final LatencyTracker mLatencyTracker; // The left side edge width where touch down is allowed private int mEdgeWidthLeft; Loading Loading @@ -302,7 +304,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker BroadcastDispatcher broadcastDispatcher, ProtoTracer protoTracer, NavigationModeController navigationModeController, ViewConfiguration viewConfiguration, WindowManager windowManager, IWindowManager windowManagerService, FalsingManager falsingManager) { FalsingManager falsingManager, LatencyTracker latencyTracker) { super(broadcastDispatcher); mContext = context; mDisplayId = context.getDisplayId(); Loading @@ -316,6 +318,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker mWindowManager = windowManager; mWindowManagerService = windowManagerService; mFalsingManager = falsingManager; mLatencyTracker = latencyTracker; ComponentName recentsComponentName = ComponentName.unflattenFromString( context.getString(com.android.internal.R.string.config_recentsComponentName)); if (recentsComponentName != null) { Loading Loading @@ -505,7 +508,8 @@ public class EdgeBackGestureHandler extends CurrentUserTracker Choreographer.getInstance(), this::onInputEvent); // Add a nav bar panel window setEdgeBackPlugin(new NavigationBarEdgePanel(mContext, mBackAnimation)); setEdgeBackPlugin( new NavigationBarEdgePanel(mContext, mBackAnimation, mLatencyTracker)); mPluginManager.addPluginListener( this, NavigationEdgeBackPlugin.class, /*allowMultiple=*/ false); } Loading @@ -520,7 +524,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker @Override public void onPluginDisconnected(NavigationEdgeBackPlugin plugin) { setEdgeBackPlugin(new NavigationBarEdgePanel(mContext, mBackAnimation)); setEdgeBackPlugin(new NavigationBarEdgePanel(mContext, mBackAnimation, mLatencyTracker)); } private void setEdgeBackPlugin(NavigationEdgeBackPlugin edgeBackPlugin) { Loading Loading @@ -968,6 +972,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker private final WindowManager mWindowManager; private final IWindowManager mWindowManagerService; private final FalsingManager mFalsingManager; private final LatencyTracker mLatencyTracker; @Inject public Factory(OverviewProxyService overviewProxyService, Loading @@ -975,7 +980,8 @@ public class EdgeBackGestureHandler extends CurrentUserTracker BroadcastDispatcher broadcastDispatcher, ProtoTracer protoTracer, NavigationModeController navigationModeController, ViewConfiguration viewConfiguration, WindowManager windowManager, IWindowManager windowManagerService, FalsingManager falsingManager) { IWindowManager windowManagerService, FalsingManager falsingManager, LatencyTracker latencyTracker) { mOverviewProxyService = overviewProxyService; mSysUiState = sysUiState; mPluginManager = pluginManager; Loading @@ -987,6 +993,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker mWindowManager = windowManager; mWindowManagerService = windowManagerService; mFalsingManager = falsingManager; mLatencyTracker = latencyTracker; } /** Construct a {@link EdgeBackGestureHandler}. */ Loading @@ -994,7 +1001,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker return new EdgeBackGestureHandler(context, mOverviewProxyService, mSysUiState, mPluginManager, mExecutor, mBroadcastDispatcher, mProtoTracer, mNavigationModeController, mViewConfiguration, mWindowManager, mWindowManagerService, mFalsingManager); mWindowManagerService, mFalsingManager, mLatencyTracker); } } Loading
packages/SystemUI/src/com/android/systemui/navigationbar/gestural/NavigationBarEdgePanel.java +11 −1 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ import androidx.dynamicanimation.animation.FloatPropertyCompat; import androidx.dynamicanimation.animation.SpringAnimation; import androidx.dynamicanimation.animation.SpringForce; import com.android.internal.util.LatencyTracker; import com.android.settingslib.Utils; import com.android.systemui.Dependency; import com.android.systemui.R; Loading Loading @@ -176,6 +177,7 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl private final ValueAnimator mArrowDisappearAnimation; private final SpringForce mRegularTranslationSpring; private final SpringForce mTriggerBackSpring; private final LatencyTracker mLatencyTracker; private VelocityTracker mVelocityTracker; private boolean mIsDark = false; Loading Loading @@ -225,6 +227,7 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl private float mDisappearAmount; private long mVibrationTime; private int mScreenSize; private boolean mTrackingBackArrowLatency = false; private final Handler mHandler = new Handler(); private final Runnable mFailsafeRunnable = this::onFailsafe; Loading Loading @@ -283,7 +286,7 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl private BackAnimation mBackAnimation; public NavigationBarEdgePanel(Context context, BackAnimation backAnimation) { BackAnimation backAnimation, LatencyTracker latencyTracker) { super(context); mWindowManager = context.getSystemService(WindowManager.class); Loading Loading @@ -383,6 +386,7 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl }, backgroundExecutor); mRegionSamplingHelper.setWindowVisible(true); mShowProtection = !isPrimaryDisplay; mLatencyTracker = latencyTracker; } public void setBackAnimation(BackAnimation backAnimation) { Loading Loading @@ -492,6 +496,8 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl updatePosition(event.getY()); mRegionSamplingHelper.start(mSamplingRect); mWindowManager.updateViewLayout(this, mLayoutParams); mLatencyTracker.onActionStart(LatencyTracker.ACTION_SHOW_BACK_ARROW); mTrackingBackArrowLatency = true; break; case MotionEvent.ACTION_MOVE: handleMoveEvent(event); Loading Loading @@ -547,6 +553,10 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl canvas.drawPath(arrowPath, mPaint); canvas.restore(); if (mTrackingBackArrowLatency) { mLatencyTracker.onActionEnd(LatencyTracker.ACTION_SHOW_BACK_ARROW); mTrackingBackArrowLatency = false; } } @Override Loading