am 00cbb751: am 5e8f023d: am a59c7f03: am dff59b8b: am 23df1c46: Merge "Allow null queues to be set in MediaSession" into lmp-dev

* commit '00cbb751533bf683480ba80f0c450c59c6ca96a1':
  Allow null queues to be set in MediaSession
diff --git a/cmds/media/src/com/android/commands/media/Media.java b/cmds/media/src/com/android/commands/media/Media.java
index b37f896..6a8fb05 100644
--- a/cmds/media/src/com/android/commands/media/Media.java
+++ b/cmds/media/src/com/android/commands/media/Media.java
@@ -204,7 +204,8 @@
 
         @Override
         public void onQueueChanged(ParceledListSlice queue) throws RemoteException {
-            System.out.println("onQueueChanged, size=" + queue.getList().size());
+            System.out.println("onQueueChanged, "
+                    + (queue == null ? "null queue" : " size=" + queue.getList().size()));
         }
 
         @Override
diff --git a/media/java/android/media/session/MediaController.java b/media/java/android/media/session/MediaController.java
index 1fd9870..def6f00 100644
--- a/media/java/android/media/session/MediaController.java
+++ b/media/java/android/media/session/MediaController.java
@@ -930,7 +930,8 @@
 
         @Override
         public void onQueueChanged(ParceledListSlice parceledQueue) {
-            List<MediaSession.QueueItem> queue = parceledQueue.getList();
+            List<MediaSession.QueueItem> queue = parceledQueue == null ? null : parceledQueue
+                    .getList();
             MediaController controller = mController.get();
             if (controller != null) {
                 controller.postMessage(MSG_UPDATE_QUEUE, queue, null);
diff --git a/media/java/android/media/session/MediaSession.java b/media/java/android/media/session/MediaSession.java
index 57bcbba..92f01a4 100644
--- a/media/java/android/media/session/MediaSession.java
+++ b/media/java/android/media/session/MediaSession.java
@@ -445,7 +445,7 @@
      */
     public void setQueue(@Nullable List<QueueItem> queue) {
         try {
-            mBinder.setQueue(new ParceledListSlice<QueueItem>(queue));
+            mBinder.setQueue(queue == null ? null : new ParceledListSlice<QueueItem>(queue));
         } catch (RemoteException e) {
             Log.wtf("Dead object in setQueue.", e);
         }
diff --git a/tests/OneMedia/src/com/android/onemedia/PlayerSession.java b/tests/OneMedia/src/com/android/onemedia/PlayerSession.java
index 9afcf24..141a209 100644
--- a/tests/OneMedia/src/com/android/onemedia/PlayerSession.java
+++ b/tests/OneMedia/src/com/android/onemedia/PlayerSession.java
@@ -25,6 +25,7 @@
 import android.media.routing.MediaRouter.DestinationInfo;
 import android.media.routing.MediaRouter.RouteInfo;
 import android.media.session.MediaSession;
+import android.media.session.MediaSession.QueueItem;
 import android.media.session.MediaSessionManager;
 import android.media.session.PlaybackState;
 import android.os.Bundle;
@@ -53,6 +54,8 @@
     protected MediaSession.Callback mCallback;
     protected Renderer.Listener mRenderListener;
     protected MediaMetadata.Builder mMetadataBuilder;
+    protected ArrayList<MediaSession.QueueItem> mQueue;
+    protected boolean mUseQueue;
 
     protected PlaybackState mPlaybackState;
     protected Listener mListener;
@@ -67,6 +70,7 @@
         PlaybackState.Builder psBob = new PlaybackState.Builder();
         psBob.setActions(PlaybackState.ACTION_PAUSE | PlaybackState.ACTION_PLAY);
         mPlaybackState = psBob.build();
+        mQueue = new ArrayList<MediaSession.QueueItem>();
 
         mRenderer.registerListener(mRenderListener);
 
@@ -138,6 +142,8 @@
 
     public void setIcon(Bitmap icon) {
         mMetadataBuilder.putBitmap(MediaMetadata.METADATA_KEY_DISPLAY_ICON, icon);
+        mQueue.clear();
+        mQueue.add(new QueueItem(mMetadataBuilder.build().getDescription(), 11));
         updateMetadata();
     }
 
@@ -146,6 +152,10 @@
         // code
         if (mSession != null && mSession.isActive()) {
             mSession.setMetadata(mMetadataBuilder.build());
+            // Just toggle the queue every time we update for testing
+            mSession.setQueue(mUseQueue ? mQueue : null);
+            mSession.setQueueTitle(mUseQueue ? "Queue title" : null);
+            mUseQueue = !mUseQueue;
         }
     }
 
@@ -165,6 +175,8 @@
                 "OneMedia display title");
         mMetadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_SUBTITLE,
                 "OneMedia display subtitle");
+
+        mQueue.add(new QueueItem(mMetadataBuilder.build().getDescription(), 11));
     }
 
     public interface Listener {