// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // API invoked by the browser MediaRouterWebUIMessageHandler to communicate // with this UI. cr.define('media_router.ui', function() { 'use strict'; // The media-router-container element. var container = null; /** * Adds a new route. * * @param {!media_router.Route} route */ function addRoute(route) { container.addRoute(route); } /** * Sets the cast mode list. * * @param {!Array} castModeList */ function setCastModeList(castModeList) { container.castModeList = castModeList; } /** * Sets |container|. * * @param {!MediaRouterContainerElement} mediaRouterContainer */ function setContainer(mediaRouterContainer) { container = mediaRouterContainer; } /** * Populates the WebUI with data obtained from Media Router. * * @param {headerText: string, * sinks: !Array, * routes: !Array, * castModes: !Array} data * Parameters in data: * headerText - text to be displayed in the header of the WebUI. * sinks - list of sinks to be displayed. * routes - list of routes that are associated with the sinks. * castModes - list of available cast modes. */ function setInitialData(data) { container.headerText = data['headerText']; container.sinkList = data['sinks']; container.routeList = data['routes']; container.castModeList = data['castModes']; } /** * Sets current issue to |issue|, or clears the current issue if |issue| is * null. * * @param {?media_router.Issue} issue */ function setIssue(issue) { container.issue = issue; } /** * Sets the list of currently active routes. * * @param {!Array} routeList */ function setRouteList(routeList) { container.routeList = routeList; } /** * Sets the list of discovered sinks. * * @param {!Array} sinkList */ function setSinkList(sinkList) { container.sinkList = sinkList; } return { addRoute: addRoute, setCastModeList: setCastModeList, setContainer: setContainer, setInitialData: setInitialData, setIssue: setIssue, setRouteList: setRouteList, setSinkList: setSinkList, }; }); // API invoked by this UI to communicate with the browser WebUI message handler. cr.define('media_router.browserApi', function() { 'use strict'; /** * Acts on the given issue. * * @param {string} issueId * @param {number} actionType Type of action that the user clicked. * @param {?number} helpPageId The numeric help center ID. */ function actOnIssue(issueId, actionType, helpPageId) { chrome.send('actOnIssue', [{issueId: issueId, actionType: actionType, helpPageId: helpPageId}]); } /** * Closes the dialog. */ function closeDialog() { chrome.send('closeDialog'); } /** * Closes the given route. * * @param {!media_router.Route} route */ function closeRoute(route) { chrome.send('closeRoute', [{routeId: route.id}]); } /** * Requests data to initialize the WebUI with. * The data will be returned via media_router.ui.setInitialData. */ function requestInitialData() { chrome.send('requestInitialData'); } /** * Requests that a media route be started with the given sink. * * @param {string} sinkId The sink ID. * @param {number} selectedCastMode The value of the cast mode the user * selected, or -1 if the user has not explicitly selected a mode. */ function requestRoute(sinkId, selectedCastMode) { chrome.send('requestRoute', [{sinkId: sinkId, selectedCastMode: selectedCastMode}]); } return { actOnIssue: actOnIssue, closeDialog: closeDialog, closeRoute: closeRoute, requestInitialData: requestInitialData, requestRoute: requestRoute, }; });