| Index: chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheet.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheet.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheet.java
|
| index 6549ec5fe1feca81f3b860b7d38edc3b3ba23241..a115135d59af7bc65267642ef4961de909061721 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheet.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheet.java
|
| @@ -33,6 +33,7 @@ import org.chromium.chrome.browser.tabmodel.TabModel;
|
| import org.chromium.chrome.browser.tabmodel.TabModelSelector;
|
| import org.chromium.chrome.browser.util.MathUtils;
|
| import org.chromium.chrome.browser.widget.FadingBackgroundView;
|
| +import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetContentController.ContentType;
|
| import org.chromium.content_public.browser.LoadUrlParams;
|
|
|
| import java.lang.annotation.Retention;
|
| @@ -151,6 +152,9 @@ public class BottomSheet
|
| /** The last non-default toolbar view that was attached to mToolbarHolder. */
|
| private View mLastToolbarView;
|
|
|
| + /** Whether the sheet is currently open. */
|
| + private boolean mIsSheetOpen;
|
| +
|
| /**
|
| * An interface defining content that can be displayed inside of the bottom sheet for Chrome
|
| * Home.
|
| @@ -182,6 +186,12 @@ public class BottomSheet
|
| * Called to destroy the BottomSheetContent when it is no longer in use.
|
| */
|
| void destroy();
|
| +
|
| + /**
|
| + * @return The {@link BottomSheetContentController.ContentType} for this content.
|
| + */
|
| + @ContentType
|
| + int getType();
|
| }
|
|
|
| /**
|
| @@ -271,6 +281,8 @@ public class BottomSheet
|
|
|
| mGestureDetector = new GestureDetector(context, new BottomSheetSwipeDetector());
|
| mGestureDetector.setIsLongpressEnabled(false);
|
| +
|
| + addObserver(new BottomSheetMetrics());
|
| }
|
|
|
| @Override
|
| @@ -505,6 +517,10 @@ public class BottomSheet
|
| } else {
|
| mDefaultToolbarView.setVisibility(View.VISIBLE);
|
| }
|
| +
|
| + for (BottomSheetObserver o : mObservers) {
|
| + o.onSheetContentChanged(mSheetContent);
|
| + }
|
| }
|
|
|
| /**
|
| @@ -525,6 +541,9 @@ public class BottomSheet
|
| * A notification that the sheet is exiting the peek state into one that shows content.
|
| */
|
| private void onSheetOpened() {
|
| + if (mIsSheetOpen) return;
|
| +
|
| + mIsSheetOpen = true;
|
| for (BottomSheetObserver o : mObservers) o.onSheetOpened();
|
| }
|
|
|
| @@ -532,6 +551,9 @@ public class BottomSheet
|
| * A notification that the sheet has returned to the peeking state.
|
| */
|
| private void onSheetClosed() {
|
| + if (!mIsSheetOpen) return;
|
| +
|
| + mIsSheetOpen = false;
|
| for (BottomSheetObserver o : mObservers) o.onSheetClosed();
|
| }
|
|
|
| @@ -728,6 +750,7 @@ public class BottomSheet
|
| * move there instantly.
|
| */
|
| public void setSheetState(@SheetState int state, boolean animate) {
|
| + boolean stateChanged = state != mCurrentState;
|
| mCurrentState = state;
|
|
|
| if (animate) {
|
| @@ -735,6 +758,12 @@ public class BottomSheet
|
| } else {
|
| setSheetOffsetFromBottom(getSheetHeightForState(state));
|
| }
|
| +
|
| + if (!stateChanged) return;
|
| +
|
| + for (BottomSheetObserver o : mObservers) {
|
| + o.onSheetStateChanged(mCurrentState);
|
| + }
|
| }
|
|
|
| /**
|
|
|