summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alison Cichowlas <asc@google.com> 2021-05-03 12:39:23 +0000
committer Winson Chung <winsonc@google.com> 2021-05-03 15:00:37 +0000
commit0842c932111f4680a446d19d92219959ddf5b618 (patch)
tree8e4001f416855a237e86a42968adbe12ee2a95b1
parent90d8bcf8f0a3dce01f37c7898125fa5e6cdca1b7 (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
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java46
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/RotationButtonController.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/buttons/ContextualButtonGroup.java13
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarRotationContextTest.java4
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();