| Index: extensions/renderer/resources/media_router_bindings.js
|
| diff --git a/extensions/renderer/resources/media_router_bindings.js b/extensions/renderer/resources/media_router_bindings.js
|
| index 7aeb83d8eb996b68e27a98ff2c8ef5a2359caae5..6eb4f4d73b1d1182a704b12588225c2590532aca 100644
|
| --- a/extensions/renderer/resources/media_router_bindings.js
|
| +++ b/extensions/renderer/resources/media_router_bindings.js
|
| @@ -6,17 +6,25 @@ var mediaRouter;
|
|
|
| define('media_router_bindings', [
|
| 'content/public/renderer/frame_interfaces',
|
| + 'chrome/browser/media/router/mojo/media_controller.mojom',
|
| 'chrome/browser/media/router/mojo/media_router.mojom',
|
| + 'chrome/browser/media/router/mojo/media_status.mojom',
|
| 'extensions/common/mojo/keep_alive.mojom',
|
| 'mojo/common/time.mojom',
|
| 'mojo/public/js/bindings',
|
| + 'net/interfaces/ip_address.mojom',
|
| 'url/mojo/origin.mojom',
|
| + 'url/mojo/url.mojom',
|
| ], function(frameInterfaces,
|
| + mediaControllerMojom,
|
| mediaRouterMojom,
|
| + mediaStatusMojom,
|
| keepAliveMojom,
|
| timeMojom,
|
| bindings,
|
| - originMojom) {
|
| + ipAddressMojom,
|
| + originMojom,
|
| + urlMojom) {
|
| 'use strict';
|
|
|
| /**
|
| @@ -256,6 +264,32 @@ define('media_router_bindings', [
|
| }
|
|
|
| /**
|
| + * Returns definitions of Mojo core and generated Mojom classes that can be
|
| + * used directly by the component.
|
| + * @return {!Object}
|
| + * TODO(imcheng): We should export these along with MediaRouter. This requires
|
| + * us to modify the component to handle multiple exports. When that logic is
|
| + * baked in for a couple of milestones, we should be able to remove this
|
| + * method.
|
| + */
|
| + MediaRouter.prototype.getMojoExports = function() {
|
| + return {
|
| + Binding: bindings.Binding,
|
| + DialMediaSink: mediaRouterMojom.DialMediaSink,
|
| + CastMediaSink: mediaRouterMojom.CastMediaSink,
|
| + IPAddress: ipAddressMojom.IPAddress,
|
| + InterfacePtrController: bindings.InterfacePtrController,
|
| + InterfaceRequest: bindings.InterfaceRequest,
|
| + MediaController: mediaControllerMojom.MediaController,
|
| + MediaStatus: mediaStatusMojom.MediaStatus,
|
| + MediaStatusObserverPtr: mediaStatusMojom.MediaStatusObserverPtr,
|
| + Sink: mediaRouterMojom.MediaSink,
|
| + SinkExtraData: mediaRouterMojom.MediaSinkExtraData,
|
| + Url: urlMojom.Url,
|
| + };
|
| + };
|
| +
|
| + /**
|
| * Registers the Media Router Provider Manager with the Media Router.
|
| * @return {!Promise<string>} Instance ID for the Media Router.
|
| */
|
| @@ -518,9 +552,19 @@ define('media_router_bindings', [
|
| this.updateMediaSinks = null;
|
|
|
| /**
|
| - * @type {function(!string, !string, !SinkSearchCriteria): !string}
|
| + * @type {function(string, string, !SinkSearchCriteria): string}
|
| */
|
| this.searchSinks = null;
|
| +
|
| + /**
|
| + * @type {function(string, !bindings.InterfaceRequest): !Promise<boolean>}
|
| + */
|
| + this.createMediaRouteController = null;
|
| +
|
| + /**
|
| + * @type {function(string, !mediaStatusMojom.MediaStatusObserverPtr)}
|
| + */
|
| + this.setMediaRouteStatusObserver = null;
|
| };
|
|
|
| /**
|
| @@ -572,6 +616,8 @@ define('media_router_bindings', [
|
| 'enableMdnsDiscovery',
|
| 'updateMediaSinks',
|
| 'searchSinks',
|
| + 'createMediaRouteController',
|
| + 'setMediaRouteStatusObserver',
|
| 'onBeforeInvokeHandler'
|
| ];
|
| requiredHandlers.forEach(function(nextHandler) {
|
| @@ -842,6 +888,45 @@ define('media_router_bindings', [
|
| });
|
| };
|
|
|
| +
|
| + /**
|
| + * Creates a controller for the given route and binds the given
|
| + * InterfaceRequest to it.
|
| + * @param {string} routeId
|
| + * @param {!bindings.InterfaceRequest} controllerRequest
|
| + * @return {!Promise<!{success: boolean}>} Resolves to true if a controller
|
| + * is created. Resolves to false if a controller cannot be created, or if
|
| + * the controller is already bound.
|
| + */
|
| + MediaRouteProvider.prototype.createMediaRouteController = function(
|
| + routeId, controllerRequest) {
|
| + // TODO(imcheng): Remove this check when M59 is in stable.
|
| + if (!this.handlers_.createMediaRouteController) {
|
| + return Promise.resolve({success: false});
|
| + }
|
| +
|
| + this.handlers_.onBeforeInvokeHandler();
|
| + this.handlers_.createMediaRouteController(routeId, controllerRequest)
|
| + .then(controller => {success: true},
|
| + e => {success: false});
|
| + }
|
| +
|
| + /**
|
| + * Sets the MediaStatus oberver for a given route. MediaStatus updates are
|
| + * notified via the given observer interface.
|
| + * @param {string} routeId
|
| + * @param {!mediaStatusMojom.MediaStatusObserverPtr} observer
|
| + */
|
| + MediaRouteProvider.prototype.setMediaRouteStatusObserver = function(
|
| + routeId, observer) {
|
| + // TODO(imcheng): Remove this check when M59 is in stable.
|
| + if (!this.handlers_.setMediaRouteStatusObserver) {
|
| + return;
|
| + }
|
| + this.handlers_.onBeforeInvokeHandler();
|
| + this.handlers_.setMediaRouteStatusObserver(routeId, observer);
|
| + };
|
| +
|
| mediaRouter = new MediaRouter(new mediaRouterMojom.MediaRouterPtr(
|
| frameInterfaces.getInterface(mediaRouterMojom.MediaRouter.name)));
|
|
|
|
|