Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / browser / resources / media_router / media_router_ui_interface.js
blob3a4faf80995fecc43b04e5632ebe3c4d0e39325d
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // API invoked by the browser MediaRouterWebUIMessageHandler to communicate
6 // with this UI.
7 cr.define('media_router.ui', function() {
8   'use strict';
10   // The media-router-container element.
11   var container = null;
13   /**
14    * Handles response of previous create route attempt.
15    *
16    * @param {string} sinkId The ID of the sink to which the Media Route was
17    *     creating a route.
18    * @param {?media_router.Route} route The newly create route to the sink
19    *     if route creation succeeded; null otherwise
20    */
21   function onCreateRouteResponseReceived(sinkId, route) {
22     container.onCreateRouteResponseReceived(sinkId, route);
23   }
25   /**
26    * Sets the cast mode list.
27    *
28    * @param {!Array<!media_router.CastMode>} castModeList
29    */
30   function setCastModeList(castModeList) {
31     container.castModeList = castModeList;
32   }
34   /**
35    * Sets |container|.
36    *
37    * @param {!MediaRouterContainerElement} mediaRouterContainer
38    */
39   function setContainer(mediaRouterContainer) {
40     container = mediaRouterContainer;
41   }
43   /**
44    * Populates the WebUI with data obtained from Media Router.
45    *
46    * @param {headerText: string,
47    *         headerTextTooltip: string,
48    *         deviceMissingUrl: string,
49    *         sinks: !Array<!media_router.Sink>,
50    *         routes: !Array<!media_router.Route>,
51    *         castModes: !Array<!media_router.CastMode>} data
52    * Parameters in data:
53    *   headerText - text to be displayed in the header of the WebUI.
54    *   headerTextTooltip - tooltip to be displayed for the header of the WebUI.
55    *   deviceMissingUrl - url to be opened on "Device missing?" clicked.
56    *   sinks - list of sinks to be displayed.
57    *   routes - list of routes that are associated with the sinks.
58    *   castModes - list of available cast modes.
59    */
60   function setInitialData(data) {
61     container.headerText = data['headerText'];
62     container.headerTextTooltip = data['headerTextTooltip'];
63     container.deviceMissingUrl = data['deviceMissingUrl'];
64     container.sinkList = data['sinks'];
65     container.routeList = data['routes'];
66     container.castModeList = data['castModes'];
67   }
69   /**
70    * Sets current issue to |issue|, or clears the current issue if |issue| is
71    * null.
72    *
73    * @param {?media_router.Issue} issue
74    */
75   function setIssue(issue) {
76     container.issue = issue;
77   }
79   /**
80    * Sets the list of currently active routes.
81    *
82    * @param {!Array<!media_router.Route>} routeList
83    */
84   function setRouteList(routeList) {
85     container.routeList = routeList;
86   }
88   /**
89    * Sets the list of discovered sinks.
90    *
91    * @param {!Array<!media_router.Sink>} sinkList
92    */
93   function setSinkList(sinkList) {
94     container.sinkList = sinkList;
95   }
97   return {
98     onCreateRouteResponseReceived: onCreateRouteResponseReceived,
99     setCastModeList: setCastModeList,
100     setContainer: setContainer,
101     setInitialData: setInitialData,
102     setIssue: setIssue,
103     setRouteList: setRouteList,
104     setSinkList: setSinkList,
105   };
108 // API invoked by this UI to communicate with the browser WebUI message handler.
109 cr.define('media_router.browserApi', function() {
110   'use strict';
112   /**
113    * Acts on the given issue.
114    *
115    * @param {string} issueId
116    * @param {number} actionType Type of action that the user clicked.
117    * @param {?number} helpPageId The numeric help center ID.
118    */
119   function actOnIssue(issueId, actionType, helpPageId) {
120     chrome.send('actOnIssue', [{issueId: issueId, actionType: actionType,
121                                 helpPageId: helpPageId}]);
122   }
124   /**
125    * Closes the dialog.
126    */
127   function closeDialog() {
128     chrome.send('closeDialog');
129   }
131   /**
132    * Closes the given route.
133    *
134    * @param {!media_router.Route} route
135    */
136   function closeRoute(route) {
137     chrome.send('closeRoute', [{routeId: route.id}]);
138   }
140   /**
141    * Requests data to initialize the WebUI with.
142    * The data will be returned via media_router.ui.setInitialData.
143    */
144   function requestInitialData() {
145     chrome.send('requestInitialData');
146   }
148   /**
149    * Requests that a media route be started with the given sink.
150    *
151    * @param {string} sinkId The sink ID.
152    * @param {number} selectedCastMode The value of the cast mode the user
153    *   selected, or -1 if the user has not explicitly selected a mode.
154    */
155   function requestRoute(sinkId, selectedCastMode) {
156     chrome.send('requestRoute',
157                 [{sinkId: sinkId, selectedCastMode: selectedCastMode}]);
158   }
160   return {
161     actOnIssue: actOnIssue,
162     closeDialog: closeDialog,
163     closeRoute: closeRoute,
164     requestInitialData: requestInitialData,
165     requestRoute: requestRoute,
166   };