| Index: chrome/browser/resources/settings/about_page/channel_switcher_dialog.js
|
| diff --git a/chrome/browser/resources/settings/about_page/channel_switcher_dialog.js b/chrome/browser/resources/settings/about_page/channel_switcher_dialog.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4b911c1904017b4b125da2510bca62bca4e46cb6
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/settings/about_page/channel_switcher_dialog.js
|
| @@ -0,0 +1,158 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +/**
|
| + * @fileoverview 'settings-channel-switcher-dialog' is a component allowing the
|
| + * user to switch between release channels (dev, beta, stable). A
|
| + * |target-channel-changed| event is fired if the user does select a different
|
| + * release channel to notify parents of this dialog.
|
| + */
|
| +Polymer({
|
| + is: 'settings-channel-switcher-dialog',
|
| +
|
| + behaviors: [I18nBehavior],
|
| +
|
| + properties: {
|
| + /** @private */
|
| + browserChannelEnum_: {
|
| + type: Object,
|
| + value: BrowserChannel,
|
| + },
|
| +
|
| + /** @private {!BrowserChannel} */
|
| + currentChannel_: String,
|
| +
|
| + /**
|
| + * Controls which of the two action buttons is visible.
|
| + * @private {?{changeChannel: boolean, changeChannelAndPowerwash: boolean}}
|
| + */
|
| + shouldShowButtons_: {
|
| + type: Object,
|
| + value: null,
|
| + },
|
| +
|
| + /** @private {?{title: string, description: string}} */
|
| + warning_: {
|
| + type: Object,
|
| + value: null,
|
| + },
|
| + },
|
| +
|
| + /** @private {?settings.AboutPageBrowserProxy} */
|
| + browserProxy_: null,
|
| +
|
| + /** @override */
|
| + ready: function() {
|
| + this.browserProxy_ = settings.AboutPageBrowserProxyImpl.getInstance();
|
| +
|
| + this.browserProxy_.getCurrentChannel().then(function(channel) {
|
| + this.currentChannel_ = channel;
|
| + // Pre-populate radio group with current channel.
|
| + this.$$('paper-radio-group').select(channel);
|
| + }.bind(this));
|
| + },
|
| +
|
| + /** @override */
|
| + attached: function() {
|
| + this.$.dialog.open();
|
| + },
|
| +
|
| + /** @private */
|
| + onCancelTap_: function() {
|
| + this.$.dialog.close();
|
| + },
|
| +
|
| + /** @private */
|
| + onChangeChannelTap_: function() {
|
| + var selectedChannel = this.$$('paper-radio-group').selected;
|
| + this.browserProxy_.setChannel(selectedChannel, false);
|
| + this.$.dialog.close();
|
| + this.fire('target-channel-changed', selectedChannel);
|
| + },
|
| +
|
| + /** @private */
|
| + onChangeChannelAndPowerwashTap_: function() {
|
| + var selectedChannel = this.$$('paper-radio-group').selected;
|
| + this.browserProxy_.setChannel(selectedChannel, true);
|
| + this.$.dialog.close();
|
| + this.fire('target-channel-changed', selectedChannel);
|
| + },
|
| +
|
| + /**
|
| + * @param {string} titleId Localized string ID for the title.
|
| + * @param {string} descriptionId Localized string ID for the description.
|
| + * @param {string=} opt_productNameId Localized string ID for the product
|
| + * name.
|
| + * @private
|
| + */
|
| + updateWarning_: function(titleId, descriptionId, opt_productNameId) {
|
| + this.warning_ = {
|
| + title: this.i18n(titleId),
|
| + description: opt_productNameId ?
|
| + this.i18n(descriptionId, this.i18n(opt_productNameId)) :
|
| + this.i18n(descriptionId),
|
| + };
|
| + },
|
| +
|
| + /**
|
| + * @param {boolean} changeChannel Whether the changeChannel button sholud be
|
| + * visible.
|
| + * @param {boolean} changeChannelAndPowerwash Whether the
|
| + * changeChannelAndPowerwash button should be visible.
|
| + * @private
|
| + */
|
| + updateButtons_: function(changeChannel, changeChannelAndPowerwash) {
|
| + if (changeChannel || changeChannelAndPowerwash) {
|
| + // Ensure that at most one button is visible at any given time.
|
| + assert(changeChannel != changeChannelAndPowerwash);
|
| + }
|
| +
|
| + this.shouldShowButtons_ = {
|
| + changeChannel: changeChannel,
|
| + changeChannelAndPowerwash: changeChannelAndPowerwash,
|
| + };
|
| + },
|
| +
|
| + /** @private */
|
| + onChannelSelectionChanged_: function() {
|
| + var selectedChannel = this.$$('paper-radio-group').selected;
|
| +
|
| + if (selectedChannel == this.currentChannel_) {
|
| + this.shouldShowButtons_ = null;
|
| + this.warning_ = null;
|
| + this.$.dialog.notifyResize();
|
| + return;
|
| + }
|
| +
|
| + if (settings.isTargetChannelMoreStable(
|
| + this.currentChannel_, selectedChannel)) {
|
| + if (loadTimeData.getBoolean('aboutEnterpriseManaged')) {
|
| + this.updateWarning_(
|
| + 'aboutDelayedWarningTitle',
|
| + 'aboutDelayedWarningMessage',
|
| + 'aboutProductTitle');
|
| + this.updateButtons_(true, false);
|
| + } else {
|
| + this.updateWarning_(
|
| + 'aboutPowerwashWarningTitle', 'aboutPowerwashWarningMessage');
|
| + this.updateButtons_(false, true);
|
| + }
|
| + } else {
|
| + this.updateWarning_(
|
| + 'aboutUnstableWarningTitle',
|
| + 'aboutUnstableWarningMessage',
|
| + 'aboutProductTitle');
|
| + this.updateButtons_(true, false);
|
| + }
|
| + this.$.dialog.notifyResize();
|
| + },
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + * @private
|
| + */
|
| + shouldShowWarning_: function() {
|
| + return this.warning_ !== null;
|
| + },
|
| +});
|
|
|