Chromium Code Reviews| 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..95b71f78e499fe8b3aebb3022311a307bd104a39 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,9 @@ public class BottomSheet |
| mGestureDetector = new GestureDetector(context, new BottomSheetSwipeDetector()); |
| mGestureDetector.setIsLongpressEnabled(false); |
| + |
| + BottomSheetMetrics metrics = new BottomSheetMetrics(); |
| + addObserver(metrics); |
|
gone
2017/03/20 21:04:52
maybe just make it addObserver(new BottomSheetMetr
Theresa
2017/03/20 21:22:52
Done.
|
| } |
| @Override |
| @@ -505,6 +518,10 @@ public class BottomSheet |
| } else { |
| mDefaultToolbarView.setVisibility(View.VISIBLE); |
| } |
| + |
| + for (BottomSheetObserver o : mObservers) { |
| + o.onSheetContentChanged(mSheetContent); |
| + } |
| } |
| /** |
| @@ -525,6 +542,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 +552,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 +751,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 +759,12 @@ public class BottomSheet |
| } else { |
| setSheetOffsetFromBottom(getSheetHeightForState(state)); |
| } |
| + |
| + if (!stateChanged) return; |
| + |
| + for (BottomSheetObserver o : mObservers) { |
| + o.onSheetStateChanged(mCurrentState); |
| + } |
| } |
| /** |