From 0ec86244164d7e06c036b299a9ce33207af9183d Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Mon, 22 Jun 2020 13:30:49 -0700 Subject: [PATCH] Updating SysUI state when back enabled/disabled state change Bug: 159504323 Test: Verified on device Change-Id: I33871080f7b836c4435fd4c99601611def5aa3a8 --- .../phone/EdgeBackGestureHandler.java | 18 +++++++++++++++--- .../statusbar/phone/NavigationBarView.java | 4 ++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java index 5926a5b86acdc..304fe0090e779 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java @@ -121,6 +121,8 @@ public class EdgeBackGestureHandler extends CurrentUserTracker implements Displa private final Context mContext; private final OverviewProxyService mOverviewProxyService; + private final Runnable mStateChangeCallback; + private final PluginManager mPluginManager; // Activities which should not trigger Back gesture. private final List mGestureBlockingActivities = new ArrayList<>(); @@ -196,13 +198,15 @@ public class EdgeBackGestureHandler extends CurrentUserTracker implements Displa }; public EdgeBackGestureHandler(Context context, OverviewProxyService overviewProxyService, - SysUiState sysUiFlagContainer, PluginManager pluginManager) { + SysUiState sysUiFlagContainer, PluginManager pluginManager, + Runnable stateChangeCallback) { super(Dependency.get(BroadcastDispatcher.class)); mContext = context; mDisplayId = context.getDisplayId(); mMainExecutor = context.getMainExecutor(); mOverviewProxyService = overviewProxyService; mPluginManager = pluginManager; + mStateChangeCallback = stateChangeCallback; ComponentName recentsComponentName = ComponentName.unflattenFromString( context.getString(com.android.internal.R.string.config_recentsComponentName)); if (recentsComponentName != null) { @@ -226,13 +230,13 @@ public class EdgeBackGestureHandler extends CurrentUserTracker implements Displa Log.e(TAG, "Failed to add gesture blocking activities", e); } } - Dependency.get(ProtoTracer.class).add(this); + Dependency.get(ProtoTracer.class).add(this); mLongPressTimeout = Math.min(MAX_LONG_PRESS_TIMEOUT, ViewConfiguration.getLongPressTimeout()); mGestureNavigationSettingsObserver = new GestureNavigationSettingsObserver( - mContext.getMainThreadHandler(), mContext, this::updateCurrentUserResources); + mContext.getMainThreadHandler(), mContext, this::onNavigationSettingsChanged); updateCurrentUserResources(); sysUiFlagContainer.addCallback(sysUiFlags -> mSysUiFlags = sysUiFlags); @@ -263,6 +267,14 @@ public class EdgeBackGestureHandler extends CurrentUserTracker implements Displa mTouchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop() * backGestureSlop; } + private void onNavigationSettingsChanged() { + boolean wasBackAllowed = isHandlingGestures(); + updateCurrentUserResources(); + if (wasBackAllowed != isHandlingGestures()) { + mStateChangeCallback.run(); + } + } + @Override public void onUserSwitched(int newUserId) { updateIsEnabled(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index dbff643c6e32b..1eab427b41552 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -326,8 +326,8 @@ public class NavigationBarView extends FrameLayout implements mNavColorSampleMargin = getResources() .getDimensionPixelSize(R.dimen.navigation_handle_sample_horizontal_margin); - mEdgeBackGestureHandler = new EdgeBackGestureHandler( - context, mOverviewProxyService, mSysUiFlagContainer, mPluginManager); + mEdgeBackGestureHandler = new EdgeBackGestureHandler(context, mOverviewProxyService, + mSysUiFlagContainer, mPluginManager, this::updateStates); mRegionSamplingHelper = new RegionSamplingHelper(this, new RegionSamplingHelper.SamplingCallback() { @Override