| Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanel.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanel.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanel.java
|
| index b2b8d598c6f48b7252f3de23d789c67fdc813f07..6c47e6bb486f615b09a76b1cbc7ffd5a463b4533 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanel.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanel.java
|
| @@ -121,6 +121,9 @@ public class OverlayPanel extends OverlayPanelAnimation implements ActivityState
|
| /** If the panel should be ignoring swipe events (for compatibility mode). */
|
| private boolean mIgnoreSwipeEvents;
|
|
|
| + /** This is used to make sure there is one show request to one close request. */
|
| + private boolean mPanelShowRequested;
|
| +
|
| // ============================================================================================
|
| // Constructor
|
| // ============================================================================================
|
| @@ -184,7 +187,9 @@ public class OverlayPanel extends OverlayPanelAnimation implements ActivityState
|
|
|
| @Override
|
| public void closePanel(StateChangeReason reason, boolean animate) {
|
| - if (!isShowing()) return;
|
| + // If the panel hasn't peeked, then it shouldn't need to close.
|
| + if (!mPanelShowRequested) return;
|
| + mPanelShowRequested = false;
|
|
|
| super.closePanel(reason, animate);
|
| }
|
| @@ -194,7 +199,8 @@ public class OverlayPanel extends OverlayPanelAnimation implements ActivityState
|
| * @param reason The reason the panel is being shown.
|
| */
|
| public void requestPanelShow(StateChangeReason reason) {
|
| - if (isShowing()) return;
|
| + if (mPanelShowRequested) return;
|
| + mPanelShowRequested = true;
|
|
|
| if (mPanelManager != null) {
|
| mPanelManager.requestPanelShow(this, reason);
|
|
|