| Index: chrome/android/java/src/org/chromium/chrome/browser/widget/BottomSheet.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/BottomSheet.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/BottomSheet.java
|
| index 8b3701daa9c704cf1e7df58ddccff547e38a2bc2..ba8338109b648bf842d94a319596c003504d9ed4 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/widget/BottomSheet.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/BottomSheet.java
|
| @@ -234,8 +234,15 @@ public class BottomSheet extends LinearLayout {
|
| root.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
| public void onLayoutChange(View v, int left, int top, int right, int bottom,
|
| int oldLeft, int oldTop, int oldRight, int oldBottom) {
|
| + // Make sure the size of the layout actually changed.
|
| + if (bottom - top == oldBottom - oldTop && right - left == oldRight - oldLeft) {
|
| + return;
|
| + }
|
| +
|
| mContainerHeight = bottom - top;
|
| updateSheetPeekHeight();
|
| +
|
| + cancelAnimation();
|
| setSheetState(mCurrentState, false);
|
| }
|
| });
|
| @@ -244,8 +251,15 @@ public class BottomSheet extends LinearLayout {
|
| controlContainer.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
| public void onLayoutChange(View v, int left, int top, int right, int bottom,
|
| int oldLeft, int oldTop, int oldRight, int oldBottom) {
|
| + // Make sure the size of the layout actually changed.
|
| + if (bottom - top == oldBottom - oldTop && right - left == oldRight - oldLeft) {
|
| + return;
|
| + }
|
| +
|
| mToolbarHeight = bottom - top;
|
| updateSheetPeekHeight();
|
| +
|
| + cancelAnimation();
|
| setSheetState(mCurrentState, false);
|
| }
|
| });
|
| @@ -352,7 +366,7 @@ public class BottomSheet extends LinearLayout {
|
| * @param animate If true, the sheet will animate to the provided state, otherwise it will
|
| * move there instantly.
|
| */
|
| - private void setSheetState(@SheetState int state, boolean animate) {
|
| + public void setSheetState(@SheetState int state, boolean animate) {
|
| mCurrentState = state;
|
|
|
| if (animate) {
|
| @@ -363,6 +377,22 @@ public class BottomSheet extends LinearLayout {
|
| }
|
|
|
| /**
|
| + * @return The current state of the bottom sheet. If the sheet is animating, this will be the
|
| + * state the sheet is animating to.
|
| + */
|
| + public int getSheetState() {
|
| + return mCurrentState;
|
| + }
|
| +
|
| + /**
|
| + * If the animation to settle the sheet in one of its states is running.
|
| + * @return True if the animation is running.
|
| + */
|
| + private boolean isRunningSettleAnimation() {
|
| + return mSettleAnimator != null;
|
| + }
|
| +
|
| + /**
|
| * Gets the height of the bottom sheet based on a provided state.
|
| * @param state The state to get the height from.
|
| * @return The height of the sheet at the provided state.
|
|
|