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

Unified Diff: chrome/browser/resources/media_router/media_router_ui_interface.js

Issue 2725503002: [Media Router] Custom Controls 4 - Implement details view WebUI (Closed)
Patch Set: Address Mark's comments Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
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..2ac355cd1d3b44f05f7d241b23f0b6c0dbd7389e 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.
*
@@ -27,6 +30,14 @@ cr.define('media_router.ui', function() {
}
/**
+ * Called when the route controller for the route that is currently selected
+ * is invalidated.
+ */
+ function onRouteControllerInvalidated() {
+ container.onRouteControllerInvalidated();
imcheng 2017/05/05 21:36:41 Do you need to set routeControls to null here?
takumif 2017/05/09 00:14:57 We already do that in RouteControls.reset(), altho
+ }
+
+ /**
* Handles the search response by forwarding |sinkId| to the container.
*
* @param {string} sinkId The ID of the sink found by search.
@@ -105,6 +116,8 @@ cr.define('media_router.ui', function() {
* 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.
+ * useNewRouteControls - whether the new WebUI route controls should be
+ * used.
*/
function setInitialData(data) {
container.deviceMissingUrl = data['deviceMissingUrl'];
@@ -114,6 +127,7 @@ cr.define('media_router.ui', function() {
container.maybeShowRouteDetailsOnOpen();
if (data['useTabMirroring'])
container.selectCastMode(media_router.CastModeType.TAB_MIRROR);
+ container.useWebUiRouteControls = data['useNewRouteControls'];
media_router.browserApi.onInitialDataReceived();
}
@@ -128,6 +142,16 @@ cr.define('media_router.ui', function() {
}
/**
+ * 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.
*
* @param {!Array<!media_router.Route>} routeList
@@ -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,
};
});
@@ -255,6 +292,36 @@ cr.define('media_router.browserApi', function() {
}
/**
+ * 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.
*/
function reportBlur() {
@@ -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,
};
});

Powered by Google App Engine
This is Rietveld 408576698