| Index: chrome/browser/resources/media_router/elements/route_details/route_details.js
|
| diff --git a/chrome/browser/resources/media_router/elements/route_details/route_details.js b/chrome/browser/resources/media_router/elements/route_details/route_details.js
|
| index ae7ebcca5e1d63a66b704f13ce420e12c896879c..da76f91294a601e8d132669e91af44515fa4b230 100644
|
| --- a/chrome/browser/resources/media_router/elements/route_details/route_details.js
|
| +++ b/chrome/browser/resources/media_router/elements/route_details/route_details.js
|
| @@ -24,7 +24,17 @@ Polymer({
|
| changeRouteSourceAvailable_: {
|
| type: Boolean,
|
| computed: 'computeChangeRouteSourceAvailable_(route, sink,' +
|
| - 'isAnySinkCurrentlyLaunching, shownCastModeValue)',
|
| + 'isAnySinkCurrentlyLaunching, shownCastModeValue)',
|
| + },
|
| +
|
| + /**
|
| + * An enum value to represent the controller to show.
|
| + * @private {number}
|
| + */
|
| + controllerType_: {
|
| + type: Number,
|
| + computed: 'computeControllerType_(useWebUiRouteControls,' +
|
| + 'isExtensionViewReady)',
|
| },
|
|
|
| /**
|
| @@ -37,12 +47,21 @@ Polymer({
|
| },
|
|
|
| /**
|
| + * Whether the custom controller extensionview is ready to be shown.
|
| + * @type {boolean}
|
| + */
|
| + isExtensionViewReady: {
|
| + type: Boolean,
|
| + value: false,
|
| + },
|
| +
|
| + /**
|
| * The route to show.
|
| * @type {?media_router.Route|undefined}
|
| */
|
| route: {
|
| type: Object,
|
| - observer: 'maybeLoadCustomController_',
|
| + observer: 'onRouteChange_',
|
| },
|
|
|
| /**
|
| @@ -65,14 +84,13 @@ Polymer({
|
| },
|
|
|
| /**
|
| - * Whether the custom controller should be hidden.
|
| - * A custom controller is shown iff |route| specifies customControllerPath
|
| - * and the view can be loaded.
|
| - * @private {boolean}
|
| + * Whether we should use the WebUI route controls. This value is used for
|
| + * updating |controllerType_|,
|
| + * @type {boolean}
|
| */
|
| - isCustomControllerHidden_: {
|
| + useWebUiRouteControls: {
|
| type: Boolean,
|
| - value: true,
|
| + value: false,
|
| },
|
| },
|
|
|
| @@ -130,6 +148,23 @@ Polymer({
|
| },
|
|
|
| /**
|
| + * @param {boolean} useWebUiRouteControls
|
| + * @param {boolean} isExtensionViewReady
|
| + * @return {number} An enum value to represent the controller to show.
|
| + * @private
|
| + */
|
| + computeControllerType_: function(
|
| + useWebUiRouteControls, isExtensionViewReady) {
|
| + if (useWebUiRouteControls) {
|
| + return media_router.ControllerType.WEBUI;
|
| + }
|
| + if (isExtensionViewReady) {
|
| + return media_router.ControllerType.EXTENSION;
|
| + }
|
| + return media_router.ControllerType.NONE;
|
| + },
|
| +
|
| + /**
|
| * @param {number} castMode User selected cast mode or AUTO.
|
| * @param {?media_router.Sink} sink Sink to which we will cast.
|
| * @return {number} The selected cast mode when |castMode| is selected in the
|
| @@ -155,6 +190,85 @@ Polymer({
|
| },
|
|
|
| /**
|
| + * Updates |activityStatus_| for the default view.
|
| + *
|
| + * @private
|
| + */
|
| + updateActivityStatus_: function() {
|
| + this.activityStatus_ = this.route ?
|
| + loadTimeData.getStringF(
|
| + 'castingActivityStatus', this.route.description) :
|
| + '';
|
| + },
|
| +
|
| + /**
|
| + * Called when the route details view is closed. Resets route-controls.
|
| + */
|
| + onClosed: function() {
|
| + if (this.controllerType_ === media_router.ControllerType.WEBUI &&
|
| + this.$$('route-controls')) {
|
| + this.$$('route-controls').reset();
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * Called when the route details view is opened.
|
| + */
|
| + onOpened: function() {
|
| + if (this.controllerType_ === media_router.ControllerType.WEBUI &&
|
| + this.$$('route-controls')) {
|
| + media_router.ui.setRouteControls(
|
| + /** @type {RouteControlsInterface} */ (this.$$('route-controls')));
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * Updates either the extensionview or the WebUI route controller, depending
|
| + * on which should be shown.
|
| + * @private
|
| + */
|
| + onRouteChange_: function(newRoute) {
|
| + if (this.controllerType_ !== media_router.ControllerType.WEBUI) {
|
| + this.updateActivityStatus_();
|
| + }
|
| + if (newRoute &&
|
| + this.controllerType_ === media_router.ControllerType.WEBUI &&
|
| + this.$$('route-controls')) {
|
| + this.$$('route-controls').onRouteUpdated(newRoute);
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * @param {number} controllerType
|
| + * @return {boolean} Whether the extensionview should be shown instead of the
|
| + * default route info element or the WebUI route controller.
|
| + * @private
|
| + */
|
| + shouldShowExtensionView_: function(controllerType) {
|
| + return controllerType === media_router.ControllerType.EXTENSION;
|
| + },
|
| +
|
| + /**
|
| + * @param {number} controllerType
|
| + * @return {boolean} Whether the route info element should be shown instead of
|
| + * the extensionview or the WebUI route controller.
|
| + * @private
|
| + */
|
| + shouldShowRouteInfoOnly_: function(controllerType) {
|
| + return controllerType === media_router.ControllerType.NONE;
|
| + },
|
| +
|
| + /**
|
| + * @param {number} controllerType
|
| + * @return {boolean} Whether the WebUI route controller should be shown
|
| + * instead of the default route info element or the extensionview.
|
| + * @private
|
| + */
|
| + shouldShowWebUiControls_: function(controllerType) {
|
| + return controllerType === media_router.ControllerType.WEBUI;
|
| + },
|
| +
|
| + /**
|
| * Fires a join-route-click event if the current route is joinable, otherwise
|
| * it fires a change-route-source-click event, which changes the source of the
|
| * current route. This may cause the current route to be closed and a new
|
| @@ -174,41 +288,4 @@ Polymer({
|
| });
|
| }
|
| },
|
| -
|
| - /**
|
| - * Loads the custom controller if |route.customControllerPath| exists.
|
| - * Falls back to the default route details view otherwise, or if load fails.
|
| - * Updates |activityStatus_| for the default view.
|
| - *
|
| - * @private
|
| - */
|
| - maybeLoadCustomController_: function() {
|
| - this.activityStatus_ = this.route ?
|
| - loadTimeData.getStringF('castingActivityStatus',
|
| - this.route.description) :
|
| - '';
|
| -
|
| - if (!this.route || !this.route.customControllerPath) {
|
| - this.isCustomControllerHidden_ = true;
|
| - return;
|
| - }
|
| -
|
| - // Show custom controller
|
| - var extensionview = this.$['custom-controller'];
|
| -
|
| - // Do nothing if the url is the same and the view is not hidden.
|
| - if (this.route.customControllerPath == extensionview.src &&
|
| - !this.isCustomControllerHidden_)
|
| - return;
|
| -
|
| - var that = this;
|
| - extensionview.load(this.route.customControllerPath)
|
| - .then(function() {
|
| - // Load was successful; show the custom controller.
|
| - that.isCustomControllerHidden_ = false;
|
| - }, function() {
|
| - // Load was unsuccessful; fall back to default view.
|
| - that.isCustomControllerHidden_ = true;
|
| - });
|
| - },
|
| });
|
|
|