Merge "leanback: remove deprecated app.MediaControllerGlue" into oc-mr1-dev
diff --git a/buildSrc/src/main/java/android/support/LibraryVersions.java b/buildSrc/src/main/java/android/support/LibraryVersions.java
index b641ce2..dbc9da6 100644
--- a/buildSrc/src/main/java/android/support/LibraryVersions.java
+++ b/buildSrc/src/main/java/android/support/LibraryVersions.java
@@ -48,7 +48,7 @@
     /**
      * Version code for Lifecycle libs that are required by the support library
      */
-    public static final Version LIFECYCLES_CORE = new Version("1.0.0");
+    public static final Version LIFECYCLES_CORE = new Version("1.0.1");
 
     /**
      * Version code for Lifecycle runtime libs that are required by the support library
diff --git a/v17/leanback/api/current.txt b/v17/leanback/api/current.txt
index 05fcdb3..00e764b 100644
--- a/v17/leanback/api/current.txt
+++ b/v17/leanback/api/current.txt
@@ -1136,7 +1136,7 @@
     method public void play();
   }
 
-  public abstract class MediaControllerGlue extends android.support.v17.leanback.media.PlaybackControlGlue {
+  public abstract deprecated class MediaControllerGlue extends android.support.v17.leanback.media.PlaybackControlGlue {
     ctor public MediaControllerGlue(android.content.Context, int[], int[]);
     method public void attachToMediaController(android.support.v4.media.session.MediaControllerCompat);
     method public void detach();
@@ -1294,7 +1294,6 @@
     method protected java.util.List<android.support.v17.leanback.media.PlaybackGlue.PlayerCallback> getPlayerCallbacks();
     method public boolean isPlaying();
     method public boolean isPrepared();
-    method public deprecated boolean isReadyForPlayback();
     method public void next();
     method protected void onAttachedToHost(android.support.v17.leanback.media.PlaybackGlueHost);
     method protected void onDetachedFromHost();
@@ -1308,7 +1307,6 @@
     method public void previous();
     method public void removePlayerCallback(android.support.v17.leanback.media.PlaybackGlue.PlayerCallback);
     method public final void setHost(android.support.v17.leanback.media.PlaybackGlueHost);
-    method public deprecated void setPlayerCallback(android.support.v17.leanback.media.PlaybackGlue.PlayerCallback);
   }
 
   public static abstract class PlaybackGlue.PlayerCallback {
@@ -1316,7 +1314,6 @@
     method public void onPlayCompleted(android.support.v17.leanback.media.PlaybackGlue);
     method public void onPlayStateChanged(android.support.v17.leanback.media.PlaybackGlue);
     method public void onPreparedStateChanged(android.support.v17.leanback.media.PlaybackGlue);
-    method public deprecated void onReadyForPlayback();
   }
 
   public abstract class PlaybackGlueHost {
diff --git a/v17/leanback/src/android/support/v17/leanback/app/package-info.java b/v17/leanback/src/android/support/v17/leanback/app/package-info.java
index 852a007..f82570e 100644
--- a/v17/leanback/src/android/support/v17/leanback/app/package-info.java
+++ b/v17/leanback/src/android/support/v17/leanback/app/package-info.java
@@ -13,8 +13,7 @@
  */
 
 /**
- * <p>Support classes providing high level Leanback user interface building blocks:
- * fragments and helpers.</p>
+ * <p>Support classes providing high level Leanback user interface building blocks.</p>
  * <p>
  * Leanback fragments are available both as platform fragments (subclassed from
  * {@link android.app.Fragment android.app.Fragment}) and as support fragments (subclassed from
@@ -22,29 +21,37 @@
  * commonly used leanback fragments are described here.
  * </p>
  * <p>
- * A {@link android.support.v17.leanback.app.BrowseFragment} includes an optional “fastlane”
+ * A {@link android.support.v17.leanback.app.BrowseFragment} by default operates in the "row" mode.
+ * It includes an optional “fastlane”
  * navigation side panel and a list of rows, with one-to-one correspondance between each header
  * in the fastlane and a row.  The application supplies the
  * {@link android.support.v17.leanback.widget.ObjectAdapter} containing the list of
  * rows and a {@link android.support.v17.leanback.widget.PresenterSelector} of row presenters.
  * </p>
  * <p>
+ * A {@link android.support.v17.leanback.app.BrowseFragment} also works in a "page" mode when
+ * each row of fastlane is mapped to a fragment that the app registers in
+ * {@link android.support.v17.leanback.app.BrowseFragment#getMainFragmentRegistry()}.
+ * </p>
+ * <p>
  * A {@link android.support.v17.leanback.app.DetailsFragment} will typically consist of a large
  * overview of an item at the top,
  * some actions that a user can perform, and possibly rows of additional or related items.
  * The content for this fragment is specified in the same way as for the BrowseFragment, with the
  * convention that the first element in the ObjectAdapter corresponds to the overview row.
  * The {@link android.support.v17.leanback.widget.DetailsOverviewRow} and
- * {@link android.support.v17.leanback.widget.DetailsOverviewRowPresenter} provide a default template
- * for this row.
+ * {@link android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter} provide a
+ * default template for this row.
  * </p>
  * <p>
- * A {@link android.support.v17.leanback.app.PlaybackOverlayFragment} implements standard playback
- * transport controls with a Leanback
- * look and feel.  It is recommended to use an instance of the
- * {@link android.support.v17.leanback.app.PlaybackControlGlue} with the
- * PlaybackOverlayFragment.  This helper implements a standard behavior for user interaction with
- * the most commonly used controls such as fast forward and rewind.
+ * A {@link android.support.v17.leanback.app.PlaybackFragment} or its subclass
+ * {@link android.support.v17.leanback.app.VideoFragment} hosts
+ * {@link android.support.v17.leanback.media.PlaybackTransportControlGlue}
+ * or {@link android.support.v17.leanback.media.PlaybackBannerControlGlue} with a Leanback
+ * look and feel.  It is recommended to use an instance of
+ * {@link android.support.v17.leanback.media.PlaybackTransportControlGlue}.
+ * This helper implements a standard behavior for user interaction with
+ * the most commonly used controls as well as video scrubbing.
  * </p>
  * <p>
  * A {@link android.support.v17.leanback.app.SearchFragment} allows the developer to accept a query
diff --git a/v17/leanback/src/android/support/v17/leanback/media/MediaControllerGlue.java b/v17/leanback/src/android/support/v17/leanback/media/MediaControllerGlue.java
index 730bf3a..b8e9b74 100644
--- a/v17/leanback/src/android/support/v17/leanback/media/MediaControllerGlue.java
+++ b/v17/leanback/src/android/support/v17/leanback/media/MediaControllerGlue.java
@@ -28,7 +28,10 @@
 
 /**
  * A helper class for implementing a glue layer for {@link MediaControllerCompat}.
+ * @deprecated Use {@link MediaControllerAdapter} with {@link PlaybackTransportControlGlue} or
+ *             {@link PlaybackBannerControlGlue}.
  */
+@Deprecated
 public abstract class MediaControllerGlue extends PlaybackControlGlue {
     static final String TAG = "MediaControllerGlue";
     static final boolean DEBUG = false;
diff --git a/v17/leanback/src/android/support/v17/leanback/media/MediaPlayerGlue.java b/v17/leanback/src/android/support/v17/leanback/media/MediaPlayerGlue.java
index 3a274b1..73bca97 100644
--- a/v17/leanback/src/android/support/v17/leanback/media/MediaPlayerGlue.java
+++ b/v17/leanback/src/android/support/v17/leanback/media/MediaPlayerGlue.java
@@ -22,6 +22,7 @@
 import android.media.MediaPlayer;
 import android.net.Uri;
 import android.os.Handler;
+import android.support.annotation.RestrictTo;
 import android.support.v17.leanback.widget.Action;
 import android.support.v17.leanback.widget.ArrayObjectAdapter;
 import android.support.v17.leanback.widget.OnItemViewSelectedListener;
@@ -50,7 +51,11 @@
  * </ul>
  *
  * @hide
+ * @deprecated Use {@link MediaPlayerAdapter} with {@link PlaybackTransportControlGlue} or
+ *             {@link PlaybackBannerControlGlue}.
  */
+@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+@Deprecated
 public class MediaPlayerGlue extends PlaybackControlGlue implements
         OnItemViewSelectedListener {
 
@@ -485,11 +490,6 @@
     }
 
     @Override
-    public boolean isReadyForPlayback() {
-        return mInitialized;
-    }
-
-    @Override
     public boolean isPrepared() {
         return mInitialized;
     }
diff --git a/v17/leanback/src/android/support/v17/leanback/media/PlaybackGlue.java b/v17/leanback/src/android/support/v17/leanback/media/PlaybackGlue.java
index 020f660..7c59573 100644
--- a/v17/leanback/src/android/support/v17/leanback/media/PlaybackGlue.java
+++ b/v17/leanback/src/android/support/v17/leanback/media/PlaybackGlue.java
@@ -49,21 +49,10 @@
      */
     public abstract static class PlayerCallback {
         /**
-         * This method is fired when media is ready for playback {@link #isPrepared()}.
-         * @deprecated use {@link #onPreparedStateChanged(PlaybackGlue)}.
-         */
-        @Deprecated
-        public void onReadyForPlayback() {
-        }
-
-        /**
          * Event for {@link #isPrepared()} changed.
          * @param glue The PlaybackGlue that has changed {@link #isPrepared()}.
          */
         public void onPreparedStateChanged(PlaybackGlue glue) {
-            if (glue.isPrepared()) {
-                onReadyForPlayback();
-            }
         }
 
         /**
@@ -98,41 +87,12 @@
     }
 
     /**
-     * Returns true when the media player is ready to start media playback. Subclasses must
-     * implement this method correctly. When returning false, app may listen to
-     * {@link PlayerCallback#onReadyForPlayback()} event.
-     *
-     * @see PlayerCallback#onReadyForPlayback()
-     * @deprecated Use isPrepared() instead.
-     */
-    @Deprecated
-    public boolean isReadyForPlayback() {
-        return true;
-    }
-
-    /**
      * Returns true when the media player is prepared to start media playback. When returning false,
      * app may listen to {@link PlayerCallback#onPreparedStateChanged(PlaybackGlue)} event.
      * @return True if prepared, false otherwise.
      */
     public boolean isPrepared() {
-        return isReadyForPlayback();
-    }
-
-    /**
-     * Sets the {@link PlayerCallback} callback. It will reset the existing callbacks.
-     * In most cases you would call {@link #addPlayerCallback(PlayerCallback)}.
-     * @deprecated Use {@link #addPlayerCallback(PlayerCallback)}.
-     */
-    @Deprecated
-    public void setPlayerCallback(PlayerCallback playerCallback) {
-        if (playerCallback == null) {
-            if (mPlayerCallbacks != null) {
-                mPlayerCallbacks.clear();
-            }
-        } else {
-            addPlayerCallback(playerCallback);
-        }
+        return true;
     }
 
     /**
diff --git a/v17/leanback/src/android/support/v17/leanback/package-info.java b/v17/leanback/src/android/support/v17/leanback/package-info.java
index aa64827..5259f63 100644
--- a/v17/leanback/src/android/support/v17/leanback/package-info.java
+++ b/v17/leanback/src/android/support/v17/leanback/package-info.java
@@ -41,19 +41,20 @@
  * <p>
  * Leanback contains a mixture of higher level building blocks such as Fragments in the
  * {@link android.support.v17.leanback.app} package. Notable examples are the
- * {@link android.support.v17.leanback.app.BrowseFragment} and the
+ * {@link android.support.v17.leanback.app.BrowseFragment},
+ * {@link android.support.v17.leanback.app.DetailsFragment},
+ * {@link android.support.v17.leanback.app.PlaybackFragment} and the
  * {@link android.support.v17.leanback.app.GuidedStepFragment}.  Helper classes are also provided
  * that work with the leanback fragments, for example the
- * {@link android.support.v17.leanback.app.PlaybackControlGlue}.
+ * {@link android.support.v17.leanback.media.PlaybackTransportControlGlue} and
+ * {@link android.support.v17.leanback.app.PlaybackFragmentGlueHost}.
  * </p>
  * <p>
  * Many lower level building blocks are also provided in the {@link android.support.v17.leanback.widget} package.
  * These allow applications to easily incorporate Leanback look and feel while allowing for a
  * high degree of customization.  Primary examples include the UI widget
  * {@link android.support.v17.leanback.widget.HorizontalGridView} and
- * {@link android.support.v17.leanback.widget.VerticalGridView}.  Helper classes also exist at this level
- * which do not depend on the leanback fragments, for example the
- * {@link android.support.v17.leanback.widget.TitleHelper}.
+ * {@link android.support.v17.leanback.widget.VerticalGridView}.
  */
 
 package android.support.v17.leanback;
\ No newline at end of file
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/media/MediaPlayerGlueTest.java b/v17/leanback/tests/java/android/support/v17/leanback/media/MediaPlayerGlueTest.java
index b154635..afcb1bc 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/media/MediaPlayerGlueTest.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/media/MediaPlayerGlueTest.java
@@ -62,12 +62,13 @@
         glue.setHost(host);
         glue.setMode(MediaPlayerGlue.REPEAT_ALL);
         final boolean[] ready = new boolean[] {false};
-        glue.setPlayerCallback(new PlaybackGlue.PlayerCallback() {
+        glue.addPlayerCallback(new PlaybackGlue.PlayerCallback() {
             @Override
-            public void onReadyForPlayback() {
-                glue.play();
-                ready[0] = true;
-
+            public void onPreparedStateChanged(PlaybackGlue glue) {
+                if (glue.isPrepared()) {
+                    glue.play();
+                    ready[0] = true;
+                }
             }
         });
         InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {