New issue
Advanced search Search tips

Issue 790766 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug


Sign in to add a comment

Deprecate WebMediaPlayerCast and add RemotePlayback

Project Member Reported by tguilbert@chromium.org, Nov 30 2017

Issue description

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.
 
Blockedon: 791145
Project Member

Comment 2 by bugdroid1@chromium.org, Dec 5 2017

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

Project Member

Comment 3 by bugdroid1@chromium.org, Dec 7 2017

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

Project Member

Comment 4 by bugdroid1@chromium.org, Dec 15 2017

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

Project Member

Comment 5 by bugdroid1@chromium.org, Jan 5 2018

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

Project Member

Comment 6 by bugdroid1@chromium.org, Jan 9 2018

Project Member

Comment 7 by bugdroid1@chromium.org, Feb 8 2018

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

Project Member

Comment 8 by bugdroid1@chromium.org, Feb 26 2018

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

Blockedon: 820277
Project Member

Comment 10 by bugdroid1@chromium.org, Mar 12 2018

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

Blockedon: 830871
Project Member

Comment 12 by bugdroid1@chromium.org, Apr 18 2018

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

Project Member

Comment 13 by bugdroid1@chromium.org, Apr 19 2018

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

Project Member

Comment 14 by bugdroid1@chromium.org, Apr 21 2018

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

Blocking: 839651
Project Member

Comment 16 by bugdroid1@chromium.org, May 9 2018

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

Project Member

Comment 17 by bugdroid1@chromium.org, May 9 2018

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

Project Member

Comment 18 by bugdroid1@chromium.org, May 11 2018

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

Project Member

Comment 19 by bugdroid1@chromium.org, Jul 13

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

Project Member

Comment 20 by bugdroid1@chromium.org, Jul 20

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

Project Member

Comment 21 by bugdroid1@chromium.org, Jul 31

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

Project Member

Comment 22 by bugdroid1@chromium.org, Aug 15

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

Blockedon: 875517
Project Member

Comment 24 by bugdroid1@chromium.org, Sep 26

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

Project Member

Comment 25 by bugdroid1@chromium.org, Oct 2

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

Project Member

Comment 26 by bugdroid1@chromium.org, Oct 4

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

Project Member

Comment 27 by bugdroid1@chromium.org, Oct 10

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

Project Member

Comment 28 by bugdroid1@chromium.org, Oct 20

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

Labels: Videostack-RemotePlayback
Project Member

Comment 30 by bugdroid1@chromium.org, Nov 5

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

Project Member

Comment 31 by bugdroid1@chromium.org, Nov 7

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

Blocking: 903426
Project Member

Comment 33 by bugdroid1@chromium.org, Nov 9

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

Project Member

Comment 34 by bugdroid1@chromium.org, Nov 9

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

Project Member

Comment 35 by bugdroid1@chromium.org, Nov 20

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

Project Member

Comment 36 by bugdroid1@chromium.org, Nov 20

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

Project Member

Comment 37 by bugdroid1@chromium.org, Nov 28

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

Project Member

Comment 38 by bugdroid1@chromium.org, Dec 3

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

Sign in to add a comment