This bug is used to track the work submitted to deprecate WebMediaPlayerCast and add RemotePlayback. It ties together the work from go/chromeremoteplayback (google internal link only), and bugs 517102 and 570711.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/949135e04e7f1575f05694ac66e69cd1df374720 commit 949135e04e7f1575f05694ac66e69cd1df374720 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Tue Dec 05 01:31:01 2017 Extract MediaSource interface Currently, MediaSource and RemotingMediaSource have no common ancestor. This makes code reuse between CastMediaRouteProvider and RemotingMediaRouteProvider difficult. This CL renames MediaSource into CastMediaSource, adds a MediaSource interface, and updates RemotingMediaSource and CastMediaSources to both derive from this interface. This paves the way for the introduction of a BaseMediaRouteProvider. Bug: 790766 Change-Id: I3f8e46816a1e9f8f2f617a43b1099c8614204efc Reviewed-on: https://chromium-review.googlesource.com/783836 Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Reviewed-by: Anton Vayvod <avayvod@chromium.org> Reviewed-by: Zhiqiang Zhang <zqzhang@chromium.org> Cr-Commit-Position: refs/heads/master@{#521578} [modify] https://crrev.com/949135e04e7f1575f05694ac66e69cd1df374720/chrome/android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouterDialogController.java [modify] https://crrev.com/949135e04e7f1575f05694ac66e69cd1df374720/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastMediaRouteProvider.java [add] https://crrev.com/949135e04e7f1575f05694ac66e69cd1df374720/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastMediaSource.java [modify] https://crrev.com/949135e04e7f1575f05694ac66e69cd1df374720/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastSessionImpl.java [modify] https://crrev.com/949135e04e7f1575f05694ac66e69cd1df374720/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/MediaSource.java [modify] https://crrev.com/949135e04e7f1575f05694ac66e69cd1df374720/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingMediaSource.java [modify] https://crrev.com/949135e04e7f1575f05694ac66e69cd1df374720/chrome/android/java_sources.gni [modify] https://crrev.com/949135e04e7f1575f05694ac66e69cd1df374720/chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/CastMediaRouteProviderTest.java [rename] https://crrev.com/949135e04e7f1575f05694ac66e69cd1df374720/chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/CastMediaSourceTest.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/159e6021c076e410e2c1c3dc64c15bb244d1e9a3 commit 159e6021c076e410e2c1c3dc64c15bb244d1e9a3 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Thu Dec 07 04:59:03 2017 Add BaseMediaRouteProvider CastMediaRouteProvider and RemotingMediaRouteProvider have very similar code that can be generalized into a base class. This CL extracts the common logic behind observing media sinks and adds it to the new BaseMediaRouteProvider. Bug: 790766 Change-Id: I92a2fec95dc5cf32f132e295dc8e95b0604217e4 Reviewed-on: https://chromium-review.googlesource.com/784121 Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Reviewed-by: Zhiqiang Zhang <zqzhang@chromium.org> Reviewed-by: Anton Vayvod <avayvod@chromium.org> Cr-Commit-Position: refs/heads/master@{#522342} [add] https://crrev.com/159e6021c076e410e2c1c3dc64c15bb244d1e9a3/chrome/android/java/src/org/chromium/chrome/browser/media/router/BaseMediaRouteProvider.java [modify] https://crrev.com/159e6021c076e410e2c1c3dc64c15bb244d1e9a3/chrome/android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java [modify] https://crrev.com/159e6021c076e410e2c1c3dc64c15bb244d1e9a3/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastMediaRouteProvider.java [modify] https://crrev.com/159e6021c076e410e2c1c3dc64c15bb244d1e9a3/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingMediaRouteProvider.java [modify] https://crrev.com/159e6021c076e410e2c1c3dc64c15bb244d1e9a3/chrome/android/java_sources.gni [modify] https://crrev.com/159e6021c076e410e2c1c3dc64c15bb244d1e9a3/chrome/browser/media/android/router/media_router_android_bridge.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f2d50417b26db70b799adc02c8cc50b63b591ed8 commit f2d50417b26db70b799adc02c8cc50b63b591ed8 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Fri Dec 15 06:56:51 2017 Add ChromeCastSessionManager The ChromeCastSessionManager's purpose is to manage the lifetime of CastSessions, and to notify the appropriate MediaRouteProvider when their CastSession's state changes (via the ChromeCastSessionObserver interface). This CL adds the ChromeCastSessionManager, decouples CastSessionImpl from CastMediaRouteProvider, decouples MediaRouteProviders from CreateRouteRequest, and extracts CastListener from CreateRouteRequest. It also moves the logic of stopping the current session out from the MediaRouteProvider into the manager. Bug: 790766 Test: Added UTs Change-Id: I2177c9f6918fc572b0c70df01411c574cda98fec Reviewed-on: https://chromium-review.googlesource.com/794711 Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Reviewed-by: Zhiqiang Zhang <zqzhang@chromium.org> Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Reviewed-by: Anton Vayvod <avayvod@chromium.org> Cr-Commit-Position: refs/heads/master@{#524345} [modify] https://crrev.com/f2d50417b26db70b799adc02c8cc50b63b591ed8/chrome/android/java/src/org/chromium/chrome/browser/media/router/BaseMediaRouteProvider.java [modify] https://crrev.com/f2d50417b26db70b799adc02c8cc50b63b591ed8/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastMediaRouteProvider.java [modify] https://crrev.com/f2d50417b26db70b799adc02c8cc50b63b591ed8/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastSessionImpl.java [add] https://crrev.com/f2d50417b26db70b799adc02c8cc50b63b591ed8/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/ChromeCastSessionManager.java [modify] https://crrev.com/f2d50417b26db70b799adc02c8cc50b63b591ed8/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CreateRouteRequest.java [modify] https://crrev.com/f2d50417b26db70b799adc02c8cc50b63b591ed8/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingMediaRouteProvider.java [modify] https://crrev.com/f2d50417b26db70b799adc02c8cc50b63b591ed8/chrome/android/java_sources.gni [modify] https://crrev.com/f2d50417b26db70b799adc02c8cc50b63b591ed8/chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/CastMediaRouteProviderTest.java [add] https://crrev.com/f2d50417b26db70b799adc02c8cc50b63b591ed8/chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/ChromeCastSessionManagerTest.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/7ffdb9b8cae53b33d020e5f4954e071205785f61 commit 7ffdb9b8cae53b33d020e5f4954e071205785f61 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Fri Jan 05 23:18:20 2018 Add RemotingCastSession The RemotingCastSession is a simplified version of the CastSessionImpl. It does not use a CastMessageHandler, since the only messages sent in remote playback scenarios are the default media messages from the RemoteMediaPlayer. Bug: 790766 Change-Id: Ic1d7345f75d1ee652f5cc01242b2b48c91c05d37 Reviewed-on: https://chromium-review.googlesource.com/802830 Reviewed-by: Zhiqiang Zhang <zqzhang@chromium.org> Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#527424} [modify] https://crrev.com/7ffdb9b8cae53b33d020e5f4954e071205785f61/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastMediaRouteProvider.java [modify] https://crrev.com/7ffdb9b8cae53b33d020e5f4954e071205785f61/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastMessageHandler.java [modify] https://crrev.com/7ffdb9b8cae53b33d020e5f4954e071205785f61/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastSession.java [modify] https://crrev.com/7ffdb9b8cae53b33d020e5f4954e071205785f61/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastSessionImpl.java [add] https://crrev.com/7ffdb9b8cae53b33d020e5f4954e071205785f61/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastSessionUtil.java [modify] https://crrev.com/7ffdb9b8cae53b33d020e5f4954e071205785f61/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CreateRouteRequest.java [add] https://crrev.com/7ffdb9b8cae53b33d020e5f4954e071205785f61/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingCastSession.java [modify] https://crrev.com/7ffdb9b8cae53b33d020e5f4954e071205785f61/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingMediaRouteProvider.java [modify] https://crrev.com/7ffdb9b8cae53b33d020e5f4954e071205785f61/chrome/android/java_sources.gni [modify] https://crrev.com/7ffdb9b8cae53b33d020e5f4954e071205785f61/chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/CastMessageHandlerTest.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ed951ce5405ce6e7d56b427024b72cf018ad5d5f commit ed951ce5405ce6e7d56b427024b72cf018ad5d5f Author: Thomas Guilbert <tguilbert@chromium.org> Date: Tue Jan 09 19:30:45 2018 Add RemotePlayback route creation This CL completes the implementation necessary to create RemotePlayback media routes. Bug: 790766 Change-Id: I0ebb675effb2cf1841b4e89fecf4ee1dfdd69b73 Reviewed-on: https://chromium-review.googlesource.com/802995 Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Reviewed-by: Zhiqiang Zhang <zqzhang@chromium.org> Cr-Commit-Position: refs/heads/master@{#528068} [modify] https://crrev.com/ed951ce5405ce6e7d56b427024b72cf018ad5d5f/chrome/android/java/src/org/chromium/chrome/browser/media/router/BaseMediaRouteProvider.java [modify] https://crrev.com/ed951ce5405ce6e7d56b427024b72cf018ad5d5f/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastMediaRouteProvider.java [modify] https://crrev.com/ed951ce5405ce6e7d56b427024b72cf018ad5d5f/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingMediaRouteProvider.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cc35a99d53b96274c8c90fa791e5824fb80b7b38 commit cc35a99d53b96274c8c90fa791e5824fb80b7b38 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Thu Feb 08 20:06:32 2018 Add RemoteMediaPlayerWrapper This CL moves the logic of controlling a RemoteMediaPlayer out of RemotingCastSession into its own wrapper class. The wrapper class exposes a simple API, that will easily map to the MediaController API. Bug: 790766 Change-Id: I6dd9eaa95e90a9155ad2ad3bea2e443309e6c755 Reviewed-on: https://chromium-review.googlesource.com/900308 Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Reviewed-by: Zhiqiang Zhang <zqzhang@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#535482} [add] https://crrev.com/cc35a99d53b96274c8c90fa791e5824fb80b7b38/chrome/android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerWrapper.java [modify] https://crrev.com/cc35a99d53b96274c8c90fa791e5824fb80b7b38/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingCastSession.java [modify] https://crrev.com/cc35a99d53b96274c8c90fa791e5824fb80b7b38/chrome/android/java_sources.gni
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/2f5083869dd554243dbaf08e06b59b9355dfbab0 commit 2f5083869dd554243dbaf08e06b59b9355dfbab0 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Mon Feb 26 23:08:14 2018 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 <tguilbert@chromium.org> Reviewed-by: Derek Cheng <imcheng@chromium.org> Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Cr-Commit-Position: refs/heads/master@{#539308} [modify] https://crrev.com/2f5083869dd554243dbaf08e06b59b9355dfbab0/chrome/android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerWrapper.java [add] https://crrev.com/2f5083869dd554243dbaf08e06b59b9355dfbab0/chrome/android/java/src/org/chromium/chrome/browser/media/router/MediaController.java [modify] https://crrev.com/2f5083869dd554243dbaf08e06b59b9355dfbab0/chrome/android/java/src/org/chromium/chrome/browser/media/router/MediaRouteProvider.java [modify] https://crrev.com/2f5083869dd554243dbaf08e06b59b9355dfbab0/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/BaseMediaRouteProvider.java [modify] https://crrev.com/2f5083869dd554243dbaf08e06b59b9355dfbab0/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastSession.java [modify] https://crrev.com/2f5083869dd554243dbaf08e06b59b9355dfbab0/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastSessionImpl.java [modify] https://crrev.com/2f5083869dd554243dbaf08e06b59b9355dfbab0/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingCastSession.java [modify] https://crrev.com/2f5083869dd554243dbaf08e06b59b9355dfbab0/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingMediaRouteProvider.java [modify] https://crrev.com/2f5083869dd554243dbaf08e06b59b9355dfbab0/chrome/android/java_sources.gni [modify] https://crrev.com/2f5083869dd554243dbaf08e06b59b9355dfbab0/chrome/android/javatests/src/org/chromium/chrome/browser/media/router/MockMediaRouteProvider.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/42b46656b634a3714f91da23ac061d28341bb93e commit 42b46656b634a3714f91da23ac061d28341bb93e Author: Thomas Guilbert <tguilbert@chromium.org> Date: Mon Mar 12 23:01:47 2018 Add GetMediaController to PresentationService This CL adds the ability to get a MediaControllerBridge from a presentation ID. The presentation ID is first converted to a route ID, before being sent to the MediaRouterAndroid. The MediaControllerBridge allows native code to forward commands to a Java MediaController. Currently, only RemotePlayback will use this path, and the Java MediaController interface is only implemented by the RemoteMediaPlayerWrapper. Bug: 790766 Change-Id: Ie089aff905fffd2521053620f79fe739ab6eb3a1 Reviewed-on: https://chromium-review.googlesource.com/930472 Reviewed-by: Nick Carter <nick@chromium.org> Reviewed-by: Derek Cheng <imcheng@chromium.org> Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Reviewed-by: Takumi Fujimoto <takumif@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#542646} [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java [add] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/android/java/src/org/chromium/chrome/browser/media/router/MediaControllerBridge.java [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/android/java_sources.gni [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/browser/BUILD.gn [add] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/browser/media/android/remote/media_controller_bridge.cc [add] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/browser/media/android/remote/media_controller_bridge.h [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/browser/media/android/router/media_router_android.cc [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/browser/media/android/router/media_router_android.h [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/browser/media/android/router/media_router_android_bridge.cc [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/browser/media/android/router/media_router_android_bridge.h [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/browser/media/router/media_router.h [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/browser/media/router/media_router_base.cc [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/browser/media/router/media_router_base.h [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/browser/media/router/presentation/presentation_service_delegate_impl.cc [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/chrome/browser/media/router/presentation/presentation_service_delegate_impl.h [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/content/browser/presentation/presentation_service_impl_unittest.cc [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/content/public/browser/BUILD.gn [add] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/content/public/browser/media_controller.h [modify] https://crrev.com/42b46656b634a3714f91da23ac061d28341bb93e/content/public/browser/presentation_service_delegate.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/130188c17b35aad082afed5f9d3aac6f4869f67d commit 130188c17b35aad082afed5f9d3aac6f4869f67d Author: Thomas Guilbert <tguilbert@chromium.org> Date: Wed Apr 18 20:10:18 2018 Add FlingingRenderer The FlingingRenderer adapts from the media::Renderer interface to the MediaController interface. It is used in the context of RemotePlayback, and is created from an already existing presentation ID Bug: 790766 Change-Id: I2284468f3342ad4123e5318c3f2c930a171fea06 Reviewed-on: https://chromium-review.googlesource.com/1003229 Reviewed-by: Nick Carter <nick@chromium.org> Reviewed-by: Dan Sanders <sandersd@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#551799} [modify] https://crrev.com/130188c17b35aad082afed5f9d3aac6f4869f67d/content/browser/BUILD.gn [add] https://crrev.com/130188c17b35aad082afed5f9d3aac6f4869f67d/content/browser/media/flinging_renderer.cc [add] https://crrev.com/130188c17b35aad082afed5f9d3aac6f4869f67d/content/browser/media/flinging_renderer.h [add] https://crrev.com/130188c17b35aad082afed5f9d3aac6f4869f67d/content/browser/media/flinging_renderer_unittest.cc [modify] https://crrev.com/130188c17b35aad082afed5f9d3aac6f4869f67d/content/browser/media/media_interface_proxy.cc [modify] https://crrev.com/130188c17b35aad082afed5f9d3aac6f4869f67d/content/test/BUILD.gn [modify] https://crrev.com/130188c17b35aad082afed5f9d3aac6f4869f67d/media/mojo/interfaces/interface_factory.mojom
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a34e69a37ba0eb819efeae2ea1c71158fe7f02f0 commit a34e69a37ba0eb819efeae2ea1c71158fe7f02f0 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Thu Apr 19 16:18:13 2018 Expose RemotePlayback presentation ID to media/ This CL exposes the RemotePlayback's presentation ID through the WebRemotePlaybackClient interface. This allows WMPI to acquire the ID, which is necessary to build a FlingingRenderer. It also adds a small wrapper to allow the FlingingRendererClientFactory to use the presentation ID without taking a dependency on media/blink/ code. Bug: 790766 Change-Id: Ia5c41441250f52c176fe696f37afe3c4625c211d Reviewed-on: https://chromium-review.googlesource.com/1013378 Reviewed-by: Kent Tamura <tkent@chromium.org> Reviewed-by: Dan Sanders <sandersd@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#552036} [modify] https://crrev.com/a34e69a37ba0eb819efeae2ea1c71158fe7f02f0/media/blink/BUILD.gn [add] https://crrev.com/a34e69a37ba0eb819efeae2ea1c71158fe7f02f0/media/blink/remote_playback_client_wrapper_impl.cc [add] https://crrev.com/a34e69a37ba0eb819efeae2ea1c71158fe7f02f0/media/blink/remote_playback_client_wrapper_impl.h [modify] https://crrev.com/a34e69a37ba0eb819efeae2ea1c71158fe7f02f0/media/renderers/BUILD.gn [add] https://crrev.com/a34e69a37ba0eb819efeae2ea1c71158fe7f02f0/media/renderers/remote_playback_client_wrapper.h [modify] https://crrev.com/a34e69a37ba0eb819efeae2ea1c71158fe7f02f0/third_party/blink/public/platform/modules/remoteplayback/web_remote_playback_client.h [modify] https://crrev.com/a34e69a37ba0eb819efeae2ea1c71158fe7f02f0/third_party/blink/renderer/modules/remoteplayback/remote_playback.cc [modify] https://crrev.com/a34e69a37ba0eb819efeae2ea1c71158fe7f02f0/third_party/blink/renderer/modules/remoteplayback/remote_playback.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/35a70ef8957c9e52441baec710acba03a7b0bd75 commit 35a70ef8957c9e52441baec710acba03a7b0bd75 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Sat Apr 21 02:20:49 2018 Add FlingingRendererClientFactory The FlingingRendererClientFactory (FRCF) is used when flinging URLs to cast devices. The FRCF uses Mojo to create a media::Renderer in the renderer process, which controls a FlingingRenderer in the browser process. The RendererFactorySelector selects the FRCF or not, conditionally on whether FRCF has a valid presentation ID or not. This presentation ID is retrieved from the blink::RemotePlayback object tied to WMPI, through the RemotePlaybackClientWrapper. N.B: A FlingingRendererClient class does not actually exist. We return a MojoRenderer directly when CreateRenderer() is called, since a FlingingRendererClient would just be a passthrough class. Bug: 790766 Change-Id: Ief40c7b186ca35afb0e2fb9ee52bba993bcbf415 Reviewed-on: https://chromium-review.googlesource.com/1008905 Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Reviewed-by: Dan Sanders <sandersd@chromium.org> Cr-Commit-Position: refs/heads/master@{#552553} [modify] https://crrev.com/35a70ef8957c9e52441baec710acba03a7b0bd75/content/renderer/media/media_factory.cc [modify] https://crrev.com/35a70ef8957c9e52441baec710acba03a7b0bd75/content/renderer/media/media_factory.h [modify] https://crrev.com/35a70ef8957c9e52441baec710acba03a7b0bd75/media/base/renderer_factory_selector.cc [modify] https://crrev.com/35a70ef8957c9e52441baec710acba03a7b0bd75/media/base/renderer_factory_selector.h [modify] https://crrev.com/35a70ef8957c9e52441baec710acba03a7b0bd75/media/mojo/clients/mojo_renderer_factory.cc [modify] https://crrev.com/35a70ef8957c9e52441baec710acba03a7b0bd75/media/mojo/clients/mojo_renderer_factory.h [modify] https://crrev.com/35a70ef8957c9e52441baec710acba03a7b0bd75/media/renderers/BUILD.gn [add] https://crrev.com/35a70ef8957c9e52441baec710acba03a7b0bd75/media/renderers/flinging_renderer_client_factory.cc [add] https://crrev.com/35a70ef8957c9e52441baec710acba03a7b0bd75/media/renderers/flinging_renderer_client_factory.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b341bae0438882cf10c47065581d36c3d0ba3eb9 commit b341bae0438882cf10c47065581d36c3d0ba3eb9 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Wed May 09 00:02:13 2018 Create FlingingRenderer on RemotePlayback start After successfully creating a CastSession via the presentation service, we do not switch to using the FlingingRenderer. This CL adds the signals to switch to/from using the FlingingRenderer. This is done by asking WMPI to pick a new media::Renderer, by going through a suspend/resume cycle. The RendererFactorySelector should automatically choose the FlingingRendererClientFactory, based on the fact that the RemotePlaybackClientWrapper has a valid presentation ID. Bug: 790766 Change-Id: Ibab887c8a1791620ad1dcd92406c7ee618eec36d Reviewed-on: https://chromium-review.googlesource.com/1043279 Reviewed-by: Dan Sanders <sandersd@chromium.org> Reviewed-by: Kent Tamura <tkent@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#557016} [modify] https://crrev.com/b341bae0438882cf10c47065581d36c3d0ba3eb9/media/blink/webmediaplayer_impl.cc [modify] https://crrev.com/b341bae0438882cf10c47065581d36c3d0ba3eb9/media/blink/webmediaplayer_impl.h [modify] https://crrev.com/b341bae0438882cf10c47065581d36c3d0ba3eb9/third_party/blink/public/platform/web_media_player.h [modify] https://crrev.com/b341bae0438882cf10c47065581d36c3d0ba3eb9/third_party/blink/renderer/core/html/media/html_media_element.cc [modify] https://crrev.com/b341bae0438882cf10c47065581d36c3d0ba3eb9/third_party/blink/renderer/core/html/media/html_media_element.h [modify] https://crrev.com/b341bae0438882cf10c47065581d36c3d0ba3eb9/third_party/blink/renderer/modules/remoteplayback/remote_playback.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/46fa967b05ed88fd9cb2652b064d5f264de63422 commit 46fa967b05ed88fd9cb2652b064d5f264de63422 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Wed May 09 18:47:27 2018 Fix CastSession/FlingingRenderer creation race The FlingingRenderer needs a MediaController in order to be created. RemotingMediaRouteProvider signals MediaRoute creation as soon as we start to launch the RemotingCastSession. This can trigger the creation of a FlingingRenderer before the CastSession finishes launching, which means that FlingingRenderer ends up with a null MediaController. This CL delays the moment at which RemotingMediaRouteProvider completes the route creation request, to after the RemotingCastSession launches. This guarantees that we won't create a FlingingRenderer until we have a valid MediaController to retrieve. Bug: 790766 Change-Id: Ib74ab54890976f7735140e7eac79548898fbb667 Reviewed-on: https://chromium-review.googlesource.com/1043527 Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Reviewed-by: Derek Cheng <imcheng@chromium.org> Cr-Commit-Position: refs/heads/master@{#557258} [modify] https://crrev.com/46fa967b05ed88fd9cb2652b064d5f264de63422/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingMediaRouteProvider.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/151f931ee0cc7897cb13bb97432c3486d64ce257 commit 151f931ee0cc7897cb13bb97432c3486d64ce257 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Fri May 11 00:06:20 2018 Register RemotingCastSession for media messages The RemoteMediaPlayerWrapper's call to RMP.load() never completes, and all subsequent API calls fail. This is because messages from the CastDevice are not being properly routed back to RemoteMediaPlayer. This CL register the RemotingCastSession as a MessageReceivedCallback for the media namespace, and forwards those messages to the RemoteMediaPlayerWrapper. Bug: 790766 Change-Id: Ibb514b14d4559fd280c6bafac871781c7fb1ac99 Reviewed-on: https://chromium-review.googlesource.com/1044969 Reviewed-by: Zhiqiang Zhang <zqzhang@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#557733} [modify] https://crrev.com/151f931ee0cc7897cb13bb97432c3486d64ce257/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingCastSession.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/eebf40df2ea5e1970b10c0154c93985813117dd6 commit eebf40df2ea5e1970b10c0154c93985813117dd6 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Fri Jul 13 00:06:22 2018 Add media::MediaStatusObserver This CL adds MediaStatus and MediaStatusObserver, which are based off of media_router.mojom.MediaStatus. Deduplicating the MediaStatus interface from the one in the media_router namespace will be covered in crbug.com/820277 Bug: 790766 Change-Id: I7a72bb942cb303483d3abb143318269524990f9a Reviewed-on: https://chromium-review.googlesource.com/1134357 Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Reviewed-by: Dale Curtis <dalecurtis@chromium.org> Cr-Commit-Position: refs/heads/master@{#574779} [modify] https://crrev.com/eebf40df2ea5e1970b10c0154c93985813117dd6/media/base/BUILD.gn [add] https://crrev.com/eebf40df2ea5e1970b10c0154c93985813117dd6/media/base/media_status.cc [add] https://crrev.com/eebf40df2ea5e1970b10c0154c93985813117dd6/media/base/media_status.h [add] https://crrev.com/eebf40df2ea5e1970b10c0154c93985813117dd6/media/base/media_status_observer.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/fc4431bfc6c0508c1f151bd8ca82daac0973cf88 commit fc4431bfc6c0508c1f151bd8ca82daac0973cf88 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Fri Jul 20 19:05:47 2018 Replace MediaController with media::FlingingController FlingingRenderer needs to be updated when status changes happen on a device that it is currently remoting to. Instead of coupling the MediaController interface to the MediaStatusObserver interface, it is simpler to add a new interface that groups the MC and MSO. The best name for this interface is probably MediaRouteController, but there is a naming collision with media_router::MediaRouteController. mr::MRC is a class with baked in desktop and Mojo concepts, and precise lifetime management, that is not immediatly extractable into an interface. It is simpler to add a new interface now, and have mr::MRC implement this interface later. This CL adds the FlingingController as a high level, simple interface. It will eventually be renamed to MediaRouteController, as part of the work to unify the desktop and mobile remoting experience (see crbug.com/820277). Bug: 790766 Change-Id: I8248f2fd4b2022c371f37a8fd73af267b3735e7e Reviewed-on: https://chromium-review.googlesource.com/1136008 Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Reviewed-by: Dmitry Gozman <dgozman@chromium.org> Reviewed-by: Takumi Fujimoto <takumif@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#576942} [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java [rename] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/android/java/src/org/chromium/chrome/browser/media/router/FlingingControllerBridge.java [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/android/java_sources.gni [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/browser/BUILD.gn [add] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/browser/media/android/remote/flinging_controller_bridge.cc [add] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/browser/media/android/remote/flinging_controller_bridge.h [delete] https://crrev.com/7a20ffc4e1f5cbb57336f2c5254f61eba56c231e/chrome/browser/media/android/remote/media_controller_bridge.cc [delete] https://crrev.com/7a20ffc4e1f5cbb57336f2c5254f61eba56c231e/chrome/browser/media/android/remote/media_controller_bridge.h [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/browser/media/android/router/media_router_android.cc [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/browser/media/android/router/media_router_android.h [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/browser/media/android/router/media_router_android_bridge.cc [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/browser/media/android/router/media_router_android_bridge.h [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/browser/media/router/media_router.h [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/browser/media/router/media_router_base.cc [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/browser/media/router/media_router_base.h [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/browser/media/router/presentation/presentation_service_delegate_impl.cc [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/chrome/browser/media/router/presentation/presentation_service_delegate_impl.h [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/content/browser/media/flinging_renderer.cc [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/content/browser/media/flinging_renderer.h [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/content/browser/media/flinging_renderer_unittest.cc [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/content/browser/presentation/presentation_service_impl_unittest.cc [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/content/public/browser/presentation_service_delegate.h [modify] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/media/base/BUILD.gn [add] https://crrev.com/fc4431bfc6c0508c1f151bd8ca82daac0973cf88/media/base/flinging_controller.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879 commit d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Tue Jul 31 19:36:26 2018 Add FlingingController.java This CL adds the Java counterpart to media/base/flinging_controller.h. It also replaces MediaController with FlingingController in Java code. (native side equivalent CL: https://chromium-review.googlesource.com/c/chromium/src/+/1136008) Bug: 790766 Change-Id: I89846acd794e408c233839055c08593973b5b450 Reviewed-on: https://chromium-review.googlesource.com/1141079 Reviewed-by: Tommy Nyquist <nyquist@chromium.org> Reviewed-by: Derek Cheng <imcheng@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#579530} [modify] https://crrev.com/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879/chrome/android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerWrapper.java [modify] https://crrev.com/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879/chrome/android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java [add] https://crrev.com/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879/chrome/android/java/src/org/chromium/chrome/browser/media/router/FlingingController.java [modify] https://crrev.com/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879/chrome/android/java/src/org/chromium/chrome/browser/media/router/FlingingControllerBridge.java [modify] https://crrev.com/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879/chrome/android/java/src/org/chromium/chrome/browser/media/router/MediaController.java [modify] https://crrev.com/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879/chrome/android/java/src/org/chromium/chrome/browser/media/router/MediaRouteProvider.java [modify] https://crrev.com/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879/chrome/android/java/src/org/chromium/chrome/browser/media/router/caf/CafMediaRouteProvider.java [modify] https://crrev.com/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/BaseMediaRouteProvider.java [modify] https://crrev.com/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastSession.java [modify] https://crrev.com/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastSessionImpl.java [modify] https://crrev.com/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingCastSession.java [modify] https://crrev.com/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingMediaRouteProvider.java [modify] https://crrev.com/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879/chrome/android/java_sources.gni [modify] https://crrev.com/d03bcb65a801da2cc14edfc1ca6eb3fbfef2e879/chrome/android/javatests/src/org/chromium/chrome/browser/media/router/MockMediaRouteProvider.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b2fd90984cbac67fab2cbb713902a4f170664308 commit b2fd90984cbac67fab2cbb713902a4f170664308 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Wed Aug 15 01:00:39 2018 Connect Java and native MediaStatusObservers This CL adds the necessary plumbing to propagate MediaStatus updates from Java to native code. All the layers between FlingingRenderer and RemoteMediaPlayerWrapper are associated in a 1:1 capacity. This means classes don't have to manage collections of observers and can keep direct references instead. Bug: 790766 Change-Id: I0e7b2fe061857a07f10149453b86ddb57dba46e5 Reviewed-on: https://chromium-review.googlesource.com/1147678 Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Reviewed-by: Tommy Nyquist <nyquist@chromium.org> Reviewed-by: Derek Cheng <imcheng@chromium.org> Cr-Commit-Position: refs/heads/master@{#583112} [modify] https://crrev.com/b2fd90984cbac67fab2cbb713902a4f170664308/chrome/android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerWrapper.java [modify] https://crrev.com/b2fd90984cbac67fab2cbb713902a4f170664308/chrome/android/java/src/org/chromium/chrome/browser/media/router/FlingingController.java [modify] https://crrev.com/b2fd90984cbac67fab2cbb713902a4f170664308/chrome/android/java/src/org/chromium/chrome/browser/media/router/FlingingControllerBridge.java [modify] https://crrev.com/b2fd90984cbac67fab2cbb713902a4f170664308/chrome/browser/media/android/remote/flinging_controller_bridge.cc [modify] https://crrev.com/b2fd90984cbac67fab2cbb713902a4f170664308/chrome/browser/media/android/remote/flinging_controller_bridge.h [modify] https://crrev.com/b2fd90984cbac67fab2cbb713902a4f170664308/content/browser/media/flinging_renderer.cc [modify] https://crrev.com/b2fd90984cbac67fab2cbb713902a4f170664308/content/browser/media/flinging_renderer.h [modify] https://crrev.com/b2fd90984cbac67fab2cbb713902a4f170664308/content/browser/media/flinging_renderer_unittest.cc [modify] https://crrev.com/b2fd90984cbac67fab2cbb713902a4f170664308/media/base/media_status.h [modify] https://crrev.com/b2fd90984cbac67fab2cbb713902a4f170664308/media/base/media_status_observer.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/1b2f69178878cb9fd7c60851498f4d3a768edb35 commit 1b2f69178878cb9fd7c60851498f4d3a768edb35 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Wed Sep 26 01:47:36 2018 Terminate PresentationConnection directly Currently, a RemotePlayback's presentation connection never gets notified when it is terminated. This is because RP are created directly via the PresentationService, instead of passing through the PresentationController. This CL changes MediaRouterAndroid to send presentation termination messages directly to presentation connection, instead of via the presentation controller. Bug: 790766 Change-Id: If662419c1f992e98a0ce5a3547daec86ffb97ff0 Reviewed-on: https://chromium-review.googlesource.com/1242041 Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Reviewed-by: Derek Cheng <imcheng@chromium.org> Cr-Commit-Position: refs/heads/master@{#594179} [modify] https://crrev.com/1b2f69178878cb9fd7c60851498f4d3a768edb35/chrome/browser/media/android/router/media_router_android.cc [modify] https://crrev.com/1b2f69178878cb9fd7c60851498f4d3a768edb35/chrome/browser/media/android/router/media_router_android.h [modify] https://crrev.com/1b2f69178878cb9fd7c60851498f4d3a768edb35/chrome/browser/media/android/router/media_router_android_unittest.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/6fb79498d740aa7dcb9fd82a90303949103f5e6b commit 6fb79498d740aa7dcb9fd82a90303949103f5e6b Author: Thomas Guilbert <tguilbert@chromium.org> Date: Tue Oct 02 18:14:27 2018 Propagate MediaStatus update to FlingingRenderer This CL adds the boilerplate code to convert Cast.MediaStatus into media::MediaStatus, and propagates it to FlingingRenderer. The CL also adds an "UNKNOWN" and a "STOPPED" state to MediaStatus, to better represent the statuses that can be received. Bug: 790766 Change-Id: Ic14d85e1e2aa93f45ce1ca3cd4dbee4eccb2fd27 Reviewed-on: https://chromium-review.googlesource.com/c/1241695 Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#595912} [modify] https://crrev.com/6fb79498d740aa7dcb9fd82a90303949103f5e6b/chrome/android/java/src/org/chromium/chrome/browser/media/router/MediaStatusBridge.java [modify] https://crrev.com/6fb79498d740aa7dcb9fd82a90303949103f5e6b/chrome/browser/BUILD.gn [modify] https://crrev.com/6fb79498d740aa7dcb9fd82a90303949103f5e6b/chrome/browser/media/android/remote/flinging_controller_bridge.cc [modify] https://crrev.com/6fb79498d740aa7dcb9fd82a90303949103f5e6b/media/base/media_status.cc [modify] https://crrev.com/6fb79498d740aa7dcb9fd82a90303949103f5e6b/media/base/media_status.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/491305e020111d979940c7e7f6d7a53ddd2cea86 commit 491305e020111d979940c7e7f6d7a53ddd2cea86 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Thu Oct 04 00:14:46 2018 Cleanup on RemotePlayback stop Currently, successfully starting/stopping/starting RemotePlayback runs into a DCHECK, because we never properly clean up on RemotePlayback stop. This CL fixes the issue and gets rid of a TODO. Bug: 790766 Change-Id: Ieca32cd175741e5c1ae7e55879ae4a224d67b76c Reviewed-on: https://chromium-review.googlesource.com/c/1260282 Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#596435} [modify] https://crrev.com/491305e020111d979940c7e7f6d7a53ddd2cea86/third_party/blink/renderer/modules/remoteplayback/remote_playback.cc [modify] https://crrev.com/491305e020111d979940c7e7f6d7a53ddd2cea86/third_party/blink/renderer/modules/remoteplayback/remote_playback.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/d9ddaae765881ce3cec023f38917cba03b648560 commit d9ddaae765881ce3cec023f38917cba03b648560 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Wed Oct 10 20:58:08 2018 Start RemotePlayback from current time Currently, the new RemotePlayback path always plays videos from the beginning. It also disregard the current play/pause state and always autoplays. This CL fixes both issues by delaying the call to load, until we get our first seek or play command, and by loading the video with the current time. The case when a video that has was never played is cast will be re-examined in a follow up CL (the user intent when casting a video is probably to watch it, so it is probably best to start playback, rather than to force the user to cast and then press play). Bug: 790766 Change-Id: I1f457f7aad77deaab3fb1a4bddc27bc0687698e7 Reviewed-on: https://chromium-review.googlesource.com/c/1263615 Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#598494} [modify] https://crrev.com/d9ddaae765881ce3cec023f38917cba03b648560/chrome/android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerWrapper.java [modify] https://crrev.com/d9ddaae765881ce3cec023f38917cba03b648560/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingCastSession.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/29ae1a90775c019ecba7d7386c28beaa8b521f32 commit 29ae1a90775c019ecba7d7386c28beaa8b521f32 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Sat Oct 20 01:53:38 2018 Disable "pause on hide" when flinging videos Currently, we sometimes pause videos when they are hidden, as an optimization. This causes videos flung to cast devices to pause as well, since the pause command sent to the FlingingRenderer is forwarded to the cast device. This CL fixes adds a new flag to track whether or not we are currently flinging a video, and disables ShouldPauseVideoWhenHidden() when we are. Bug: 790766 Change-Id: I7729ab2c8187ffd1c77ebb6c48301165dea1d90f Reviewed-on: https://chromium-review.googlesource.com/c/1292820 Reviewed-by: Dan Sanders <sandersd@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#601386} [modify] https://crrev.com/29ae1a90775c019ecba7d7386c28beaa8b521f32/media/blink/webmediaplayer_impl.cc [modify] https://crrev.com/29ae1a90775c019ecba7d7386c28beaa8b521f32/media/blink/webmediaplayer_impl.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/43dcbdf08b538aacf8907b0cf3d90477a785596b commit 43dcbdf08b538aacf8907b0cf3d90477a785596b Author: Thomas Guilbert <tguilbert@chromium.org> Date: Mon Nov 05 18:25:03 2018 Add RemotingAppLauncher and DefaultRemotingApp The RemotingAppLauncher instantiates RemotingApps at runtime. It uses the app manifest to find class names of RemotingApps, and loads them via reflection. The DefaultRemotingApp is a simple wrapper around the default media receiver application. Bug: 790766 Change-Id: I01f51ebe90de361b947d67fe904a2faddc35f5de Reviewed-on: https://chromium-review.googlesource.com/c/1306778 Reviewed-by: Zhiqiang Zhang <zqzhang@chromium.org> Reviewed-by: David Trainor <dtrainor@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#605389} [modify] https://crrev.com/43dcbdf08b538aacf8907b0cf3d90477a785596b/chrome/android/java/AndroidManifest.xml [modify] https://crrev.com/43dcbdf08b538aacf8907b0cf3d90477a785596b/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CreateRouteRequest.java [add] https://crrev.com/43dcbdf08b538aacf8907b0cf3d90477a785596b/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/DefaultRemotingApp.java [add] https://crrev.com/43dcbdf08b538aacf8907b0cf3d90477a785596b/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingAppLauncher.java [modify] https://crrev.com/43dcbdf08b538aacf8907b0cf3d90477a785596b/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingMediaSource.java [modify] https://crrev.com/43dcbdf08b538aacf8907b0cf3d90477a785596b/chrome/android/java_sources.gni
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cb04d0bc880c3a333aa6f464ddadc7d288948d5d commit cb04d0bc880c3a333aa6f464ddadc7d288948d5d Author: Thomas Guilbert <tguilbert@chromium.org> Date: Wed Nov 07 21:16:24 2018 Revert "Add RemotingAppLauncher and DefaultRemotingApp" This reverts commit 43dcbdf08b538aacf8907b0cf3d90477a785596b. Reason for revert: 902871 Original change's description: > Add RemotingAppLauncher and DefaultRemotingApp > > The RemotingAppLauncher instantiates RemotingApps at runtime. It uses > the app manifest to find class names of RemotingApps, and loads them via > reflection. > > The DefaultRemotingApp is a simple wrapper around the default media > receiver application. > > Bug: 790766 > Change-Id: I01f51ebe90de361b947d67fe904a2faddc35f5de > Reviewed-on: https://chromium-review.googlesource.com/c/1306778 > Reviewed-by: Zhiqiang Zhang <zqzhang@chromium.org> > Reviewed-by: David Trainor <dtrainor@chromium.org> > Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> > Cr-Commit-Position: refs/heads/master@{#605389} TBR=dtrainor@chromium.org,zqzhang@chromium.org,tguilbert@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: 790766 Change-Id: I3995a570a71923053711bb1ea491f9d24521fdea Reviewed-on: https://chromium-review.googlesource.com/c/1324194 Reviewed-by: Thomas Guilbert <tguilbert@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#606160} [modify] https://crrev.com/cb04d0bc880c3a333aa6f464ddadc7d288948d5d/chrome/android/java/AndroidManifest.xml [modify] https://crrev.com/cb04d0bc880c3a333aa6f464ddadc7d288948d5d/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CreateRouteRequest.java [delete] https://crrev.com/09760cea79b46c21d3246a85e3908f735fd070af/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/DefaultRemotingApp.java [delete] https://crrev.com/09760cea79b46c21d3246a85e3908f735fd070af/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingAppLauncher.java [modify] https://crrev.com/cb04d0bc880c3a333aa6f464ddadc7d288948d5d/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingMediaSource.java [modify] https://crrev.com/cb04d0bc880c3a333aa6f464ddadc7d288948d5d/chrome/android/java_sources.gni
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4c6feff517dd9b045bcedfb105cffe60baa97e2a commit 4c6feff517dd9b045bcedfb105cffe60baa97e2a Author: Thomas Guilbert <tguilbert@chromium.org> Date: Fri Nov 09 19:53:32 2018 Hide MediaSession controls when flinging When flinging, we currently have 3 notifications show up. The notification surfaced from the Chrome MediaRouter offers a better path to control the media route directly, and the media session controls are redundant. This CL adds |is_flinging_| into UpdatePlayState's computations, in order to hide the MediaSession controller when using RemotePlayack. Bug: 790766 Change-Id: If1acd5eb845875cbc19f08b71b74e27aba048c50 Reviewed-on: https://chromium-review.googlesource.com/c/1327537 Reviewed-by: Dan Sanders <sandersd@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#606943} [modify] https://crrev.com/4c6feff517dd9b045bcedfb105cffe60baa97e2a/media/blink/webmediaplayer_impl.cc [modify] https://crrev.com/4c6feff517dd9b045bcedfb105cffe60baa97e2a/media/blink/webmediaplayer_impl.h [modify] https://crrev.com/4c6feff517dd9b045bcedfb105cffe60baa97e2a/media/blink/webmediaplayer_impl_unittest.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/e14e585040fd188ab1b598d07b178e0b63446862 commit e14e585040fd188ab1b598d07b178e0b63446862 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Fri Nov 09 23:50:13 2018 Propagate cast application stop Currently, if a cast application is stopped from a different device that started the application, RemotePlayback is not properly torn down. This is because the cast application listener is never given a reference to the session that it should tear down. This CL fixes the issue, and adds a pre-emptive null check. Bug: 790766 Change-Id: I6fa67ca87a05efd135c57b396d6d09e69065a6f3 Reviewed-on: https://chromium-review.googlesource.com/c/1327605 Reviewed-by: Zhiqiang Zhang <zqzhang@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#607035} [modify] https://crrev.com/e14e585040fd188ab1b598d07b178e0b63446862/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/ChromeCastSessionManager.java
The following revision refers to this bug: https://chrome-internal.googlesource.com/clank/internal/apps/+/67acbe98be5498c17a82a0a102a32f828bfe51d5 commit 67acbe98be5498c17a82a0a102a32f828bfe51d5 Author: Thomas Guilbert <tguilbert@google.com> Date: Tue Nov 20 22:26:56 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b79f523cb0317bf7eec31357f8d7812396e04467 commit b79f523cb0317bf7eec31357f8d7812396e04467 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Tue Nov 20 23:02:43 2018 Add custom remote playback app ID The RemotePlaybackAppLauncher CL was reverted due to a regression (see cb04d0bc880c3a333aa6f464ddadc7d288948d5d). Since the revert, needs have changed, and we no longer need a fully dynamically chosen app ID. This CL adds the ability to define a custom RemotePlayback app ID from the AndroidManifest, which can be overriden downstream. The info is stored in a static field, since it does not change at runtime. Bug: 790766 Change-Id: I2b2d466304234f4c07a4b617dc336f936aabc585 Reviewed-on: https://chromium-review.googlesource.com/c/1334660 Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Reviewed-by: Zhiqiang Zhang <zqzhang@chromium.org> Cr-Commit-Position: refs/heads/master@{#609840} [modify] https://crrev.com/b79f523cb0317bf7eec31357f8d7812396e04467/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/remoting/RemotingMediaSource.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/64c063f5ee56ecbe5dc95540d41ea6fc876f5228 commit 64c063f5ee56ecbe5dc95540d41ea6fc876f5228 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Wed Nov 28 00:27:06 2018 Disable old RemotePlayback tests The new RemotePlayback pipeline will be turned on by default in M72, using a finch experiment. This change disables tests that will fail if they get the finch configuration that turns on the new RemotePlayback pipeline on. Bug: 790766 Change-Id: Id7809111f9e3883ef68a6853750d04e377b38992 Reviewed-on: https://chromium-review.googlesource.com/c/1352613 Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Cr-Commit-Position: refs/heads/master@{#611450} [modify] https://crrev.com/64c063f5ee56ecbe5dc95540d41ea6fc876f5228/chrome/android/javatests/src/org/chromium/chrome/browser/media/remote/CastNotificationTest.java [modify] https://crrev.com/64c063f5ee56ecbe5dc95540d41ea6fc876f5228/chrome/android/javatests/src/org/chromium/chrome/browser/media/remote/CastPositionTransferTest.java [modify] https://crrev.com/64c063f5ee56ecbe5dc95540d41ea6fc876f5228/chrome/android/javatests/src/org/chromium/chrome/browser/media/remote/CastStartStopTest.java [modify] https://crrev.com/64c063f5ee56ecbe5dc95540d41ea6fc876f5228/chrome/android/javatests/src/org/chromium/chrome/browser/media/remote/CastSwitchVideoTest.java [modify] https://crrev.com/64c063f5ee56ecbe5dc95540d41ea6fc876f5228/chrome/android/javatests/src/org/chromium/chrome/browser/media/remote/CastVideoControlsTest.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f6bc9ac810f69e3310afdb522343447aeee9ea45 commit f6bc9ac810f69e3310afdb522343447aeee9ea45 Author: Thomas Guilbert <tguilbert@chromium.org> Date: Mon Dec 03 22:07:41 2018 Turn on new RemotePlayback by default This CL turns on the new RemotePlayback pipeline by default. There are still some issues to address, but none of them are blocking. Due to the relatively small use of this feature, it is best to turn the feature on by default, to get the coverage we need. The extended period of time between M72 branch cut and M72 stable cut will be used to merge back any unforeseen regressions that pop-up. NOTE: This change might lead to regressions or improvements of various tests. Bug: 790766 Change-Id: I3e2ed2073da6a28b5ec6cb1ee6d2dd1851df1fde Reviewed-on: https://chromium-review.googlesource.com/c/1338887 Commit-Queue: Thomas Guilbert <tguilbert@chromium.org> Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Reviewed-by: Dale Curtis <dalecurtis@chromium.org> Cr-Commit-Position: refs/heads/master@{#613277} [modify] https://crrev.com/f6bc9ac810f69e3310afdb522343447aeee9ea45/media/base/media_switches.cc
Comment 1 by tguilbert@chromium.org
, Dec 1 2017