Support multiple tracks in TV Input framework.

Added API: getTracks/selectTrack/unselectTrack/onTrackInfoChanged
(onVideo/Audio/ClosedCaptionStreamChanged callbacks are removed in favor of onTrackInfoChanged)
Use cases: audio and closed caption track selection
Background: go/tif-multi-track

Bug:14073704, Bug:14121898, Bug: 16049453
Change-Id: I199ed16f690d4e757da0bb30c8bc8222a6fa1d7a
diff --git a/media/java/android/media/tv/ITvInputSessionWrapper.java b/media/java/android/media/tv/ITvInputSessionWrapper.java
index d20ee0e..06ee4b5 100644
--- a/media/java/android/media/tv/ITvInputSessionWrapper.java
+++ b/media/java/android/media/tv/ITvInputSessionWrapper.java
@@ -44,9 +44,11 @@
     private static final int DO_SET_SURFACE = 2;
     private static final int DO_SET_VOLUME = 3;
     private static final int DO_TUNE = 4;
-    private static final int DO_CREATE_OVERLAY_VIEW = 5;
-    private static final int DO_RELAYOUT_OVERLAY_VIEW = 6;
-    private static final int DO_REMOVE_OVERLAY_VIEW = 7;
+    private static final int DO_SELECT_TRACK = 5;
+    private static final int DO_UNSELECT_TRACK = 6;
+    private static final int DO_CREATE_OVERLAY_VIEW = 7;
+    private static final int DO_RELAYOUT_OVERLAY_VIEW = 8;
+    private static final int DO_REMOVE_OVERLAY_VIEW = 9;
 
     private final HandlerCaller mCaller;
 
@@ -96,6 +98,14 @@
                 mTvInputSessionImpl.tune((Uri) msg.obj);
                 return;
             }
+            case DO_SELECT_TRACK: {
+                mTvInputSessionImpl.selectTrack((TvTrackInfo) msg.obj);
+                return;
+            }
+            case DO_UNSELECT_TRACK: {
+                mTvInputSessionImpl.unselectTrack((TvTrackInfo) msg.obj);
+                return;
+            }
             case DO_CREATE_OVERLAY_VIEW: {
                 SomeArgs args = (SomeArgs) msg.obj;
                 mTvInputSessionImpl.createOverlayView((IBinder) args.arg1, (Rect) args.arg2);
@@ -138,6 +148,16 @@
     }
 
     @Override
+    public void selectTrack(TvTrackInfo track) {
+        mCaller.executeOrSendMessage(mCaller.obtainMessageO(DO_SELECT_TRACK, track));
+    }
+
+    @Override
+    public void unselectTrack(TvTrackInfo track) {
+        mCaller.executeOrSendMessage(mCaller.obtainMessageO(DO_UNSELECT_TRACK, track));
+    }
+
+    @Override
     public void createOverlayView(IBinder windowToken, Rect frame) {
         mCaller.executeOrSendMessage(mCaller.obtainMessageOO(DO_CREATE_OVERLAY_VIEW, windowToken,
                 frame));