Loading packages/SystemUI/src/com/android/systemui/Dependency.java +3 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import com.android.systemui.model.SysUiState; import com.android.systemui.navigationbar.NavigationBarController; import com.android.systemui.navigationbar.NavigationBarOverlayController; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.PluginDependencyProvider; Loading Loading @@ -356,6 +357,7 @@ public class Dependency { @Inject Lazy<TelephonyListenerManager> mTelephonyListenerManager; @Inject Lazy<SystemStatusAnimationScheduler> mSystemStatusAnimationSchedulerLazy; @Inject Lazy<PrivacyDotViewController> mPrivacyDotViewControllerLazy; @Inject Lazy<EdgeBackGestureHandler> mEdgeBackGestureHandler; @Inject public Dependency() { Loading Loading @@ -568,6 +570,7 @@ public class Dependency { mProviders.put(SystemStatusAnimationScheduler.class, mSystemStatusAnimationSchedulerLazy::get); mProviders.put(PrivacyDotViewController.class, mPrivacyDotViewControllerLazy::get); mProviders.put(EdgeBackGestureHandler.class, mEdgeBackGestureHandler::get); Dependency.setInstance(this); } Loading packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java +8 −5 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.classifier; import static com.android.systemui.classifier.Classifier.BACK_GESTURE; import static com.android.systemui.classifier.Classifier.GENERIC; import static com.android.systemui.classifier.FalsingManagerProxy.FALSING_SUCCESS; import static com.android.systemui.classifier.FalsingModule.BRIGHT_LINE_GESTURE_CLASSIFERS; Loading Loading @@ -196,7 +198,7 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseTouch(@Classifier.InteractionType int interactionType) { mPriorInteractionType = interactionType; if (skipFalsing()) { if (skipFalsing(interactionType)) { mPriorResults = getPassedResult(1); logDebug("Skipped falsing"); return false; Loading Loading @@ -229,7 +231,7 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseTap(@Penalty int penalty) { if (skipFalsing()) { if (skipFalsing(GENERIC)) { mPriorResults = getPassedResult(1); logDebug("Skipped falsing"); return false; Loading Loading @@ -291,7 +293,7 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseDoubleTap() { if (skipFalsing()) { if (skipFalsing(GENERIC)) { mPriorResults = getPassedResult(1); logDebug("Skipped falsing"); return false; Loading @@ -306,8 +308,9 @@ public class BrightLineFalsingManager implements FalsingManager { return result.isFalse(); } private boolean skipFalsing() { return !mKeyguardStateController.isShowing() private boolean skipFalsing(@Classifier.InteractionType int interactionType) { return interactionType == BACK_GESTURE || !mKeyguardStateController.isShowing() || mTestHarness || mDataProvider.isJustUnlockedWithFace() || mDockManager.isDocked(); Loading packages/SystemUI/src/com/android/systemui/classifier/Classifier.java +3 −1 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ public abstract class Classifier { public static final int UDFPS_AUTHENTICATION = 13; public static final int DISABLED_UDFPS_AFFORDANCE = 14; public static final int QS_SWIPE = 15; public static final int BACK_GESTURE = 16; @IntDef({ QUICK_SETTINGS, Loading @@ -61,7 +62,8 @@ public abstract class Classifier { BRIGHTNESS_SLIDER, UDFPS_AUTHENTICATION, DISABLED_UDFPS_AFFORDANCE, QS_SWIPE QS_SWIPE, BACK_GESTURE }) @Retention(RetentionPolicy.SOURCE) public @interface InteractionType {} Loading packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java +2 −5 Original line number Diff line number Diff line Loading @@ -83,7 +83,6 @@ import com.android.systemui.navigationbar.gestural.RegionSamplingHelper; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.recents.Recents; import com.android.systemui.recents.RecentsOnboarding; import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.SysUiStatsLog; Loading Loading @@ -113,7 +112,6 @@ public class NavigationBarView extends FrameLayout implements private final RegionSamplingHelper mRegionSamplingHelper; private final int mNavColorSampleMargin; private final SysUiState mSysUiFlagContainer; private final PluginManager mPluginManager; View mCurrentView = null; private View mVertical; Loading Loading @@ -316,7 +314,6 @@ public class NavigationBarView extends FrameLayout implements boolean isGesturalMode = isGesturalMode(mNavBarMode); mSysUiFlagContainer = Dependency.get(SysUiState.class); mPluginManager = Dependency.get(PluginManager.class); // Set up the context group of buttons mContextualButtonGroup = new ContextualButtonGroup(R.id.menu_container); final ContextualButton imeSwitcherButton = new ContextualButton(R.id.ime_switcher, Loading Loading @@ -366,8 +363,8 @@ public class NavigationBarView extends FrameLayout implements mNavColorSampleMargin = getResources() .getDimensionPixelSize(R.dimen.navigation_handle_sample_horizontal_margin); mEdgeBackGestureHandler = new EdgeBackGestureHandler(context, mOverviewProxyService, mSysUiFlagContainer, mPluginManager, this::updateStates); mEdgeBackGestureHandler = Dependency.get(EdgeBackGestureHandler.class); mEdgeBackGestureHandler.setStateChangeCallback(this::updateStates); mRegionSamplingHelper = new RegionSamplingHelper(this, new RegionSamplingHelper.SamplingCallback() { @Override Loading packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java +48 −25 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ package com.android.systemui.navigationbar.gestural; import static com.android.systemui.classifier.Classifier.BACK_GESTURE; import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; Loading @@ -27,8 +29,6 @@ import android.graphics.Point; import android.graphics.PointF; import android.graphics.Rect; import android.graphics.Region; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager.DisplayListener; import android.hardware.input.InputManager; import android.os.Looper; import android.os.RemoteException; Loading @@ -41,6 +41,7 @@ import android.util.TypedValue; import android.view.Choreographer; import android.view.Display; import android.view.ISystemGestureExclusionListener; import android.view.IWindowManager; import android.view.InputDevice; import android.view.InputEvent; import android.view.InputMonitor; Loading @@ -50,18 +51,19 @@ import android.view.MotionEvent; import android.view.Surface; import android.view.ViewConfiguration; import android.view.WindowManager; import android.view.WindowManagerGlobal; import android.view.WindowMetrics; import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; import com.android.internal.policy.GestureNavigationSettingsObserver; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.SystemUIFactory; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.model.SysUiState; import com.android.systemui.navigationbar.NavigationBarView; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.NavigationEdgeBackPlugin; import com.android.systemui.plugins.PluginListener; import com.android.systemui.recents.OverviewProxyService; Loading @@ -85,9 +87,12 @@ import java.util.List; import java.util.Map; import java.util.concurrent.Executor; import javax.inject.Inject; /** * Utility class to handle edge swipes for back gesture */ @SysUISingleton public class EdgeBackGestureHandler extends CurrentUserTracker implements PluginListener<NavigationEdgeBackPlugin>, ProtoTraceable<SystemUiTraceProto> { Loading Loading @@ -164,9 +169,15 @@ public class EdgeBackGestureHandler extends CurrentUserTracker private final Context mContext; private final OverviewProxyService mOverviewProxyService; private final SysUiState mSysUiState; private final Runnable mStateChangeCallback; private Runnable mStateChangeCallback; private final PluginManager mPluginManager; private final ProtoTracer mProtoTracer; private final NavigationModeController mNavigationModeController; private final ViewConfiguration mViewConfiguration; private final WindowManager mWindowManager; private final IWindowManager mWindowManagerService; private final FalsingManager mFalsingManager; // Activities which should not trigger Back gesture. private final List<ComponentName> mGestureBlockingActivities = new ArrayList<>(); Loading Loading @@ -237,6 +248,9 @@ public class EdgeBackGestureHandler extends CurrentUserTracker new NavigationEdgeBackPlugin.BackCallback() { @Override public void triggerBack() { // Notify FalsingManager that an intentional gesture has occurred. // TODO(b/186519446): use a different method than isFalseTouch mFalsingManager.isFalseTouch(BACK_GESTURE); boolean sendDown = sendEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK); boolean sendUp = sendEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK); if (DEBUG_MISSING_GESTURE) { Loading Loading @@ -267,16 +281,26 @@ public class EdgeBackGestureHandler extends CurrentUserTracker } }; @Inject public EdgeBackGestureHandler(Context context, OverviewProxyService overviewProxyService, SysUiState sysUiState, PluginManager pluginManager, Runnable stateChangeCallback) { super(Dependency.get(BroadcastDispatcher.class)); SysUiState sysUiState, PluginManager pluginManager, @Main Executor executor, BroadcastDispatcher broadcastDispatcher, ProtoTracer protoTracer, NavigationModeController navigationModeController, ViewConfiguration viewConfiguration, WindowManager windowManager, IWindowManager windowManagerService, FalsingManager falsingManager) { super(broadcastDispatcher); mContext = context; mDisplayId = context.getDisplayId(); mMainExecutor = context.getMainExecutor(); mMainExecutor = executor; mOverviewProxyService = overviewProxyService; mSysUiState = sysUiState; mPluginManager = pluginManager; mStateChangeCallback = stateChangeCallback; mProtoTracer = protoTracer; mNavigationModeController = navigationModeController; mViewConfiguration = viewConfiguration; mWindowManager = windowManager; mWindowManagerService = windowManagerService; mFalsingManager = falsingManager; ComponentName recentsComponentName = ComponentName.unflattenFromString( context.getString(com.android.internal.R.string.config_recentsComponentName)); if (recentsComponentName != null) { Loading Loading @@ -309,9 +333,12 @@ public class EdgeBackGestureHandler extends CurrentUserTracker updateCurrentUserResources(); } public void setStateChangeCallback(Runnable callback) { mStateChangeCallback = callback; } public void updateCurrentUserResources() { Resources res = Dependency.get(NavigationModeController.class).getCurrentUserContext() .getResources(); Resources res = mNavigationModeController.getCurrentUserContext().getResources(); mEdgeWidthLeft = mGestureNavigationSettingsObserver.getLeftSensitivity(res); mEdgeWidthRight = mGestureNavigationSettingsObserver.getRightSensitivity(res); mIsBackGestureAllowed = Loading @@ -336,7 +363,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker // TODO(b/130352502) Tune this value and extract into a constant final float backGestureSlop = DeviceConfig.getFloat(DeviceConfig.NAMESPACE_SYSTEMUI, SystemUiDeviceConfigFlags.BACK_GESTURE_SLOP_MULTIPLIER, 0.75f); mTouchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop() * backGestureSlop; mTouchSlop = mViewConfiguration.getScaledTouchSlop() * backGestureSlop; } private void onNavigationSettingsChanged() { Loading @@ -358,7 +385,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker */ public void onNavBarAttached() { mIsAttached = true; Dependency.get(ProtoTracer.class).add(this); mProtoTracer.add(this); mOverviewProxyService.addCallback(mQuickSwitchListener); mSysUiState.addCallback(mSysUiStateCallback); updateIsEnabled(); Loading @@ -370,7 +397,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker */ public void onNavBarDetached() { mIsAttached = false; Dependency.get(ProtoTracer.class).remove(this); mProtoTracer.remove(this); mOverviewProxyService.removeCallback(mQuickSwitchListener); mSysUiState.removeCallback(mSysUiStateCallback); updateIsEnabled(); Loading Loading @@ -424,8 +451,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker DeviceConfig.removeOnPropertiesChangedListener(mOnPropertiesChangedListener); try { WindowManagerGlobal.getWindowManagerService() .unregisterSystemGestureExclusionListener( mWindowManagerService.unregisterSystemGestureExclusionListener( mGestureExclusionListener, mDisplayId); } catch (RemoteException | IllegalArgumentException e) { Log.e(TAG, "Failed to unregister window manager callbacks", e); Loading @@ -439,12 +465,10 @@ public class EdgeBackGestureHandler extends CurrentUserTracker } TaskStackChangeListeners.getInstance().registerTaskStackListener(mTaskStackListener); DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI, runnable -> (mContext.getMainThreadHandler()).post(runnable), mOnPropertiesChangedListener); mMainExecutor::execute, mOnPropertiesChangedListener); try { WindowManagerGlobal.getWindowManagerService() .registerSystemGestureExclusionListener( mWindowManagerService.registerSystemGestureExclusionListener( mGestureExclusionListener, mDisplayId); } catch (RemoteException | IllegalArgumentException e) { Log.e(TAG, "Failed to register window manager callbacks", e); Loading Loading @@ -801,7 +825,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker } } Dependency.get(ProtoTracer.class).scheduleFrameUpdate(); mProtoTracer.scheduleFrameUpdate(); } private void updateDisabledForQuickstep(Configuration newConfig) { Loading @@ -822,8 +846,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker } private void updateDisplaySize() { WindowMetrics metrics = mContext.getSystemService(WindowManager.class) .getMaximumWindowMetrics(); WindowMetrics metrics = mWindowManager.getMaximumWindowMetrics(); Rect bounds = metrics.getBounds(); mDisplaySize.set(bounds.width(), bounds.height()); if (DEBUG_MISSING_GESTURE) { Loading Loading
packages/SystemUI/src/com/android/systemui/Dependency.java +3 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import com.android.systemui.model.SysUiState; import com.android.systemui.navigationbar.NavigationBarController; import com.android.systemui.navigationbar.NavigationBarOverlayController; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.PluginDependencyProvider; Loading Loading @@ -356,6 +357,7 @@ public class Dependency { @Inject Lazy<TelephonyListenerManager> mTelephonyListenerManager; @Inject Lazy<SystemStatusAnimationScheduler> mSystemStatusAnimationSchedulerLazy; @Inject Lazy<PrivacyDotViewController> mPrivacyDotViewControllerLazy; @Inject Lazy<EdgeBackGestureHandler> mEdgeBackGestureHandler; @Inject public Dependency() { Loading Loading @@ -568,6 +570,7 @@ public class Dependency { mProviders.put(SystemStatusAnimationScheduler.class, mSystemStatusAnimationSchedulerLazy::get); mProviders.put(PrivacyDotViewController.class, mPrivacyDotViewControllerLazy::get); mProviders.put(EdgeBackGestureHandler.class, mEdgeBackGestureHandler::get); Dependency.setInstance(this); } Loading
packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java +8 −5 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.classifier; import static com.android.systemui.classifier.Classifier.BACK_GESTURE; import static com.android.systemui.classifier.Classifier.GENERIC; import static com.android.systemui.classifier.FalsingManagerProxy.FALSING_SUCCESS; import static com.android.systemui.classifier.FalsingModule.BRIGHT_LINE_GESTURE_CLASSIFERS; Loading Loading @@ -196,7 +198,7 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseTouch(@Classifier.InteractionType int interactionType) { mPriorInteractionType = interactionType; if (skipFalsing()) { if (skipFalsing(interactionType)) { mPriorResults = getPassedResult(1); logDebug("Skipped falsing"); return false; Loading Loading @@ -229,7 +231,7 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseTap(@Penalty int penalty) { if (skipFalsing()) { if (skipFalsing(GENERIC)) { mPriorResults = getPassedResult(1); logDebug("Skipped falsing"); return false; Loading Loading @@ -291,7 +293,7 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseDoubleTap() { if (skipFalsing()) { if (skipFalsing(GENERIC)) { mPriorResults = getPassedResult(1); logDebug("Skipped falsing"); return false; Loading @@ -306,8 +308,9 @@ public class BrightLineFalsingManager implements FalsingManager { return result.isFalse(); } private boolean skipFalsing() { return !mKeyguardStateController.isShowing() private boolean skipFalsing(@Classifier.InteractionType int interactionType) { return interactionType == BACK_GESTURE || !mKeyguardStateController.isShowing() || mTestHarness || mDataProvider.isJustUnlockedWithFace() || mDockManager.isDocked(); Loading
packages/SystemUI/src/com/android/systemui/classifier/Classifier.java +3 −1 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ public abstract class Classifier { public static final int UDFPS_AUTHENTICATION = 13; public static final int DISABLED_UDFPS_AFFORDANCE = 14; public static final int QS_SWIPE = 15; public static final int BACK_GESTURE = 16; @IntDef({ QUICK_SETTINGS, Loading @@ -61,7 +62,8 @@ public abstract class Classifier { BRIGHTNESS_SLIDER, UDFPS_AUTHENTICATION, DISABLED_UDFPS_AFFORDANCE, QS_SWIPE QS_SWIPE, BACK_GESTURE }) @Retention(RetentionPolicy.SOURCE) public @interface InteractionType {} Loading
packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java +2 −5 Original line number Diff line number Diff line Loading @@ -83,7 +83,6 @@ import com.android.systemui.navigationbar.gestural.RegionSamplingHelper; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.recents.Recents; import com.android.systemui.recents.RecentsOnboarding; import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.SysUiStatsLog; Loading Loading @@ -113,7 +112,6 @@ public class NavigationBarView extends FrameLayout implements private final RegionSamplingHelper mRegionSamplingHelper; private final int mNavColorSampleMargin; private final SysUiState mSysUiFlagContainer; private final PluginManager mPluginManager; View mCurrentView = null; private View mVertical; Loading Loading @@ -316,7 +314,6 @@ public class NavigationBarView extends FrameLayout implements boolean isGesturalMode = isGesturalMode(mNavBarMode); mSysUiFlagContainer = Dependency.get(SysUiState.class); mPluginManager = Dependency.get(PluginManager.class); // Set up the context group of buttons mContextualButtonGroup = new ContextualButtonGroup(R.id.menu_container); final ContextualButton imeSwitcherButton = new ContextualButton(R.id.ime_switcher, Loading Loading @@ -366,8 +363,8 @@ public class NavigationBarView extends FrameLayout implements mNavColorSampleMargin = getResources() .getDimensionPixelSize(R.dimen.navigation_handle_sample_horizontal_margin); mEdgeBackGestureHandler = new EdgeBackGestureHandler(context, mOverviewProxyService, mSysUiFlagContainer, mPluginManager, this::updateStates); mEdgeBackGestureHandler = Dependency.get(EdgeBackGestureHandler.class); mEdgeBackGestureHandler.setStateChangeCallback(this::updateStates); mRegionSamplingHelper = new RegionSamplingHelper(this, new RegionSamplingHelper.SamplingCallback() { @Override Loading
packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java +48 −25 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ package com.android.systemui.navigationbar.gestural; import static com.android.systemui.classifier.Classifier.BACK_GESTURE; import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; Loading @@ -27,8 +29,6 @@ import android.graphics.Point; import android.graphics.PointF; import android.graphics.Rect; import android.graphics.Region; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager.DisplayListener; import android.hardware.input.InputManager; import android.os.Looper; import android.os.RemoteException; Loading @@ -41,6 +41,7 @@ import android.util.TypedValue; import android.view.Choreographer; import android.view.Display; import android.view.ISystemGestureExclusionListener; import android.view.IWindowManager; import android.view.InputDevice; import android.view.InputEvent; import android.view.InputMonitor; Loading @@ -50,18 +51,19 @@ import android.view.MotionEvent; import android.view.Surface; import android.view.ViewConfiguration; import android.view.WindowManager; import android.view.WindowManagerGlobal; import android.view.WindowMetrics; import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; import com.android.internal.policy.GestureNavigationSettingsObserver; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.SystemUIFactory; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.model.SysUiState; import com.android.systemui.navigationbar.NavigationBarView; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.NavigationEdgeBackPlugin; import com.android.systemui.plugins.PluginListener; import com.android.systemui.recents.OverviewProxyService; Loading @@ -85,9 +87,12 @@ import java.util.List; import java.util.Map; import java.util.concurrent.Executor; import javax.inject.Inject; /** * Utility class to handle edge swipes for back gesture */ @SysUISingleton public class EdgeBackGestureHandler extends CurrentUserTracker implements PluginListener<NavigationEdgeBackPlugin>, ProtoTraceable<SystemUiTraceProto> { Loading Loading @@ -164,9 +169,15 @@ public class EdgeBackGestureHandler extends CurrentUserTracker private final Context mContext; private final OverviewProxyService mOverviewProxyService; private final SysUiState mSysUiState; private final Runnable mStateChangeCallback; private Runnable mStateChangeCallback; private final PluginManager mPluginManager; private final ProtoTracer mProtoTracer; private final NavigationModeController mNavigationModeController; private final ViewConfiguration mViewConfiguration; private final WindowManager mWindowManager; private final IWindowManager mWindowManagerService; private final FalsingManager mFalsingManager; // Activities which should not trigger Back gesture. private final List<ComponentName> mGestureBlockingActivities = new ArrayList<>(); Loading Loading @@ -237,6 +248,9 @@ public class EdgeBackGestureHandler extends CurrentUserTracker new NavigationEdgeBackPlugin.BackCallback() { @Override public void triggerBack() { // Notify FalsingManager that an intentional gesture has occurred. // TODO(b/186519446): use a different method than isFalseTouch mFalsingManager.isFalseTouch(BACK_GESTURE); boolean sendDown = sendEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK); boolean sendUp = sendEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK); if (DEBUG_MISSING_GESTURE) { Loading Loading @@ -267,16 +281,26 @@ public class EdgeBackGestureHandler extends CurrentUserTracker } }; @Inject public EdgeBackGestureHandler(Context context, OverviewProxyService overviewProxyService, SysUiState sysUiState, PluginManager pluginManager, Runnable stateChangeCallback) { super(Dependency.get(BroadcastDispatcher.class)); SysUiState sysUiState, PluginManager pluginManager, @Main Executor executor, BroadcastDispatcher broadcastDispatcher, ProtoTracer protoTracer, NavigationModeController navigationModeController, ViewConfiguration viewConfiguration, WindowManager windowManager, IWindowManager windowManagerService, FalsingManager falsingManager) { super(broadcastDispatcher); mContext = context; mDisplayId = context.getDisplayId(); mMainExecutor = context.getMainExecutor(); mMainExecutor = executor; mOverviewProxyService = overviewProxyService; mSysUiState = sysUiState; mPluginManager = pluginManager; mStateChangeCallback = stateChangeCallback; mProtoTracer = protoTracer; mNavigationModeController = navigationModeController; mViewConfiguration = viewConfiguration; mWindowManager = windowManager; mWindowManagerService = windowManagerService; mFalsingManager = falsingManager; ComponentName recentsComponentName = ComponentName.unflattenFromString( context.getString(com.android.internal.R.string.config_recentsComponentName)); if (recentsComponentName != null) { Loading Loading @@ -309,9 +333,12 @@ public class EdgeBackGestureHandler extends CurrentUserTracker updateCurrentUserResources(); } public void setStateChangeCallback(Runnable callback) { mStateChangeCallback = callback; } public void updateCurrentUserResources() { Resources res = Dependency.get(NavigationModeController.class).getCurrentUserContext() .getResources(); Resources res = mNavigationModeController.getCurrentUserContext().getResources(); mEdgeWidthLeft = mGestureNavigationSettingsObserver.getLeftSensitivity(res); mEdgeWidthRight = mGestureNavigationSettingsObserver.getRightSensitivity(res); mIsBackGestureAllowed = Loading @@ -336,7 +363,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker // TODO(b/130352502) Tune this value and extract into a constant final float backGestureSlop = DeviceConfig.getFloat(DeviceConfig.NAMESPACE_SYSTEMUI, SystemUiDeviceConfigFlags.BACK_GESTURE_SLOP_MULTIPLIER, 0.75f); mTouchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop() * backGestureSlop; mTouchSlop = mViewConfiguration.getScaledTouchSlop() * backGestureSlop; } private void onNavigationSettingsChanged() { Loading @@ -358,7 +385,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker */ public void onNavBarAttached() { mIsAttached = true; Dependency.get(ProtoTracer.class).add(this); mProtoTracer.add(this); mOverviewProxyService.addCallback(mQuickSwitchListener); mSysUiState.addCallback(mSysUiStateCallback); updateIsEnabled(); Loading @@ -370,7 +397,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker */ public void onNavBarDetached() { mIsAttached = false; Dependency.get(ProtoTracer.class).remove(this); mProtoTracer.remove(this); mOverviewProxyService.removeCallback(mQuickSwitchListener); mSysUiState.removeCallback(mSysUiStateCallback); updateIsEnabled(); Loading Loading @@ -424,8 +451,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker DeviceConfig.removeOnPropertiesChangedListener(mOnPropertiesChangedListener); try { WindowManagerGlobal.getWindowManagerService() .unregisterSystemGestureExclusionListener( mWindowManagerService.unregisterSystemGestureExclusionListener( mGestureExclusionListener, mDisplayId); } catch (RemoteException | IllegalArgumentException e) { Log.e(TAG, "Failed to unregister window manager callbacks", e); Loading @@ -439,12 +465,10 @@ public class EdgeBackGestureHandler extends CurrentUserTracker } TaskStackChangeListeners.getInstance().registerTaskStackListener(mTaskStackListener); DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI, runnable -> (mContext.getMainThreadHandler()).post(runnable), mOnPropertiesChangedListener); mMainExecutor::execute, mOnPropertiesChangedListener); try { WindowManagerGlobal.getWindowManagerService() .registerSystemGestureExclusionListener( mWindowManagerService.registerSystemGestureExclusionListener( mGestureExclusionListener, mDisplayId); } catch (RemoteException | IllegalArgumentException e) { Log.e(TAG, "Failed to register window manager callbacks", e); Loading Loading @@ -801,7 +825,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker } } Dependency.get(ProtoTracer.class).scheduleFrameUpdate(); mProtoTracer.scheduleFrameUpdate(); } private void updateDisabledForQuickstep(Configuration newConfig) { Loading @@ -822,8 +846,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker } private void updateDisplaySize() { WindowMetrics metrics = mContext.getSystemService(WindowManager.class) .getMaximumWindowMetrics(); WindowMetrics metrics = mWindowManager.getMaximumWindowMetrics(); Rect bounds = metrics.getBounds(); mDisplaySize.set(bounds.width(), bounds.height()); if (DEBUG_MISSING_GESTURE) { Loading