Index: chrome/browser/resources/media_router/media_router_ui_interface.js |
diff --git a/chrome/browser/resources/media_router/media_router_ui_interface.js b/chrome/browser/resources/media_router/media_router_ui_interface.js |
index a8ec54461a248a242f5475c160923d50dc85ccfd..bbf70dbaf11ea1d3fd450b4124e9d1818a17eafa 100644 |
--- a/chrome/browser/resources/media_router/media_router_ui_interface.js |
+++ b/chrome/browser/resources/media_router/media_router_ui_interface.js |
@@ -13,6 +13,9 @@ cr.define('media_router.ui', function() { |
// The media-router-header element. |
var header = null; |
+ // The route-controls element. Is null if the route details view isn't open. |
+ var routeControls = null; |
+ |
/** |
* Handles response of previous create route attempt. |
* |
@@ -26,6 +29,14 @@ cr.define('media_router.ui', function() { |
container.onCreateRouteResponseReceived(sinkId, route, isForDisplay); |
} |
+ /** |
+ * Called when the route controller for the route that is currently selected |
+ * is invalidated. |
+ */ |
+ function onRouteControllerInvalidated() { |
+ container.onRouteControllerInvalidated(); |
+ } |
+ |
/** |
* Handles the search response by forwarding |sinkId| to the container. |
* |
@@ -102,6 +113,8 @@ cr.define('media_router.ui', function() { |
* Parameters in data: |
* deviceMissingUrl - url to be opened on "Device missing?" clicked. |
* sinksAndIdentity - list of sinks to be displayed and user identity. |
+ * useNewRouteControls - whether the new WebUI route controls should be |
+ * used. |
* routes - list of routes that are associated with the sinks. |
* castModes - list of available cast modes. |
* useTabMirroring - whether the cast mode should be set to TAB_MIRROR. |
@@ -110,6 +123,7 @@ cr.define('media_router.ui', function() { |
container.deviceMissingUrl = data['deviceMissingUrl']; |
container.castModeList = data['castModes']; |
this.setSinkListAndIdentity(data['sinksAndIdentity']); |
+ container.useWebUiRouteControls = !!data['useNewRouteControls']; |
container.routeList = data['routes']; |
container.maybeShowRouteDetailsOnOpen(); |
if (data['useTabMirroring']) |
@@ -127,6 +141,16 @@ cr.define('media_router.ui', function() { |
container.issue = issue; |
} |
+ /** |
+ * Sets |routeControls|. The argument may be null if the route details view is |
+ * getting closed. |
+ * |
+ * @param {?MediaRouterRouteControlsElement} mediaRouterRouteControls |
+ */ |
+ function setRouteControls(mediaRouterRouteControls) { |
+ routeControls = mediaRouterRouteControls; |
+ } |
+ |
/** |
* Sets the list of currently active routes. |
* |
@@ -166,17 +190,30 @@ cr.define('media_router.ui', function() { |
container.updateMaxDialogHeight(height); |
} |
+ /** |
+ * Updates the route status shown in the route controls. |
+ * |
+ * @param {!media_router.RouteStatus} status |
+ */ |
+ function updateRouteStatus(status) { |
+ if (routeControls) |
+ routeControls.routeStatus = status; |
+ } |
+ |
return { |
onCreateRouteResponseReceived: onCreateRouteResponseReceived, |
+ onRouteControllerInvalidated: onRouteControllerInvalidated, |
receiveSearchResult: receiveSearchResult, |
setCastModeList: setCastModeList, |
setElements: setElements, |
setFirstRunFlowData: setFirstRunFlowData, |
setInitialData: setInitialData, |
setIssue: setIssue, |
+ setRouteControls: setRouteControls, |
setRouteList: setRouteList, |
setSinkListAndIdentity: setSinkListAndIdentity, |
updateMaxHeight: updateMaxHeight, |
+ updateRouteStatus: updateRouteStatus, |
}; |
}); |
@@ -254,6 +291,36 @@ cr.define('media_router.browserApi', function() { |
chrome.send('onInitialDataReceived'); |
} |
+ /** |
+ * Reports that the route details view was closed. |
+ */ |
+ function onMediaControllerClosed() { |
+ chrome.send('onMediaControllerClosed'); |
+ } |
+ |
+ /** |
+ * Reports that the route details view was opened for |routeId|. |
+ * |
+ * @param {string} routeId |
+ */ |
+ function onMediaControllerAvailable(routeId) { |
+ chrome.send('onMediaControllerAvailable', [{routeId: routeId}]); |
+ } |
+ |
+ /** |
+ * Sends a command to pause the route shown in the route details view. |
+ */ |
+ function pauseCurrentMedia() { |
+ chrome.send('pauseCurrentMedia'); |
+ } |
+ |
+ /** |
+ * Sends a command to play the route shown in the route details view. |
+ */ |
+ function playCurrentMedia() { |
+ chrome.send('playCurrentMedia'); |
+ } |
+ |
/** |
* Reports when the user clicks outside the dialog. |
*/ |
@@ -401,6 +468,35 @@ cr.define('media_router.browserApi', function() { |
selectedCastMode: selectedCastMode}]); |
} |
+ /** |
+ * Sends a command to seek the route shown in the route details view. |
+ * |
+ * @param {number} time The new current time in seconds. |
+ */ |
+ function seekCurrentMedia(time) { |
+ chrome.send('seekCurrentMedia', [{time: time}]); |
+ } |
+ |
+ /** |
+ * Sends a command to mute or unmute the route shown in the route details |
+ * view. |
+ * |
+ * @param {boolean} mute Mute the route if true, unmute it if false. |
+ */ |
+ function setCurrentMediaMute(mute) { |
+ chrome.send('setCurrentMediaMute', [{mute: mute}]); |
+ } |
+ |
+ /** |
+ * Sends a command to change the volume of the route shown in the route |
+ * details view. |
+ * |
+ * @param {number} volume The volume between 0 and 1. |
+ */ |
+ function setCurrentMediaVolume(volume) { |
+ chrome.send('setCurrentMediaVolume', [{volume: volume}]); |
+ } |
+ |
return { |
acknowledgeFirstRunFlow: acknowledgeFirstRunFlow, |
actOnIssue: actOnIssue, |
@@ -409,6 +505,10 @@ cr.define('media_router.browserApi', function() { |
closeRoute: closeRoute, |
joinRoute: joinRoute, |
onInitialDataReceived: onInitialDataReceived, |
+ onMediaControllerClosed: onMediaControllerClosed, |
+ onMediaControllerAvailable: onMediaControllerAvailable, |
+ pauseCurrentMedia: pauseCurrentMedia, |
+ playCurrentMedia: playCurrentMedia, |
reportBlur: reportBlur, |
reportClickedSinkIndex: reportClickedSinkIndex, |
reportFilter: reportFilter, |
@@ -424,5 +524,8 @@ cr.define('media_router.browserApi', function() { |
requestInitialData: requestInitialData, |
requestRoute: requestRoute, |
searchSinksAndCreateRoute: searchSinksAndCreateRoute, |
+ seekCurrentMedia: seekCurrentMedia, |
+ setCurrentMediaMute: setCurrentMediaMute, |
+ setCurrentMediaVolume: setCurrentMediaVolume, |
}; |
}); |