Merge "Track latency for showing the back arrow." into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9451a7a61e
@@ -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,
|
||||
@@ -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 */
|
||||
@@ -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 {
|
||||
@@ -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;
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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();
|
||||
@@ -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) {
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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) {
|
||||
@@ -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,
|
||||
@@ -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;
|
||||
@@ -987,6 +993,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker
|
||||
mWindowManager = windowManager;
|
||||
mWindowManagerService = windowManagerService;
|
||||
mFalsingManager = falsingManager;
|
||||
mLatencyTracker = latencyTracker;
|
||||
}
|
||||
|
||||
/** Construct a {@link EdgeBackGestureHandler}. */
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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);
|
||||
@@ -383,6 +386,7 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl
|
||||
}, backgroundExecutor);
|
||||
mRegionSamplingHelper.setWindowVisible(true);
|
||||
mShowProtection = !isPrimaryDisplay;
|
||||
mLatencyTracker = latencyTracker;
|
||||
}
|
||||
|
||||
public void setBackAnimation(BackAnimation backAnimation) {
|
||||
@@ -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);
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user