Chromium Code Reviews| 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..e699f110673fab53e13064d2275740cef6d1c767 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', |
|
imcheng
2017/03/29 23:37:33
Note: I will change this if Takumi's patch to move
|
| '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'; |
| /** |
| @@ -518,9 +526,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 +590,8 @@ define('media_router_bindings', [ |
| 'enableMdnsDiscovery', |
| 'updateMediaSinks', |
| 'searchSinks', |
| + 'createMediaRouteController', |
| + 'setMediaRouteStatusObserver', |
| 'onBeforeInvokeHandler' |
| ]; |
| requiredHandlers.forEach(function(nextHandler) { |
| @@ -842,8 +862,61 @@ 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))); |
| - return mediaRouter; |
| + 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, |
| + mediaRouterService: mediaRouter |
| + }; |
| }); |