| Index: chrome/test/data/webui/settings/about_page_tests.js | 
| diff --git a/chrome/test/data/webui/settings/about_page_tests.js b/chrome/test/data/webui/settings/about_page_tests.js | 
| index 33fece658e53447a35d2c05b554935cbeefd44f1..08c8baade359a16ba6aa54a410b5e0898a761675 100644 | 
| --- a/chrome/test/data/webui/settings/about_page_tests.js | 
| +++ b/chrome/test/data/webui/settings/about_page_tests.js | 
| @@ -18,8 +18,7 @@ cr.define('settings_about_page', function() { | 
|  | 
| if (cr.isChromeOS) { | 
| methodNames.push( | 
| -        'getCurrentChannel', | 
| -        'getTargetChannel', | 
| +        'getChannelInfo', | 
| 'getVersionInfo', | 
| 'getRegulatoryInfo', | 
| 'setChannel'); | 
| @@ -31,18 +30,19 @@ cr.define('settings_about_page', function() { | 
| this.updateStatus_ = UpdateStatus.UPDATED; | 
|  | 
| if (cr.isChromeOS) { | 
| -      /** @type {!VersionInfo} */ | 
| +      /** @private {!VersionInfo} */ | 
| this.versionInfo_ = { | 
| arcVersion: '', | 
| osFirmware: '', | 
| osVersion: '', | 
| }; | 
|  | 
| -      /** @private {!BrowserChannel} */ | 
| -      this.currentChannel_ = BrowserChannel.BETA; | 
| - | 
| -      /** @private {!BrowserChannel} */ | 
| -      this.targetChannel_ = BrowserChannel.BETA; | 
| +      /** @private {!ChannelInfo} */ | 
| +      this.channelInfo_ = { | 
| +        currentChannel: BrowserChannel.BETA, | 
| +        targetChannel: BrowserChannel.BETA, | 
| +        canChangeChannel: true, | 
| +      }; | 
|  | 
| /** @private {?RegulatoryInfo} */ | 
| this.regulatoryInfo_ = null; | 
| @@ -88,17 +88,22 @@ cr.define('settings_about_page', function() { | 
| this.versionInfo_ = versionInfo; | 
| }; | 
|  | 
| +    /** @param {boolean} canChangeChannel */ | 
| +    TestAboutPageBrowserProxy.prototype.setCanChangeChannel = function( | 
| +        canChangeChannel) { | 
| +      this.channelInfo_.canChangeChannel = canChangeChannel; | 
| +    }; | 
| + | 
| /** | 
| * @param {!BrowserChannel} current | 
| * @param {!BrowserChannel} target | 
| */ | 
| TestAboutPageBrowserProxy.prototype.setChannels = function( | 
| current, target) { | 
| -      this.currentChannel_ = current; | 
| -      this.targetChannel_ = target; | 
| +      this.channelInfo_.currentChannel = current; | 
| +      this.channelInfo_.targetChannel = target; | 
| }; | 
|  | 
| - | 
| /** @param {?RegulatoryInfo} regulatoryInfo */ | 
| TestAboutPageBrowserProxy.prototype.setRegulatoryInfo = function( | 
| regulatoryInfo) { | 
| @@ -106,15 +111,9 @@ cr.define('settings_about_page', function() { | 
| }; | 
|  | 
| /** @override */ | 
| -    TestAboutPageBrowserProxy.prototype.getCurrentChannel = function() { | 
| -      this.methodCalled('getCurrentChannel'); | 
| -      return Promise.resolve(this.currentChannel_); | 
| -    }; | 
| - | 
| -    /** @override */ | 
| -    TestAboutPageBrowserProxy.prototype.getTargetChannel = function() { | 
| -      this.methodCalled('getTargetChannel'); | 
| -      return Promise.resolve(this.targetChannel_); | 
| +    TestAboutPageBrowserProxy.prototype.getChannelInfo = function() { | 
| +      this.methodCalled('getChannelInfo'); | 
| +      return Promise.resolve(this.channelInfo_); | 
| }; | 
|  | 
| /** @override */ | 
| @@ -186,7 +185,14 @@ cr.define('settings_about_page', function() { | 
| page = document.createElement('settings-about-page'); | 
| settings.navigateTo(settings.Route.ABOUT); | 
| document.body.appendChild(page); | 
| -        return aboutBrowserProxy.whenCalled('refreshUpdateStatus'); | 
| +        if (!cr.isChromeOS) { | 
| +          return aboutBrowserProxy.whenCalled('refreshUpdateStatus'); | 
| +        } else { | 
| +          return Promise.all([ | 
| +            aboutBrowserProxy.whenCalled('getChannelInfo'), | 
| +            aboutBrowserProxy.whenCalled('refreshUpdateStatus'), | 
| +          ]); | 
| +        } | 
| } | 
|  | 
| /** | 
| @@ -585,7 +591,7 @@ cr.define('settings_about_page', function() { | 
| return Promise.all([ | 
| browserProxy.whenCalled('pageReady'), | 
| browserProxy.whenCalled('getVersionInfo'), | 
| -            browserProxy.whenCalled('getCurrentChannel'), | 
| +            browserProxy.whenCalled('getChannelInfo'), | 
| ]).then(function() { | 
| assertEquals(versionInfo.arcVersion, page.$.arcVersion.textContent); | 
| assertEquals(versionInfo.osVersion, page.$.osVersion.textContent); | 
| @@ -599,25 +605,25 @@ cr.define('settings_about_page', function() { | 
| * dictated by the browser via loadTimeData boolean). | 
| * @param {boolean} canChangeChannel Whether to simulate the case where | 
| *     changing channels is allowed. | 
| +         * @return {!Promise} | 
| */ | 
| function checkChangeChannelButton(canChangeChannel) { | 
| -          loadTimeData.overrideValues({ | 
| -            aboutCanChangeChannel: canChangeChannel | 
| -          }); | 
| +          browserProxy.setCanChangeChannel(canChangeChannel); | 
| page = document.createElement('settings-detailed-build-info'); | 
| document.body.appendChild(page); | 
| - | 
| -          var changeChannelButton = page.$$('paper-button'); | 
| -          assertTrue(!!changeChannelButton); | 
| -          assertEquals(canChangeChannel, !changeChannelButton.disabled) | 
| +          return browserProxy.whenCalled('getChannelInfo').then(function() { | 
| +            var changeChannelButton = page.$$('paper-button'); | 
| +            assertTrue(!!changeChannelButton); | 
| +            assertEquals(canChangeChannel, !changeChannelButton.disabled); | 
| +          }); | 
| } | 
|  | 
| test('ChangeChannel_Enabled', function() { | 
| -          checkChangeChannelButton(true); | 
| +          return checkChangeChannelButton(true); | 
| }); | 
|  | 
| test('ChangeChannel_Disabled', function() { | 
| -          checkChangeChannelButton(false); | 
| +          return checkChangeChannelButton(false); | 
| }); | 
| }); | 
| } | 
| @@ -640,7 +646,7 @@ cr.define('settings_about_page', function() { | 
| radioButtons = dialog.shadowRoot.querySelectorAll( | 
| 'paper-radio-button'); | 
| assertEquals(3, radioButtons.length); | 
| -          return browserProxy.whenCalled('getCurrentChannel'); | 
| +          return browserProxy.whenCalled('getChannelInfo'); | 
| }); | 
|  | 
| teardown(function() { dialog.remove(); }); | 
| @@ -669,21 +675,23 @@ cr.define('settings_about_page', function() { | 
| MockInteractions.tap(radioButtons.item(2)); | 
| Polymer.dom.flush(); | 
|  | 
| -          assertFalse(dialog.$.warning.hidden); | 
| -          // Check that only the "Change channel" button becomes visible. | 
| -          assertTrue(dialog.$.changeChannelAndPowerwash.hidden); | 
| -          assertFalse(dialog.$.changeChannel.hidden); | 
| - | 
| -          var whenTargetChannelChangedFired = test_util.eventToPromise( | 
| -              'target-channel-changed', dialog); | 
| - | 
| -          MockInteractions.tap(dialog.$.changeChannel); | 
| -          return browserProxy.whenCalled('setChannel').then(function(args) { | 
| -            assertEquals(BrowserChannel.DEV, args[0]); | 
| -            assertFalse(args[1]); | 
| -            return whenTargetChannelChangedFired; | 
| -          }).then(function(event) { | 
| -            assertEquals(BrowserChannel.DEV, event.detail); | 
| +          return browserProxy.whenCalled('getChannelInfo').then(function() { | 
| +            assertFalse(dialog.$.warning.hidden); | 
| +            // Check that only the "Change channel" button becomes visible. | 
| +            assertTrue(dialog.$.changeChannelAndPowerwash.hidden); | 
| +            assertFalse(dialog.$.changeChannel.hidden); | 
| + | 
| +            var whenTargetChannelChangedFired = test_util.eventToPromise( | 
| +                'target-channel-changed', dialog); | 
| + | 
| +            MockInteractions.tap(dialog.$.changeChannel); | 
| +            return browserProxy.whenCalled('setChannel').then(function(args) { | 
| +              assertEquals(BrowserChannel.DEV, args[0]); | 
| +              assertFalse(args[1]); | 
| +              return whenTargetChannelChangedFired; | 
| +            }).then(function(event) { | 
| +              assertEquals(BrowserChannel.DEV, event.detail); | 
| +            }); | 
| }); | 
| }); | 
|  | 
| @@ -693,22 +701,24 @@ cr.define('settings_about_page', function() { | 
| MockInteractions.tap(radioButtons.item(0)); | 
| Polymer.dom.flush(); | 
|  | 
| -          assertFalse(dialog.$.warning.hidden); | 
| -          // Check that only the "Change channel and Powerwash" button becomes | 
| -          // visible. | 
| -          assertFalse(dialog.$.changeChannelAndPowerwash.hidden); | 
| -          assertTrue(dialog.$.changeChannel.hidden); | 
| - | 
| -          var whenTargetChannelChangedFired = test_util.eventToPromise( | 
| -              'target-channel-changed', dialog); | 
| - | 
| -          MockInteractions.tap(dialog.$.changeChannelAndPowerwash); | 
| -          return browserProxy.whenCalled('setChannel').then(function(args) { | 
| -            assertEquals(BrowserChannel.STABLE, args[0]); | 
| -            assertTrue(args[1]); | 
| -            return whenTargetChannelChangedFired; | 
| -          }).then(function(event) { | 
| -            assertEquals(BrowserChannel.STABLE, event.detail); | 
| +          return browserProxy.whenCalled('getChannelInfo').then(function() { | 
| +            assertFalse(dialog.$.warning.hidden); | 
| +            // Check that only the "Change channel and Powerwash" button becomes | 
| +            // visible. | 
| +            assertFalse(dialog.$.changeChannelAndPowerwash.hidden); | 
| +            assertTrue(dialog.$.changeChannel.hidden); | 
| + | 
| +            var whenTargetChannelChangedFired = test_util.eventToPromise( | 
| +                'target-channel-changed', dialog); | 
| + | 
| +            MockInteractions.tap(dialog.$.changeChannelAndPowerwash); | 
| +            return browserProxy.whenCalled('setChannel').then(function(args) { | 
| +              assertEquals(BrowserChannel.STABLE, args[0]); | 
| +              assertTrue(args[1]); | 
| +              return whenTargetChannelChangedFired; | 
| +            }).then(function(event) { | 
| +              assertEquals(BrowserChannel.STABLE, event.detail); | 
| +            }); | 
| }); | 
| }); | 
| }); | 
|  |