Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 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 | 5 // API invoked by the browser MediaRouterWebUIMessageHandler to communicate |
| 6 // with this UI. | 6 // with this UI. |
| 7 cr.define('media_router.ui', function() { | 7 cr.define('media_router.ui', function() { |
| 8 'use strict'; | 8 'use strict'; |
| 9 | 9 |
| 10 // The media-router-container element. | 10 // The media-router-container element. |
| 11 var container = null; | 11 var container = null; |
| 12 | 12 |
| 13 // The media-router-header element. | 13 // The media-router-header element. |
| 14 var header = null; | 14 var header = null; |
| 15 | 15 |
| 16 // The route-controls element. Is null if the route details view isn't open. | |
| 17 var routeControls = null; | |
| 18 | |
| 16 /** | 19 /** |
| 17 * Handles response of previous create route attempt. | 20 * Handles response of previous create route attempt. |
| 18 * | 21 * |
| 19 * @param {string} sinkId The ID of the sink to which the Media Route was | 22 * @param {string} sinkId The ID of the sink to which the Media Route was |
| 20 * creating a route. | 23 * creating a route. |
| 21 * @param {?media_router.Route} route The newly created route that | 24 * @param {?media_router.Route} route The newly created route that |
| 22 * corresponds to the sink if route creation succeeded; null otherwise. | 25 * corresponds to the sink if route creation succeeded; null otherwise. |
| 23 * @param {boolean} isForDisplay Whether or not |route| is for display. | 26 * @param {boolean} isForDisplay Whether or not |route| is for display. |
| 24 */ | 27 */ |
| 25 function onCreateRouteResponseReceived(sinkId, route, isForDisplay) { | 28 function onCreateRouteResponseReceived(sinkId, route, isForDisplay) { |
| 26 container.onCreateRouteResponseReceived(sinkId, route, isForDisplay); | 29 container.onCreateRouteResponseReceived(sinkId, route, isForDisplay); |
| 27 } | 30 } |
| 28 | 31 |
| 29 /** | 32 /** |
| 33 * Called when the route controller for the route that is currently selected | |
| 34 * is invalidated. | |
| 35 */ | |
| 36 function onRouteControllerInvalidated() { | |
| 37 container.onRouteControllerInvalidated(); | |
| 38 } | |
| 39 | |
| 40 /** | |
| 30 * Handles the search response by forwarding |sinkId| to the container. | 41 * Handles the search response by forwarding |sinkId| to the container. |
| 31 * | 42 * |
| 32 * @param {string} sinkId The ID of the sink found by search. | 43 * @param {string} sinkId The ID of the sink found by search. |
| 33 */ | 44 */ |
| 34 function receiveSearchResult(sinkId) { | 45 function receiveSearchResult(sinkId) { |
| 35 container.onReceiveSearchResult(sinkId); | 46 container.onReceiveSearchResult(sinkId); |
| 36 } | 47 } |
| 37 | 48 |
| 38 /** | 49 /** |
| 39 * Sets the cast mode list. | 50 * Sets the cast mode list. |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 95 * showEmail: boolean, | 106 * showEmail: boolean, |
| 96 * userEmail: string, | 107 * userEmail: string, |
| 97 * showDomain: boolean | 108 * showDomain: boolean |
| 98 * }, | 109 * }, |
| 99 * routes: !Array<!media_router.Route>, | 110 * routes: !Array<!media_router.Route>, |
| 100 * castModes: !Array<!media_router.CastMode>, | 111 * castModes: !Array<!media_router.CastMode>, |
| 101 * useTabMirroring: boolean}} data | 112 * useTabMirroring: boolean}} data |
| 102 * Parameters in data: | 113 * Parameters in data: |
| 103 * deviceMissingUrl - url to be opened on "Device missing?" clicked. | 114 * deviceMissingUrl - url to be opened on "Device missing?" clicked. |
| 104 * sinksAndIdentity - list of sinks to be displayed and user identity. | 115 * sinksAndIdentity - list of sinks to be displayed and user identity. |
| 116 * useNewRouteControls - whether the new WebUI route controls should be | |
| 117 * used. | |
| 105 * routes - list of routes that are associated with the sinks. | 118 * routes - list of routes that are associated with the sinks. |
| 106 * castModes - list of available cast modes. | 119 * castModes - list of available cast modes. |
| 107 * useTabMirroring - whether the cast mode should be set to TAB_MIRROR. | 120 * useTabMirroring - whether the cast mode should be set to TAB_MIRROR. |
| 108 */ | 121 */ |
| 109 function setInitialData(data) { | 122 function setInitialData(data) { |
| 110 container.deviceMissingUrl = data['deviceMissingUrl']; | 123 container.deviceMissingUrl = data['deviceMissingUrl']; |
| 111 container.castModeList = data['castModes']; | 124 container.castModeList = data['castModes']; |
| 112 this.setSinkListAndIdentity(data['sinksAndIdentity']); | 125 this.setSinkListAndIdentity(data['sinksAndIdentity']); |
| 126 container.useWebUiRouteControls = !!data['useNewRouteControls']; | |
| 113 container.routeList = data['routes']; | 127 container.routeList = data['routes']; |
| 114 container.maybeShowRouteDetailsOnOpen(); | 128 container.maybeShowRouteDetailsOnOpen(); |
| 115 if (data['useTabMirroring']) | 129 if (data['useTabMirroring']) |
| 116 container.selectCastMode(media_router.CastModeType.TAB_MIRROR); | 130 container.selectCastMode(media_router.CastModeType.TAB_MIRROR); |
| 117 media_router.browserApi.onInitialDataReceived(); | 131 media_router.browserApi.onInitialDataReceived(); |
| 118 } | 132 } |
| 119 | 133 |
| 120 /** | 134 /** |
| 121 * Sets current issue to |issue|, or clears the current issue if |issue| is | 135 * Sets current issue to |issue|, or clears the current issue if |issue| is |
| 122 * null. | 136 * null. |
| 123 * | 137 * |
| 124 * @param {?media_router.Issue} issue | 138 * @param {?media_router.Issue} issue |
| 125 */ | 139 */ |
| 126 function setIssue(issue) { | 140 function setIssue(issue) { |
| 127 container.issue = issue; | 141 container.issue = issue; |
| 128 } | 142 } |
| 129 | 143 |
| 130 /** | 144 /** |
| 145 * Sets |routeControls|. The argument may be null if the route details view is | |
| 146 * getting closed. | |
|
apacible
2017/05/17 21:52:17
Does this refer to the process of getting closed (
takumif
2017/05/18 18:01:56
More like the latter. When we navigate away from r
| |
| 147 * | |
| 148 * @param {?MediaRouterRouteControlsElement} mediaRouterRouteControls | |
| 149 */ | |
| 150 function setRouteControls(mediaRouterRouteControls) { | |
| 151 routeControls = mediaRouterRouteControls; | |
| 152 } | |
| 153 | |
| 154 /** | |
| 131 * Sets the list of currently active routes. | 155 * Sets the list of currently active routes. |
| 132 * | 156 * |
| 133 * @param {!Array<!media_router.Route>} routeList | 157 * @param {!Array<!media_router.Route>} routeList |
| 134 */ | 158 */ |
| 135 function setRouteList(routeList) { | 159 function setRouteList(routeList) { |
| 136 container.routeList = routeList; | 160 container.routeList = routeList; |
| 137 } | 161 } |
| 138 | 162 |
| 139 /** | 163 /** |
| 140 * Sets the list of discovered sinks along with properties of whether to hide | 164 * Sets the list of discovered sinks along with properties of whether to hide |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 159 | 183 |
| 160 /** | 184 /** |
| 161 * Updates the max height of the dialog | 185 * Updates the max height of the dialog |
| 162 * | 186 * |
| 163 * @param {number} height | 187 * @param {number} height |
| 164 */ | 188 */ |
| 165 function updateMaxHeight(height) { | 189 function updateMaxHeight(height) { |
| 166 container.updateMaxDialogHeight(height); | 190 container.updateMaxDialogHeight(height); |
| 167 } | 191 } |
| 168 | 192 |
| 193 /** | |
| 194 * Updates the route status shown in the route controls. | |
| 195 * | |
| 196 * @param {!media_router.RouteStatus} status | |
| 197 */ | |
| 198 function updateRouteStatus(status) { | |
| 199 if (routeControls) | |
| 200 routeControls.routeStatus = status; | |
| 201 } | |
| 202 | |
| 169 return { | 203 return { |
| 170 onCreateRouteResponseReceived: onCreateRouteResponseReceived, | 204 onCreateRouteResponseReceived: onCreateRouteResponseReceived, |
| 205 onRouteControllerInvalidated: onRouteControllerInvalidated, | |
| 171 receiveSearchResult: receiveSearchResult, | 206 receiveSearchResult: receiveSearchResult, |
| 172 setCastModeList: setCastModeList, | 207 setCastModeList: setCastModeList, |
| 173 setElements: setElements, | 208 setElements: setElements, |
| 174 setFirstRunFlowData: setFirstRunFlowData, | 209 setFirstRunFlowData: setFirstRunFlowData, |
| 175 setInitialData: setInitialData, | 210 setInitialData: setInitialData, |
| 176 setIssue: setIssue, | 211 setIssue: setIssue, |
| 212 setRouteControls: setRouteControls, | |
| 177 setRouteList: setRouteList, | 213 setRouteList: setRouteList, |
| 178 setSinkListAndIdentity: setSinkListAndIdentity, | 214 setSinkListAndIdentity: setSinkListAndIdentity, |
| 179 updateMaxHeight: updateMaxHeight, | 215 updateMaxHeight: updateMaxHeight, |
| 216 updateRouteStatus: updateRouteStatus, | |
| 180 }; | 217 }; |
| 181 }); | 218 }); |
| 182 | 219 |
| 183 // API invoked by this UI to communicate with the browser WebUI message handler. | 220 // API invoked by this UI to communicate with the browser WebUI message handler. |
| 184 cr.define('media_router.browserApi', function() { | 221 cr.define('media_router.browserApi', function() { |
| 185 'use strict'; | 222 'use strict'; |
| 186 | 223 |
| 187 /** | 224 /** |
| 188 * Indicates that the user has acknowledged the first run flow. | 225 * Indicates that the user has acknowledged the first run flow. |
| 189 * | 226 * |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 248 } | 285 } |
| 249 | 286 |
| 250 /** | 287 /** |
| 251 * Indicates that the initial data has been received. | 288 * Indicates that the initial data has been received. |
| 252 */ | 289 */ |
| 253 function onInitialDataReceived() { | 290 function onInitialDataReceived() { |
| 254 chrome.send('onInitialDataReceived'); | 291 chrome.send('onInitialDataReceived'); |
| 255 } | 292 } |
| 256 | 293 |
| 257 /** | 294 /** |
| 295 * Reports that the route details view was closed. | |
| 296 */ | |
| 297 function onMediaControllerClosed() { | |
| 298 chrome.send('onMediaControllerClosed'); | |
| 299 } | |
| 300 | |
| 301 /** | |
| 302 * Reports that the route details view was opened for |routeId|. | |
| 303 * | |
| 304 * @param {string} routeId | |
| 305 */ | |
| 306 function onMediaControllerAvailable(routeId) { | |
| 307 chrome.send('onMediaControllerAvailable', [{routeId: routeId}]); | |
| 308 } | |
| 309 | |
| 310 /** | |
| 311 * Sends a command to pause the route shown in the route details view. | |
| 312 */ | |
| 313 function pauseCurrentMedia() { | |
| 314 chrome.send('pauseCurrentMedia'); | |
| 315 } | |
| 316 | |
| 317 /** | |
| 318 * Sends a command to play the route shown in the route details view. | |
| 319 */ | |
| 320 function playCurrentMedia() { | |
| 321 chrome.send('playCurrentMedia'); | |
| 322 } | |
| 323 | |
| 324 /** | |
| 258 * Reports when the user clicks outside the dialog. | 325 * Reports when the user clicks outside the dialog. |
| 259 */ | 326 */ |
| 260 function reportBlur() { | 327 function reportBlur() { |
| 261 chrome.send('reportBlur'); | 328 chrome.send('reportBlur'); |
| 262 } | 329 } |
| 263 | 330 |
| 264 /** | 331 /** |
| 265 * Reports the index of the selected sink. | 332 * Reports the index of the selected sink. |
| 266 * | 333 * |
| 267 * @param {number} sinkIndex | 334 * @param {number} sinkIndex |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 394 */ | 461 */ |
| 395 function searchSinksAndCreateRoute( | 462 function searchSinksAndCreateRoute( |
| 396 sinkId, searchCriteria, domain, selectedCastMode) { | 463 sinkId, searchCriteria, domain, selectedCastMode) { |
| 397 chrome.send('searchSinksAndCreateRoute', | 464 chrome.send('searchSinksAndCreateRoute', |
| 398 [{sinkId: sinkId, | 465 [{sinkId: sinkId, |
| 399 searchCriteria: searchCriteria, | 466 searchCriteria: searchCriteria, |
| 400 domain: domain, | 467 domain: domain, |
| 401 selectedCastMode: selectedCastMode}]); | 468 selectedCastMode: selectedCastMode}]); |
| 402 } | 469 } |
| 403 | 470 |
| 471 /** | |
| 472 * Sends a command to seek the route shown in the route details view. | |
| 473 * | |
| 474 * @param {number} time The new current time in seconds. | |
| 475 */ | |
| 476 function seekCurrentMedia(time) { | |
| 477 chrome.send('seekCurrentMedia', [{time: time}]); | |
| 478 } | |
| 479 | |
| 480 /** | |
| 481 * Sends a command to mute or unmute the route shown in the route details | |
| 482 * view. | |
| 483 * | |
| 484 * @param {boolean} mute Mute the route if true, unmute it if false. | |
| 485 */ | |
| 486 function setCurrentMediaMute(mute) { | |
| 487 chrome.send('setCurrentMediaMute', [{mute: mute}]); | |
| 488 } | |
| 489 | |
| 490 /** | |
| 491 * Sends a command to change the volume of the route shown in the route | |
| 492 * details view. | |
| 493 * | |
| 494 * @param {number} volume The volume between 0 and 1. | |
|
apacible
2017/05/17 21:52:17
Are there minimal increments between volume values
apacible
2017/05/17 21:52:17
Does the volume persist across route instances?
takumif
2017/05/18 18:01:56
Not that I'm aware of. The slider is set to use 0.
takumif
2017/05/18 18:01:56
Yes, volume/mute persists across routes on the sam
| |
| 495 */ | |
| 496 function setCurrentMediaVolume(volume) { | |
| 497 chrome.send('setCurrentMediaVolume', [{volume: volume}]); | |
| 498 } | |
| 499 | |
| 404 return { | 500 return { |
| 405 acknowledgeFirstRunFlow: acknowledgeFirstRunFlow, | 501 acknowledgeFirstRunFlow: acknowledgeFirstRunFlow, |
| 406 actOnIssue: actOnIssue, | 502 actOnIssue: actOnIssue, |
| 407 changeRouteSource: changeRouteSource, | 503 changeRouteSource: changeRouteSource, |
| 408 closeDialog: closeDialog, | 504 closeDialog: closeDialog, |
| 409 closeRoute: closeRoute, | 505 closeRoute: closeRoute, |
| 410 joinRoute: joinRoute, | 506 joinRoute: joinRoute, |
| 411 onInitialDataReceived: onInitialDataReceived, | 507 onInitialDataReceived: onInitialDataReceived, |
| 508 onMediaControllerClosed: onMediaControllerClosed, | |
| 509 onMediaControllerAvailable: onMediaControllerAvailable, | |
| 510 pauseCurrentMedia: pauseCurrentMedia, | |
| 511 playCurrentMedia: playCurrentMedia, | |
| 412 reportBlur: reportBlur, | 512 reportBlur: reportBlur, |
| 413 reportClickedSinkIndex: reportClickedSinkIndex, | 513 reportClickedSinkIndex: reportClickedSinkIndex, |
| 414 reportFilter: reportFilter, | 514 reportFilter: reportFilter, |
| 415 reportInitialAction: reportInitialAction, | 515 reportInitialAction: reportInitialAction, |
| 416 reportInitialState: reportInitialState, | 516 reportInitialState: reportInitialState, |
| 417 reportNavigateToView: reportNavigateToView, | 517 reportNavigateToView: reportNavigateToView, |
| 418 reportRouteCreation: reportRouteCreation, | 518 reportRouteCreation: reportRouteCreation, |
| 419 reportRouteCreationOutcome: reportRouteCreationOutcome, | 519 reportRouteCreationOutcome: reportRouteCreationOutcome, |
| 420 reportSelectedCastMode: reportSelectedCastMode, | 520 reportSelectedCastMode: reportSelectedCastMode, |
| 421 reportSinkCount: reportSinkCount, | 521 reportSinkCount: reportSinkCount, |
| 422 reportTimeToClickSink: reportTimeToClickSink, | 522 reportTimeToClickSink: reportTimeToClickSink, |
| 423 reportTimeToInitialActionClose: reportTimeToInitialActionClose, | 523 reportTimeToInitialActionClose: reportTimeToInitialActionClose, |
| 424 requestInitialData: requestInitialData, | 524 requestInitialData: requestInitialData, |
| 425 requestRoute: requestRoute, | 525 requestRoute: requestRoute, |
| 426 searchSinksAndCreateRoute: searchSinksAndCreateRoute, | 526 searchSinksAndCreateRoute: searchSinksAndCreateRoute, |
| 527 seekCurrentMedia: seekCurrentMedia, | |
| 528 setCurrentMediaMute: setCurrentMediaMute, | |
| 529 setCurrentMediaVolume: setCurrentMediaVolume, | |
| 427 }; | 530 }; |
| 428 }); | 531 }); |
| OLD | NEW |