Loading packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl +6 −0 Original line number Diff line number Diff line Loading @@ -123,4 +123,10 @@ oneway interface IOverviewProxy { * Sent when the assistant changes how visible it is to the user. */ void onAssistantVisibilityChanged(float visibility) = 14; /* * Sent when back is triggered. */ void onBackAction(boolean completed, int downX, int downY, boolean isButton, boolean gestureSwipeLeft) = 15; } packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +11 −0 Original line number Diff line number Diff line Loading @@ -444,6 +444,17 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis } } public void notifyBackAction(boolean completed, int downX, int downY, boolean isButton, boolean gestureSwipeLeft) { try { if (mOverviewProxy != null) { mOverviewProxy.onBackAction(completed, downX, downY, isButton, gestureSwipeLeft); } } catch (RemoteException e) { Log.e(TAG_OPS, "Failed to notify back action", e); } } /** * Sets the navbar region which can receive touch inputs */ Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java +9 −2 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import android.view.WindowManager; import android.view.WindowManagerGlobal; import com.android.systemui.R; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.shared.system.InputChannelCompat.InputEventReceiver; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.WindowManagerWrapper; Loading Loading @@ -102,6 +103,7 @@ public class EdgeBackGestureHandler implements DisplayListener { }; private final Context mContext; private final OverviewProxyService mOverviewProxyService; private final Point mDisplaySize = new Point(); private final int mDisplayId; Loading Loading @@ -137,11 +139,12 @@ public class EdgeBackGestureHandler implements DisplayListener { private NavigationBarEdgePanel mEdgePanel; private WindowManager.LayoutParams mEdgePanelLp; public EdgeBackGestureHandler(Context context) { public EdgeBackGestureHandler(Context context, OverviewProxyService overviewProxyService) { mContext = context; mDisplayId = context.getDisplayId(); mMainExecutor = context.getMainExecutor(); mWm = context.getSystemService(WindowManager.class); mOverviewProxyService = overviewProxyService; mEdgeWidth = QuickStepContract.getEdgeSensitivityWidth(context); mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); Loading Loading @@ -313,11 +316,15 @@ public class EdgeBackGestureHandler implements DisplayListener { float xDiff = ev.getX() - mDownPoint.x; boolean exceedsThreshold = mIsOnLeftEdge ? (xDiff > mSwipeThreshold) : (-xDiff > mSwipeThreshold); if (exceedsThreshold && Math.abs(xDiff) > Math.abs(ev.getY() - mDownPoint.y)) { boolean performAction = exceedsThreshold && Math.abs(xDiff) > Math.abs(ev.getY() - mDownPoint.y); if (performAction) { // Perform back sendEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK); sendEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK); } mOverviewProxyService.notifyBackAction(performAction, (int) mDownPoint.x, (int) mDownPoint.y, false /* isButton */, !mIsOnLeftEdge); } } } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +1 −1 Original line number Diff line number Diff line Loading @@ -285,7 +285,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav mButtonDispatchers.put(R.id.menu_container, mContextualButtonGroup); mDeadZone = new DeadZone(this); mEdgeBackGestureHandler = new EdgeBackGestureHandler(context); mEdgeBackGestureHandler = new EdgeBackGestureHandler(context, mOverviewProxyService); mTintController = new NavBarTintController(this, getLightTransitionsController()); } Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java +4 −0 Original line number Diff line number Diff line Loading @@ -308,6 +308,10 @@ public class KeyButtonView extends ImageView implements ButtonInterface { // TODO(b/122195391): Added logs to make sure sysui is sending back button events if (mCode == KeyEvent.KEYCODE_BACK && flags != KeyEvent.FLAG_LONG_PRESS) { Log.i(TAG, "Back button event: " + KeyEvent.actionToString(action)); if (action == MotionEvent.ACTION_UP) { mOverviewProxyService.notifyBackAction((flags & KeyEvent.FLAG_CANCELED) == 0, -1, -1, true /* isButton */, false /* gestureSwipeLeft */); } } final int repeatCount = (flags & KeyEvent.FLAG_LONG_PRESS) != 0 ? 1 : 0; final KeyEvent ev = new KeyEvent(mDownTime, when, action, mCode, repeatCount, Loading Loading
packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl +6 −0 Original line number Diff line number Diff line Loading @@ -123,4 +123,10 @@ oneway interface IOverviewProxy { * Sent when the assistant changes how visible it is to the user. */ void onAssistantVisibilityChanged(float visibility) = 14; /* * Sent when back is triggered. */ void onBackAction(boolean completed, int downX, int downY, boolean isButton, boolean gestureSwipeLeft) = 15; }
packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +11 −0 Original line number Diff line number Diff line Loading @@ -444,6 +444,17 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis } } public void notifyBackAction(boolean completed, int downX, int downY, boolean isButton, boolean gestureSwipeLeft) { try { if (mOverviewProxy != null) { mOverviewProxy.onBackAction(completed, downX, downY, isButton, gestureSwipeLeft); } } catch (RemoteException e) { Log.e(TAG_OPS, "Failed to notify back action", e); } } /** * Sets the navbar region which can receive touch inputs */ Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java +9 −2 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import android.view.WindowManager; import android.view.WindowManagerGlobal; import com.android.systemui.R; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.shared.system.InputChannelCompat.InputEventReceiver; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.WindowManagerWrapper; Loading Loading @@ -102,6 +103,7 @@ public class EdgeBackGestureHandler implements DisplayListener { }; private final Context mContext; private final OverviewProxyService mOverviewProxyService; private final Point mDisplaySize = new Point(); private final int mDisplayId; Loading Loading @@ -137,11 +139,12 @@ public class EdgeBackGestureHandler implements DisplayListener { private NavigationBarEdgePanel mEdgePanel; private WindowManager.LayoutParams mEdgePanelLp; public EdgeBackGestureHandler(Context context) { public EdgeBackGestureHandler(Context context, OverviewProxyService overviewProxyService) { mContext = context; mDisplayId = context.getDisplayId(); mMainExecutor = context.getMainExecutor(); mWm = context.getSystemService(WindowManager.class); mOverviewProxyService = overviewProxyService; mEdgeWidth = QuickStepContract.getEdgeSensitivityWidth(context); mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); Loading Loading @@ -313,11 +316,15 @@ public class EdgeBackGestureHandler implements DisplayListener { float xDiff = ev.getX() - mDownPoint.x; boolean exceedsThreshold = mIsOnLeftEdge ? (xDiff > mSwipeThreshold) : (-xDiff > mSwipeThreshold); if (exceedsThreshold && Math.abs(xDiff) > Math.abs(ev.getY() - mDownPoint.y)) { boolean performAction = exceedsThreshold && Math.abs(xDiff) > Math.abs(ev.getY() - mDownPoint.y); if (performAction) { // Perform back sendEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK); sendEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK); } mOverviewProxyService.notifyBackAction(performAction, (int) mDownPoint.x, (int) mDownPoint.y, false /* isButton */, !mIsOnLeftEdge); } } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +1 −1 Original line number Diff line number Diff line Loading @@ -285,7 +285,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav mButtonDispatchers.put(R.id.menu_container, mContextualButtonGroup); mDeadZone = new DeadZone(this); mEdgeBackGestureHandler = new EdgeBackGestureHandler(context); mEdgeBackGestureHandler = new EdgeBackGestureHandler(context, mOverviewProxyService); mTintController = new NavBarTintController(this, getLightTransitionsController()); } Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java +4 −0 Original line number Diff line number Diff line Loading @@ -308,6 +308,10 @@ public class KeyButtonView extends ImageView implements ButtonInterface { // TODO(b/122195391): Added logs to make sure sysui is sending back button events if (mCode == KeyEvent.KEYCODE_BACK && flags != KeyEvent.FLAG_LONG_PRESS) { Log.i(TAG, "Back button event: " + KeyEvent.actionToString(action)); if (action == MotionEvent.ACTION_UP) { mOverviewProxyService.notifyBackAction((flags & KeyEvent.FLAG_CANCELED) == 0, -1, -1, true /* isButton */, false /* gestureSwipeLeft */); } } final int repeatCount = (flags & KeyEvent.FLAG_LONG_PRESS) != 0 ? 1 : 0; final KeyEvent ev = new KeyEvent(mDownTime, when, action, mCode, repeatCount, Loading