Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / chrome / browser / resources / media_router / media_router_ui_interface.js
blobe5789f1adf9b9da452fdd88067617be3c1dd9867
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    * Adds a new route.
15    *
16    * @param {!media_router.Route} route
17    */
18   function addRoute(route) {
19     container.addRoute(route);
20   }
22   /**
23    * Sets the cast mode list.
24    *
25    * @param {!Array<!media_router.CastMode>} castModeList
26    */
27   function setCastModeList(castModeList) {
28     container.castModeList = castModeList;
29   }
31   /**
32    * Sets |container|.
33    *
34    * @param {!MediaRouterContainerElement} mediaRouterContainer
35    */
36   function setContainer(mediaRouterContainer) {
37     container = mediaRouterContainer;
38   }
40   /**
41    * Populates the WebUI with data obtained from Media Router.
42    *
43    * @param {headerText: string,
44    *         headerTextTooltip: string,
45    *         sinks: !Array<!media_router.Sink>,
46    *         routes: !Array<!media_router.Route>,
47    *         castModes: !Array<!media_router.CastMode>} data
48    * Parameters in data:
49    *   headerText - text to be displayed in the header of the WebUI.
50    *   headerTextTooltip - tooltip to be displayed for the header of the WebUI.
51    *   sinks - list of sinks to be displayed.
52    *   routes - list of routes that are associated with the sinks.
53    *   castModes - list of available cast modes.
54    *   routeProviderExtensionId - the ID of the media route provider extension.
55    */
56   function setInitialData(data) {
57     container.headerText = data['headerText'];
58     container.headerTextTooltip = data['headerTextTooltip'];
59     container.sinkList = data['sinks'];
60     container.routeList = data['routes'];
61     container.castModeList = data['castModes'];
62     container.routeProviderExtensionId = data['routeProviderExtensionId'];
63   }
65   /**
66    * Sets current issue to |issue|, or clears the current issue if |issue| is
67    * null.
68    *
69    * @param {?media_router.Issue} issue
70    */
71   function setIssue(issue) {
72     container.issue = issue;
73   }
75   /**
76    * Sets the list of currently active routes.
77    *
78    * @param {!Array<!media_router.Route>} routeList
79    */
80   function setRouteList(routeList) {
81     container.routeList = routeList;
82   }
84   /**
85    * Sets the list of discovered sinks.
86    *
87    * @param {!Array<!media_router.Sink>} sinkList
88    */
89   function setSinkList(sinkList) {
90     container.sinkList = sinkList;
91   }
93   return {
94     addRoute: addRoute,
95     setCastModeList: setCastModeList,
96     setContainer: setContainer,
97     setInitialData: setInitialData,
98     setIssue: setIssue,
99     setRouteList: setRouteList,
100     setSinkList: setSinkList,
101   };
104 // API invoked by this UI to communicate with the browser WebUI message handler.
105 cr.define('media_router.browserApi', function() {
106   'use strict';
108   /**
109    * Acts on the given issue.
110    *
111    * @param {string} issueId
112    * @param {number} actionType Type of action that the user clicked.
113    * @param {?number} helpPageId The numeric help center ID.
114    */
115   function actOnIssue(issueId, actionType, helpPageId) {
116     chrome.send('actOnIssue', [{issueId: issueId, actionType: actionType,
117                                 helpPageId: helpPageId}]);
118   }
120   /**
121    * Closes the dialog.
122    */
123   function closeDialog() {
124     chrome.send('closeDialog');
125   }
127   /**
128    * Closes the given route.
129    *
130    * @param {!media_router.Route} route
131    */
132   function closeRoute(route) {
133     chrome.send('closeRoute', [{routeId: route.id}]);
134   }
136   /**
137    * Requests data to initialize the WebUI with.
138    * The data will be returned via media_router.ui.setInitialData.
139    */
140   function requestInitialData() {
141     chrome.send('requestInitialData');
142   }
144   /**
145    * Requests that a media route be started with the given sink.
146    *
147    * @param {string} sinkId The sink ID.
148    * @param {number} selectedCastMode The value of the cast mode the user
149    *   selected, or -1 if the user has not explicitly selected a mode.
150    */
151   function requestRoute(sinkId, selectedCastMode) {
152     chrome.send('requestRoute',
153                 [{sinkId: sinkId, selectedCastMode: selectedCastMode}]);
154   }
156   return {
157     actOnIssue: actOnIssue,
158     closeDialog: closeDialog,
159     closeRoute: closeRoute,
160     requestInitialData: requestInitialData,
161     requestRoute: requestRoute,
162   };