Add Java MediaController

This CL adds the java MediaController interface. It exposes simple
commands to control media content. It is modelled after the media
router's Mojo MediaController interface. The only implementer for the
moment is the RemoteMediaPlayerWrapper, but the interface is simple
enough to be reused whenever we switch to Cast SDK V3.

This CL also stores the current CastSession's presentation ID in the
ChromeCastSessionManager. We then use that ID to make sure that a given
presentation ID is still current, before returning a MediaController to
issue commands to the current RemotingCastSession.

Bug: 790766
Change-Id: Ia49552cf748eaa7837cacafae05a3897fa2ec21d
Reviewed-on: https://chromium-review.googlesource.com/905573
Commit-Queue: Thomas Guilbert <[email protected]>
Reviewed-by: Derek Cheng <[email protected]>
Reviewed-by: Mounir Lamouri <[email protected]>
Cr-Commit-Position: refs/heads/master@{#539308}
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
index 88aac433..8a28a00 100644
--- a/chrome/android/java_sources.gni
+++ b/chrome/android/java_sources.gni
@@ -593,6 +593,7 @@
   "java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java",
   "java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouterDialogController.java",
   "java/src/org/chromium/chrome/browser/media/router/DiscoveryDelegate.java",
+  "java/src/org/chromium/chrome/browser/media/router/MediaController.java",
   "java/src/org/chromium/chrome/browser/media/router/MediaRoute.java",
   "java/src/org/chromium/chrome/browser/media/router/MediaRouteChooserDialogManager.java",
   "java/src/org/chromium/chrome/browser/media/router/MediaRouteControllerDialogManager.java",