diff options
| author | 2021-05-03 12:39:23 +0000 | |
|---|---|---|
| committer | 2021-05-03 15:00:37 +0000 | |
| commit | 0842c932111f4680a446d19d92219959ddf5b618 (patch) | |
| tree | 8e4001f416855a237e86a42968adbe12ee2a95b1 | |
| parent | 90d8bcf8f0a3dce01f37c7898125fa5e6cdca1b7 (diff) | |
Revert "Fix a couple issues with nav bar & rotation button"
This reverts commit 90d8bcf8f0a3dce01f37c7898125fa5e6cdca1b7.
Reason for revert: Causes frequent flakes in presubmit
Bug: 187033888
Change-Id: I5a64f917e78b48f72552d0d8f99caee56f912cd5
7 files changed, 31 insertions, 61 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java index 4e41d75e3f43..56375adb3d4e 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java @@ -101,7 +101,6 @@ import android.view.WindowManager; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener; -import android.view.inputmethod.InputMethodManager; import androidx.annotation.VisibleForTesting; @@ -1176,9 +1175,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener, accessibilityButton.setOnLongClickListener(this::onAccessibilityLongClick); updateAccessibilityServicesState(mAccessibilityManager); - ButtonDispatcher imeSwitcherButton = mNavigationBarView.getImeSwitchButton(); - imeSwitcherButton.setOnClickListener(this::onImeSwitcherClick); - updateScreenPinningGestures(); } @@ -1278,11 +1274,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener, mCommandQueue.toggleRecentApps(); } - private void onImeSwitcherClick(View v) { - mContext.getSystemService(InputMethodManager.class).showInputMethodPickerFromSystem( - true /* showAuxiliarySubtypes */, mDisplayId); - }; - private boolean onLongPressBackHome(View v) { return onLongPressNavigationButtons(v, R.id.back, R.id.home); } @@ -1291,6 +1282,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener, return onLongPressNavigationButtons(v, R.id.back, R.id.recent_apps); } + /** * This handles long-press of both back and recents/home. Back is the common button with * combination of recents if it is visible or home if recents is invisible. diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java index 66cfae4315d8..3544f60601a8 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java @@ -217,9 +217,6 @@ public class NavigationBarController implements Callbacks, @Override public void onNavigationModeChanged(int mode) { - if (mNavMode == mode) { - return; - } final int oldMode = mNavMode; mNavMode = mode; mHandler.post(() -> { diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java index 4d9175b8db68..7342f91a8108 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java @@ -158,6 +158,7 @@ public class NavigationBarInflaterView extends FrameLayout } public void onLikelyDefaultLayoutChange() { + // Reevaluate new layout final String newValue = getDefaultLayout(); if (!Objects.equals(mCurrentLayout, newValue)) { diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java index bdd273515619..0ed4d861c712 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java @@ -166,7 +166,6 @@ public class NavigationBarView extends FrameLayout implements private NavigationBarInflaterView mNavigationInflaterView; private RecentsOnboarding mRecentsOnboarding; private NotificationPanelViewController mPanelView; - private RotationContextButton mRotationContextButton; private FloatingRotationButton mFloatingRotationButton; private RotationButtonController mRotationButtonController; private NavigationBarOverlayController mNavBarOverlayController; @@ -234,6 +233,14 @@ public class NavigationBarView extends FrameLayout implements } } + private final OnClickListener mImeSwitcherClickListener = new OnClickListener() { + @Override + public void onClick(View view) { + mContext.getSystemService(InputMethodManager.class).showInputMethodPickerFromSystem( + true /* showAuxiliarySubtypes */, getContext().getDisplayId()); + } + }; + private final AccessibilityDelegate mQuickStepAccessibilityDelegate = new AccessibilityDelegate() { private AccessibilityAction mToggleOverviewAction; @@ -304,26 +311,32 @@ public class NavigationBarView extends FrameLayout implements mIsVertical = false; mLongClickableAccessibilityButton = false; mNavBarMode = Dependency.get(NavigationModeController.class).addListener(this); + boolean isGesturalMode = isGesturalMode(mNavBarMode); mSysUiFlagContainer = Dependency.get(SysUiState.class); // Set up the context group of buttons mContextualButtonGroup = new ContextualButtonGroup(R.id.menu_container); final ContextualButton imeSwitcherButton = new ContextualButton(R.id.ime_switcher, mLightContext, R.drawable.ic_ime_switcher_default); + final RotationContextButton rotateSuggestionButton = new RotationContextButton( + R.id.rotate_suggestion, mLightContext, + R.drawable.ic_sysbar_rotate_button_ccw_start_0); final ContextualButton accessibilityButton = new ContextualButton(R.id.accessibility_button, mLightContext, R.drawable.ic_sysbar_accessibility_button); mContextualButtonGroup.addButton(imeSwitcherButton); + if (!isGesturalMode) { + mContextualButtonGroup.addButton(rotateSuggestionButton); + } mContextualButtonGroup.addButton(accessibilityButton); mOverviewProxyService = Dependency.get(OverviewProxyService.class); - mRotationContextButton = new RotationContextButton(R.id.rotate_suggestion, - mLightContext, R.drawable.ic_sysbar_rotate_button_ccw_start_0); mFloatingRotationButton = new FloatingRotationButton(context); mRecentsOnboarding = new RecentsOnboarding(context, mOverviewProxyService); mRotationButtonController = new RotationButtonController(mLightContext, - mLightIconColor, mDarkIconColor); - updateRotationButton(); + mLightIconColor, mDarkIconColor, + isGesturalMode ? mFloatingRotationButton : rotateSuggestionButton, + mRotationButtonListener); mNavBarOverlayController = Dependency.get(NavigationBarOverlayController.class); if (mNavBarOverlayController.isNavigationBarOverlayEnabled()) { @@ -344,6 +357,7 @@ public class NavigationBarView extends FrameLayout implements mButtonDispatchers.put(R.id.recent_apps, new ButtonDispatcher(R.id.recent_apps)); mButtonDispatchers.put(R.id.ime_switcher, imeSwitcherButton); mButtonDispatchers.put(R.id.accessibility_button, accessibilityButton); + mButtonDispatchers.put(R.id.rotate_suggestion, rotateSuggestionButton); mButtonDispatchers.put(R.id.menu_container, mContextualButtonGroup); mDeadZone = new DeadZone(this); @@ -541,23 +555,6 @@ public class NavigationBarView extends FrameLayout implements } } - /** - * Updates the rotation button based on the current navigation mode. - */ - private void updateRotationButton() { - if (isGesturalMode(mNavBarMode)) { - mContextualButtonGroup.removeButton(R.id.rotate_suggestion); - mButtonDispatchers.remove(R.id.rotate_suggestion); - mRotationButtonController.setRotationButton(mFloatingRotationButton, - mRotationButtonListener); - } else if (mContextualButtonGroup.getContextButton(R.id.rotate_suggestion) == null) { - mContextualButtonGroup.addButton(mRotationContextButton); - mButtonDispatchers.put(R.id.rotate_suggestion, mRotationContextButton); - mRotationButtonController.setRotationButton(mRotationContextButton, - mRotationButtonListener); - } - } - public KeyButtonDrawable getBackDrawable() { KeyButtonDrawable drawable = getDrawable(getBackDrawableRes()); orientBackButton(drawable); @@ -911,7 +908,6 @@ public class NavigationBarView extends FrameLayout implements mBarTransitions.onNavigationModeChanged(mNavBarMode); mEdgeBackGestureHandler.onNavigationModeChanged(mNavBarMode); mRecentsOnboarding.onNavigationModeChanged(mNavBarMode); - updateRotationButton(); if (isGesturalMode(mNavBarMode)) { mRegionSamplingHelper.start(mSamplingBounds); @@ -936,6 +932,7 @@ public class NavigationBarView extends FrameLayout implements mNavigationInflaterView = findViewById(R.id.navigation_inflater); mNavigationInflaterView.setButtonDispatchers(mButtonDispatchers); + getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener); updateOrientationViews(); reloadNavIcons(); } @@ -1030,9 +1027,6 @@ public class NavigationBarView extends FrameLayout implements private void updateButtonLocation(ButtonDispatcher button, boolean inScreenSpace, boolean useNearestRegion) { - if (button == null) { - return; - } View view = button.getCurrentView(); if (view == null || !button.isVisible()) { return; diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/RotationButtonController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/RotationButtonController.java index ddf089bac25e..4bcb0193c7d0 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/RotationButtonController.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/RotationButtonController.java @@ -66,10 +66,10 @@ public class RotationButtonController { private static final int NUM_ACCEPTED_ROTATION_SUGGESTIONS_FOR_INTRODUCTION = 3; private final Context mContext; + private final RotationButton mRotationButton; private final Handler mMainThreadHandler = new Handler(Looper.getMainLooper()); private final UiEventLogger mUiEventLogger = new UiEventLoggerImpl(); private final ViewRippler mViewRippler = new ViewRippler(); - private RotationButton mRotationButton; private int mLastRotationSuggestion; private boolean mPendingRotationSuggestion; @@ -125,21 +125,20 @@ public class RotationButtonController { } RotationButtonController(Context context, @ColorInt int lightIconColor, - @ColorInt int darkIconColor) { + @ColorInt int darkIconColor, RotationButton rotationButton, + Consumer<Boolean> visibilityChangedCallback) { mContext = context; mLightIconColor = lightIconColor; mDarkIconColor = darkIconColor; + mRotationButton = rotationButton; + mRotationButton.setRotationButtonController(this); mIsNavigationBarShowing = true; mRotationLockController = Dependency.get(RotationLockController.class); mAccessibilityManagerWrapper = Dependency.get(AccessibilityManagerWrapper.class); - mTaskStackListener = new TaskStackListenerImpl(); - } - void setRotationButton(RotationButton rotationButton, - Consumer<Boolean> visibilityChangedCallback) { - mRotationButton = rotationButton; - mRotationButton.setRotationButtonController(this); + // Register the task stack listener + mTaskStackListener = new TaskStackListenerImpl(); mRotationButton.setOnClickListener(this::onRotateSuggestionClick); mRotationButton.setOnHoverListener(this::onRotateSuggestionHover); mRotationButton.setVisibilityChangedCallback(visibilityChangedCallback); diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/ContextualButtonGroup.java b/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/ContextualButtonGroup.java index 2ace303986fe..50b638bcc903 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/ContextualButtonGroup.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/ContextualButtonGroup.java @@ -41,23 +41,10 @@ public class ContextualButtonGroup extends ButtonDispatcher { * @param button the button added to the group */ public void addButton(@NonNull ContextualButton button) { - // By default buttons in the context group are not visible until - // {@link #setButtonVisibility()) is called to show one of the buttons - button.setVisibility(View.INVISIBLE); button.attachToGroup(this); mButtonData.add(new ButtonData(button)); } - /** - * Removes a contextual button from the group. - */ - public void removeButton(@IdRes int buttonResId) { - int index = getContextButtonIndex(buttonResId); - if (index != INVALID_INDEX) { - mButtonData.remove(index); - } - } - public ContextualButton getContextButton(@IdRes int buttonResId) { int index = getContextButtonIndex(buttonResId); if (index != INVALID_INDEX) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarRotationContextTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarRotationContextTest.java index b85af4846390..47f41836f1a6 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarRotationContextTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarRotationContextTest.java @@ -62,8 +62,8 @@ public class NavigationBarRotationContextTest extends SysuiTestCase { final View view = new View(mContext); mRotationButton = mock(RotationButton.class); - mRotationButtonController = spy(new RotationButtonController(mContext, 0, 0)); - mRotationButtonController.setRotationButton(mRotationButton, (visibility) -> {}); + mRotationButtonController = spy(new RotationButtonController(mContext, 0, 0, + mRotationButton, (visibility) -> {})); final KeyButtonDrawable kbd = mock(KeyButtonDrawable.class); doReturn(view).when(mRotationButton).getCurrentView(); doReturn(true).when(mRotationButton).acceptRotationProposal(); |