BottomSheetBehavior getPeekHeight returns auto

This fixes BottomSheetBehavior#getPeekHeight so it returns
PEEK_HEIGHT_AUTO, and aligns the tests accordingly.

Bug: 29602451
Change-Id: I1ca0c5aebd2132fcfc7c4df894aea9a595e558fb
diff --git a/design/src/android/support/design/widget/BottomSheetBehavior.java b/design/src/android/support/design/widget/BottomSheetBehavior.java
index 30c7fb3..20b4b74 100644
--- a/design/src/android/support/design/widget/BottomSheetBehavior.java
+++ b/design/src/android/support/design/widget/BottomSheetBehavior.java
@@ -422,7 +422,8 @@
      * Sets the height of the bottom sheet when it is collapsed.
      *
      * @param peekHeight The height of the collapsed bottom sheet in pixels, or
-     *                   {@link #PEEK_HEIGHT_AUTO}.
+     *                   {@link #PEEK_HEIGHT_AUTO} to configure the sheet to peek automatically
+     *                   at 16:9 ratio keyline.
      * @attr ref android.support.design.R.styleable#BottomSheetBehavior_Layout_behavior_peekHeight
      */
     public final void setPeekHeight(int peekHeight) {
@@ -449,11 +450,12 @@
     /**
      * Gets the height of the bottom sheet when it is collapsed.
      *
-     * @return The height of the collapsed bottom sheet.
+     * @return The height of the collapsed bottom sheet in pixels, or {@link #PEEK_HEIGHT_AUTO}
+     *         if the sheet is configured to peek automatically at 16:9 ratio keyline
      * @attr ref android.support.design.R.styleable#BottomSheetBehavior_Layout_behavior_peekHeight
      */
     public final int getPeekHeight() {
-        return mPeekHeight;
+        return mPeekHeightAuto ? PEEK_HEIGHT_AUTO : mPeekHeight;
     }
 
     /**
diff --git a/design/tests/src/android/support/design/widget/BottomSheetDialogTest.java b/design/tests/src/android/support/design/widget/BottomSheetDialogTest.java
index da2055d..54a71f0 100644
--- a/design/tests/src/android/support/design/widget/BottomSheetDialogTest.java
+++ b/design/tests/src/android/support/design/widget/BottomSheetDialogTest.java
@@ -16,6 +16,7 @@
 
 package android.support.design.widget;
 
+import org.hamcrest.Matcher;
 import org.junit.Test;
 
 import android.content.Context;
@@ -24,11 +25,14 @@
 import android.support.design.widget.BottomSheetDialog;
 import android.support.test.InstrumentationRegistry;
 import android.support.test.espresso.Espresso;
+import android.support.test.espresso.UiController;
+import android.support.test.espresso.ViewAction;
 import android.support.test.espresso.action.ViewActions;
 import android.support.test.espresso.assertion.ViewAssertions;
 import android.support.test.espresso.matcher.ViewMatchers;
 import android.support.v7.widget.AppCompatTextView;
 import android.test.suitebuilder.annotation.MediumTest;
+import android.view.View;
 import android.widget.FrameLayout;
 
 import static org.hamcrest.CoreMatchers.*;
@@ -65,6 +69,8 @@
                 assertThat(bottomSheet, is(notNullValue()));
                 BottomSheetBehavior<FrameLayout> behavior = BottomSheetBehavior.from(bottomSheet);
                 assertThat(behavior, is(notNullValue()));
+                // Modal bottom sheets have auto peek height by default.
+                assertThat(behavior.getPeekHeight(), is(BottomSheetBehavior.PEEK_HEIGHT_AUTO));
             }
         });
         // Click outside the bottom sheet
@@ -97,6 +103,7 @@
         });
         // This ensures that the views are laid out before assertions below
         Espresso.onView(ViewMatchers.withId(R.id.design_bottom_sheet))
+                .perform(setTallPeekHeight())
                 .check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
         InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
             @Override
@@ -117,5 +124,25 @@
         });
     }
 
+    private static ViewAction setTallPeekHeight() {
+        return new ViewAction() {
+            @Override
+            public Matcher<View> getConstraints() {
+                return ViewMatchers.isDisplayed();
+            }
+
+            @Override
+            public String getDescription() {
+                return "set tall peek height";
+            }
+
+            @Override
+            public void perform(UiController uiController, View view) {
+                BottomSheetBehavior behavior = BottomSheetBehavior.from(view);
+                behavior.setPeekHeight(view.getHeight() + 100);
+            }
+        };
+    }
+
 }