Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(258)

Side by Side Diff: chrome/browser/resources/media_router/media_router_browser_api.js

Issue 2725503002: [Media Router] Custom Controls 4 - Implement details view WebUI (Closed)
Patch Set: Add braces to @implements {Interface} Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // API invoked by the browser MediaRouterWebUIMessageHandler to communicate
6 // with this UI.
7 cr.define('media_router.ui', function() {
8 'use strict';
9
10 // The media-router-container element.
11 var container = null;
12
13 // The media-router-header element.
14 var header = null;
15
16 /**
17 * Handles response of previous create route attempt.
18 *
19 * @param {string} sinkId The ID of the sink to which the Media Route was
20 * creating a route.
21 * @param {?media_router.Route} route The newly created route that
22 * corresponds to the sink if route creation succeeded; null otherwise.
23 * @param {boolean} isForDisplay Whether or not |route| is for display.
24 */
25 function onCreateRouteResponseReceived(sinkId, route, isForDisplay) {
26 container.onCreateRouteResponseReceived(sinkId, route, isForDisplay);
27 }
28
29 /**
30 * Handles the search response by forwarding |sinkId| to the container.
31 *
32 * @param {string} sinkId The ID of the sink found by search.
33 */
34 function receiveSearchResult(sinkId) {
35 container.onReceiveSearchResult(sinkId);
36 }
37
38 /**
39 * Sets the cast mode list.
40 *
41 * @param {!Array<!media_router.CastMode>} castModeList
42 */
43 function setCastModeList(castModeList) {
44 container.castModeList = castModeList;
45 }
46
47 /**
48 * Sets |container| and |header|.
49 *
50 * @param {!MediaRouterContainerElement} mediaRouterContainer
51 * @param {!MediaRouterHeaderElement} mediaRouterHeader
52 */
53 function setElements(mediaRouterContainer, mediaRouterHeader) {
54 container = mediaRouterContainer;
55 header = mediaRouterHeader;
56 }
57
58 /**
59 * Populates the WebUI with data obtained about the first run flow.
60 *
61 * @param {{firstRunFlowCloudPrefLearnMoreUrl: string,
62 * firstRunFlowLearnMoreUrl: string,
63 * wasFirstRunFlowAcknowledged: boolean,
64 * showFirstRunFlowCloudPref: boolean}} data
65 * Parameters in data:
66 * firstRunFlowCloudPrefLearnMoreUrl - url to open when the cloud services
67 * pref learn more link is clicked.
68 * firstRunFlowLearnMoreUrl - url to open when the first run flow learn
69 * more link is clicked.
70 * wasFirstRunFlowAcknowledged - true if first run flow was previously
71 * acknowledged by user.
72 * showFirstRunFlowCloudPref - true if the cloud pref option should be
73 * shown.
74 */
75 function setFirstRunFlowData(data) {
76 container.firstRunFlowCloudPrefLearnMoreUrl =
77 data['firstRunFlowCloudPrefLearnMoreUrl'];
78 container.firstRunFlowLearnMoreUrl =
79 data['firstRunFlowLearnMoreUrl'];
80 container.showFirstRunFlowCloudPref =
81 data['showFirstRunFlowCloudPref'];
82 // Some users acknowledged the first run flow before the cloud prefs
83 // setting was implemented. These users will see the first run flow
84 // again.
85 container.showFirstRunFlow = !data['wasFirstRunFlowAcknowledged'] ||
86 container.showFirstRunFlowCloudPref;
87 }
88
89 /**
90 * Populates the WebUI with data obtained from Media Router.
91 *
92 * @param {{deviceMissingUrl: string,
93 * sinksAndIdentity: {
94 * sinks: !Array<!media_router.Sink>,
95 * showEmail: boolean,
96 * userEmail: string,
97 * showDomain: boolean
98 * },
99 * routes: !Array<!media_router.Route>,
100 * castModes: !Array<!media_router.CastMode>,
101 * useTabMirroring: boolean}} data
102 * Parameters in data:
103 * deviceMissingUrl - url to be opened on "Device missing?" clicked.
104 * sinksAndIdentity - list of sinks to be displayed and user identity.
105 * routes - list of routes that are associated with the sinks.
106 * castModes - list of available cast modes.
107 * useTabMirroring - whether the cast mode should be set to TAB_MIRROR.
108 */
109 function setInitialData(data) {
110 container.deviceMissingUrl = data['deviceMissingUrl'];
111 container.castModeList = data['castModes'];
112 this.setSinkListAndIdentity(data['sinksAndIdentity']);
113 container.routeList = data['routes'];
114 container.maybeShowRouteDetailsOnOpen();
115 if (data['useTabMirroring'])
116 container.selectCastMode(media_router.CastModeType.TAB_MIRROR);
117 media_router.browserApi.onInitialDataReceived();
118 }
119
120 /**
121 * Sets current issue to |issue|, or clears the current issue if |issue| is
122 * null.
123 *
124 * @param {?media_router.Issue} issue
125 */
126 function setIssue(issue) {
127 container.issue = issue;
128 }
129
130 /**
131 * Sets the list of currently active routes.
132 *
133 * @param {!Array<!media_router.Route>} routeList
134 */
135 function setRouteList(routeList) {
136 container.routeList = routeList;
137 }
138
139 /**
140 * Sets the list of discovered sinks along with properties of whether to hide
141 * identity of the user email and domain.
142 *
143 * @param {{sinks: !Array<!media_router.Sink>,
144 * showEmail: boolean,
145 * userEmail: string,
146 * showDomain: boolean}} data
147 * Parameters in data:
148 * sinks - list of sinks to be displayed.
149 * showEmail - true if the user email should be shown.
150 * userEmail - email of the user if the user is signed in.
151 * showDomain - true if the user domain should be shown.
152 */
153 function setSinkListAndIdentity(data) {
154 container.showDomain = data['showDomain'];
155 container.allSinks = data['sinks'];
156 header.userEmail = data['userEmail'];
157 header.showEmail = data['showEmail'];
158 }
159
160 /**
161 * Updates the max height of the dialog
162 *
163 * @param {number} height
164 */
165 function updateMaxHeight(height) {
166 container.updateMaxDialogHeight(height);
167 }
168
169 return {
170 onCreateRouteResponseReceived: onCreateRouteResponseReceived,
171 receiveSearchResult: receiveSearchResult,
172 setCastModeList: setCastModeList,
173 setElements: setElements,
174 setFirstRunFlowData: setFirstRunFlowData,
175 setInitialData: setInitialData,
176 setIssue: setIssue,
177 setRouteList: setRouteList,
178 setSinkListAndIdentity: setSinkListAndIdentity,
179 updateMaxHeight: updateMaxHeight,
180 };
181 });
182
183 // API invoked by this UI to communicate with the browser WebUI message handler. 5 // API invoked by this UI to communicate with the browser WebUI message handler.
184 cr.define('media_router.browserApi', function() { 6 cr.define('media_router.browserApi', function() {
185 'use strict'; 7 'use strict';
186 8
187 /** 9 /**
188 * Indicates that the user has acknowledged the first run flow. 10 * Indicates that the user has acknowledged the first run flow.
189 * 11 *
190 * @param {boolean} optedIntoCloudServices Whether or not the user opted into 12 * @param {boolean} optedIntoCloudServices Whether or not the user opted into
191 * cloud services. 13 * cloud services.
192 */ 14 */
193 function acknowledgeFirstRunFlow(optedIntoCloudServices) { 15 function acknowledgeFirstRunFlow(optedIntoCloudServices) {
194 chrome.send('acknowledgeFirstRunFlow', [optedIntoCloudServices]); 16 chrome.send('acknowledgeFirstRunFlow', [optedIntoCloudServices]);
195 } 17 }
196 18
197 /** 19 /**
198 * Acts on the given issue. 20 * Acts on the given issue.
199 * 21 *
200 * @param {number} issueId 22 * @param {number} issueId
201 * @param {number} actionType Type of action that the user clicked. 23 * @param {number} actionType Type of action that the user clicked.
202 * @param {?number} helpPageId The numeric help center ID. 24 * @param {?number} helpPageId The numeric help center ID.
203 */ 25 */
204 function actOnIssue(issueId, actionType, helpPageId) { 26 function actOnIssue(issueId, actionType, helpPageId) {
205 chrome.send('actOnIssue', [{issueId: issueId, actionType: actionType, 27 chrome.send(
206 helpPageId: helpPageId}]); 28 'actOnIssue',
29 [{issueId: issueId, actionType: actionType, helpPageId: helpPageId}]);
207 } 30 }
208 31
209 /** 32 /**
210 * Modifies |route| by changing its source to the one identified by 33 * Modifies |route| by changing its source to the one identified by
211 * |selectedCastMode|. 34 * |selectedCastMode|.
212 * 35 *
213 * @param {!media_router.Route} route The route being modified. 36 * @param {!media_router.Route} route The route being modified.
214 * @param {number} selectedCastMode The value of the cast mode the user 37 * @param {number} selectedCastMode The value of the cast mode the user
215 * selected. 38 * selected.
216 */ 39 */
217 function changeRouteSource(route, selectedCastMode) { 40 function changeRouteSource(route, selectedCastMode) {
218 chrome.send('requestRoute', 41 chrome.send(
219 [{sinkId: route.sinkId, selectedCastMode: selectedCastMode}]); 42 'requestRoute',
43 [{sinkId: route.sinkId, selectedCastMode: selectedCastMode}]);
220 } 44 }
221 45
222 /** 46 /**
223 * Closes the dialog. 47 * Closes the dialog.
224 * 48 *
225 * @param {boolean} pressEscToClose Whether the user pressed ESC to close the 49 * @param {boolean} pressEscToClose Whether the user pressed ESC to close the
226 * dialog. 50 * dialog.
227 */ 51 */
228 function closeDialog(pressEscToClose) { 52 function closeDialog(pressEscToClose) {
229 chrome.send('closeDialog', [pressEscToClose]); 53 chrome.send('closeDialog', [pressEscToClose]);
(...skipping 18 matching lines...) Expand all
248 } 72 }
249 73
250 /** 74 /**
251 * Indicates that the initial data has been received. 75 * Indicates that the initial data has been received.
252 */ 76 */
253 function onInitialDataReceived() { 77 function onInitialDataReceived() {
254 chrome.send('onInitialDataReceived'); 78 chrome.send('onInitialDataReceived');
255 } 79 }
256 80
257 /** 81 /**
82 * Reports that the route details view was closed.
83 */
84 function onMediaControllerClosed() {
85 chrome.send('onMediaControllerClosed');
86 }
87
88 /**
89 * Reports that the route details view was opened for |routeId|.
90 *
91 * @param {string} routeId
92 */
93 function onMediaControllerAvailable(routeId) {
94 chrome.send('onMediaControllerAvailable', [{routeId: routeId}]);
95 }
96
97 /**
98 * Sends a command to pause the route shown in the route details view.
99 */
100 function pauseCurrentMedia() {
101 chrome.send('pauseCurrentMedia');
102 }
103
104 /**
105 * Sends a command to play the route shown in the route details view.
106 */
107 function playCurrentMedia() {
108 chrome.send('playCurrentMedia');
109 }
110
111 /**
258 * Reports when the user clicks outside the dialog. 112 * Reports when the user clicks outside the dialog.
259 */ 113 */
260 function reportBlur() { 114 function reportBlur() {
261 chrome.send('reportBlur'); 115 chrome.send('reportBlur');
262 } 116 }
263 117
264 /** 118 /**
265 * Reports the index of the selected sink. 119 * Reports the index of the selected sink.
266 * 120 *
267 * @param {number} sinkIndex 121 * @param {number} sinkIndex
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 } 223 }
370 224
371 /** 225 /**
372 * Requests that a media route be started with the given sink. 226 * Requests that a media route be started with the given sink.
373 * 227 *
374 * @param {string} sinkId The sink ID. 228 * @param {string} sinkId The sink ID.
375 * @param {number} selectedCastMode The value of the cast mode the user 229 * @param {number} selectedCastMode The value of the cast mode the user
376 * selected. 230 * selected.
377 */ 231 */
378 function requestRoute(sinkId, selectedCastMode) { 232 function requestRoute(sinkId, selectedCastMode) {
379 chrome.send('requestRoute', 233 chrome.send(
380 [{sinkId: sinkId, selectedCastMode: selectedCastMode}]); 234 'requestRoute', [{sinkId: sinkId, selectedCastMode: selectedCastMode}]);
381 } 235 }
382 236
383 /** 237 /**
384 * Requests that the media router search all providers for a sink matching 238 * Requests that the media router search all providers for a sink matching
385 * |searchCriteria| that can be used with the media source associated with the 239 * |searchCriteria| that can be used with the media source associated with the
386 * cast mode |selectedCastMode|. If such a sink is found, a route is also 240 * cast mode |selectedCastMode|. If such a sink is found, a route is also
387 * created between the sink and the media source. 241 * created between the sink and the media source.
388 * 242 *
389 * @param {string} sinkId Sink ID of the pseudo sink generating the request. 243 * @param {string} sinkId Sink ID of the pseudo sink generating the request.
390 * @param {string} searchCriteria Search criteria for the route providers. 244 * @param {string} searchCriteria Search criteria for the route providers.
391 * @param {string} domain User's current hosted domain. 245 * @param {string} domain User's current hosted domain.
392 * @param {number} selectedCastMode The value of the cast mode to be used with 246 * @param {number} selectedCastMode The value of the cast mode to be used with
393 * the sink. 247 * the sink.
394 */ 248 */
395 function searchSinksAndCreateRoute( 249 function searchSinksAndCreateRoute(
396 sinkId, searchCriteria, domain, selectedCastMode) { 250 sinkId, searchCriteria, domain, selectedCastMode) {
397 chrome.send('searchSinksAndCreateRoute', 251 chrome.send('searchSinksAndCreateRoute', [{
398 [{sinkId: sinkId, 252 sinkId: sinkId,
399 searchCriteria: searchCriteria, 253 searchCriteria: searchCriteria,
400 domain: domain, 254 domain: domain,
401 selectedCastMode: selectedCastMode}]); 255 selectedCastMode: selectedCastMode
256 }]);
257 }
258
259 /**
260 * Sends a command to seek the route shown in the route details view.
261 *
262 * @param {number} time The new current time in seconds.
263 */
264 function seekCurrentMedia(time) {
265 chrome.send('seekCurrentMedia', [{time: time}]);
266 }
267
268 /**
269 * Sends a command to mute or unmute the route shown in the route details
270 * view.
271 *
272 * @param {boolean} mute Mute the route if true, unmute it if false.
273 */
274 function setCurrentMediaMute(mute) {
275 chrome.send('setCurrentMediaMute', [{mute: mute}]);
276 }
277
278 /**
279 * Sends a command to change the volume of the route shown in the route
280 * details view.
281 *
282 * @param {number} volume The volume between 0 and 1.
283 */
284 function setCurrentMediaVolume(volume) {
285 chrome.send('setCurrentMediaVolume', [{volume: volume}]);
402 } 286 }
403 287
404 return { 288 return {
405 acknowledgeFirstRunFlow: acknowledgeFirstRunFlow, 289 acknowledgeFirstRunFlow: acknowledgeFirstRunFlow,
406 actOnIssue: actOnIssue, 290 actOnIssue: actOnIssue,
407 changeRouteSource: changeRouteSource, 291 changeRouteSource: changeRouteSource,
408 closeDialog: closeDialog, 292 closeDialog: closeDialog,
409 closeRoute: closeRoute, 293 closeRoute: closeRoute,
410 joinRoute: joinRoute, 294 joinRoute: joinRoute,
411 onInitialDataReceived: onInitialDataReceived, 295 onInitialDataReceived: onInitialDataReceived,
296 onMediaControllerClosed: onMediaControllerClosed,
297 onMediaControllerAvailable: onMediaControllerAvailable,
298 pauseCurrentMedia: pauseCurrentMedia,
299 playCurrentMedia: playCurrentMedia,
412 reportBlur: reportBlur, 300 reportBlur: reportBlur,
413 reportClickedSinkIndex: reportClickedSinkIndex, 301 reportClickedSinkIndex: reportClickedSinkIndex,
414 reportFilter: reportFilter, 302 reportFilter: reportFilter,
415 reportInitialAction: reportInitialAction, 303 reportInitialAction: reportInitialAction,
416 reportInitialState: reportInitialState, 304 reportInitialState: reportInitialState,
417 reportNavigateToView: reportNavigateToView, 305 reportNavigateToView: reportNavigateToView,
418 reportRouteCreation: reportRouteCreation, 306 reportRouteCreation: reportRouteCreation,
419 reportRouteCreationOutcome: reportRouteCreationOutcome, 307 reportRouteCreationOutcome: reportRouteCreationOutcome,
420 reportSelectedCastMode: reportSelectedCastMode, 308 reportSelectedCastMode: reportSelectedCastMode,
421 reportSinkCount: reportSinkCount, 309 reportSinkCount: reportSinkCount,
422 reportTimeToClickSink: reportTimeToClickSink, 310 reportTimeToClickSink: reportTimeToClickSink,
423 reportTimeToInitialActionClose: reportTimeToInitialActionClose, 311 reportTimeToInitialActionClose: reportTimeToInitialActionClose,
424 requestInitialData: requestInitialData, 312 requestInitialData: requestInitialData,
425 requestRoute: requestRoute, 313 requestRoute: requestRoute,
426 searchSinksAndCreateRoute: searchSinksAndCreateRoute, 314 searchSinksAndCreateRoute: searchSinksAndCreateRoute,
315 seekCurrentMedia: seekCurrentMedia,
316 setCurrentMediaMute: setCurrentMediaMute,
317 setCurrentMediaVolume: setCurrentMediaVolume,
427 }; 318 };
428 }); 319 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/media_router/media_router.js ('k') | chrome/browser/resources/media_router/media_router_common.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698