| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 cr.define('settings_about_page', function() { | 5 cr.define('settings_about_page', function() { |
| 6 /** | 6 /** |
| 7 * @constructor | 7 * @constructor |
| 8 * @implements {settings.AboutPageBrowserProxy} | 8 * @implements {settings.AboutPageBrowserProxy} |
| 9 * @extends {settings.TestBrowserProxy} | 9 * @extends {settings.TestBrowserProxy} |
| 10 */ | 10 */ |
| 11 var TestAboutPageBrowserProxy = function() { | 11 var TestAboutPageBrowserProxy = function() { |
| 12 settings.TestBrowserProxy.call(this, [ | 12 settings.TestBrowserProxy.call(this, [ |
| 13 'pageReady', | 13 'pageReady', |
| 14 'refreshUpdateStatus', | 14 'refreshUpdateStatus', |
| 15 'openHelpPage', | 15 'openHelpPage', |
| 16 'openFeedbackDialog', | 16 'openFeedbackDialog', |
| 17 'getCurrentChannel', | 17 'getCurrentChannel', |
| 18 'getTargetChannel', | 18 'getTargetChannel', |
| 19 'getVersionInfo', | 19 'getVersionInfo', |
| 20 ]); | 20 ]); |
| 21 | 21 |
| 22 /** @type {!VersionInfo} */ | 22 /** @type {!VersionInfo} */ |
| 23 this.versionInfo_ = { | 23 this.versionInfo_ = { |
| 24 arcVersion: '', | 24 arcVersion: '', |
| 25 osFirmware: '', | 25 osFirmware: '', |
| 26 osVersion: '', | 26 osVersion: '', |
| 27 }; | 27 }; |
| 28 |
| 29 /** @private {!UpdateStatus} */ |
| 30 this.updateStatus_ = UpdateStatus.UPDATED; |
| 31 |
| 32 if (cr.isChromeOS) { |
| 33 /** @private {!BrowserChannel} */ |
| 34 this.currentChannel_ = BrowserChannel.BETA; |
| 35 |
| 36 /** @private {!BrowserChannel} */ |
| 37 this.targetChannel_ = BrowserChannel.BETA; |
| 38 } |
| 28 }; | 39 }; |
| 29 | 40 |
| 30 TestAboutPageBrowserProxy.prototype = { | 41 TestAboutPageBrowserProxy.prototype = { |
| 31 __proto__: settings.TestBrowserProxy.prototype, | 42 __proto__: settings.TestBrowserProxy.prototype, |
| 32 | 43 |
| 33 /** @param {!VersionInfo} */ | 44 /** @param {!VersionInfo} */ |
| 34 setVersionInfo: function(versionInfo) { | 45 setVersionInfo: function(versionInfo) { |
| 35 this.versionInfo_ = versionInfo; | 46 this.versionInfo_ = versionInfo; |
| 36 }, | 47 }, |
| 37 | 48 |
| 49 /** @param {!UpdateStatus} updateStatus */ |
| 50 setUpdateStatus: function(updateStatus) { |
| 51 this.updateStatus_ = updateStatus; |
| 52 }, |
| 53 |
| 38 /** @override */ | 54 /** @override */ |
| 39 pageReady: function() { | 55 pageReady: function() { |
| 40 this.methodCalled('pageReady'); | 56 this.methodCalled('pageReady'); |
| 41 }, | 57 }, |
| 42 | 58 |
| 43 /** @override */ | 59 /** @override */ |
| 44 refreshUpdateStatus: function() { | 60 refreshUpdateStatus: function() { |
| 61 cr.webUIListenerCallback( |
| 62 'update-status-changed', {status: this.updateStatus_}); |
| 45 this.methodCalled('refreshUpdateStatus'); | 63 this.methodCalled('refreshUpdateStatus'); |
| 46 }, | 64 }, |
| 47 | 65 |
| 48 /** @override */ | 66 /** @override */ |
| 49 getCurrentChannel: function() { | |
| 50 this.methodCalled('getCurrentChannel'); | |
| 51 return Promise.resolve(BrowserChannel.BETA); | |
| 52 }, | |
| 53 | |
| 54 /** @override */ | |
| 55 getTargetChannel: function() { | |
| 56 this.methodCalled('getTargetChannel'); | |
| 57 return Promise.resolve(BrowserChannel.BETA); | |
| 58 }, | |
| 59 | |
| 60 /** @override */ | |
| 61 getVersionInfo: function() { | |
| 62 this.methodCalled('getVersionInfo'); | |
| 63 return Promise.resolve(this.versionInfo_); | |
| 64 }, | |
| 65 | |
| 66 /** @override */ | |
| 67 openFeedbackDialog: function() { | 67 openFeedbackDialog: function() { |
| 68 this.methodCalled('openFeedbackDialog'); | 68 this.methodCalled('openFeedbackDialog'); |
| 69 }, | 69 }, |
| 70 | 70 |
| 71 /** @override */ | 71 /** @override */ |
| 72 openHelpPage: function() { | 72 openHelpPage: function() { |
| 73 this.methodCalled('openHelpPage'); | 73 this.methodCalled('openHelpPage'); |
| 74 }, | 74 }, |
| 75 }; | 75 }; |
| 76 | 76 |
| 77 if (cr.isChromeOS) { |
| 78 /** |
| 79 * @param {!BrowserChannel} current |
| 80 * @param {!BrowserChannel} target |
| 81 */ |
| 82 TestAboutPageBrowserProxy.prototype.setChannels = function( |
| 83 current, target) { |
| 84 this.currentChannel_ = current; |
| 85 this.targetChannel_ = target; |
| 86 }; |
| 87 |
| 88 /** @override */ |
| 89 TestAboutPageBrowserProxy.prototype.getCurrentChannel = function() { |
| 90 this.methodCalled('getCurrentChannel'); |
| 91 return Promise.resolve(this.currentChannel_); |
| 92 }; |
| 93 |
| 94 /** @override */ |
| 95 TestAboutPageBrowserProxy.prototype.getTargetChannel = function() { |
| 96 this.methodCalled('getTargetChannel'); |
| 97 return Promise.resolve(this.targetChannel_); |
| 98 }; |
| 99 |
| 100 /** @override */ |
| 101 TestAboutPageBrowserProxy.prototype.getVersionInfo = function() { |
| 102 this.methodCalled('getVersionInfo'); |
| 103 return Promise.resolve(this.versionInfo_); |
| 104 }; |
| 105 } |
| 106 |
| 107 |
| 77 function registerAboutPageTests() { | 108 function registerAboutPageTests() { |
| 109 /** @param {!UpdateStatus} status */ |
| 110 function fireStatusChanged(status) { |
| 111 cr.webUIListenerCallback('update-status-changed', {status: status}); |
| 112 } |
| 113 |
| 78 suite('AboutPageTest', function() { | 114 suite('AboutPageTest', function() { |
| 79 var page = null; | 115 var page = null; |
| 80 var browserProxy = null; | 116 var browserProxy = null; |
| 81 | 117 |
| 82 setup(function() { | 118 setup(function() { |
| 83 browserProxy = new TestAboutPageBrowserProxy(); | 119 browserProxy = new TestAboutPageBrowserProxy(); |
| 84 settings.AboutPageBrowserProxyImpl.instance_ = browserProxy; | 120 settings.AboutPageBrowserProxyImpl.instance_ = browserProxy; |
| 121 return initNewPage(); |
| 122 }); |
| 123 |
| 124 /** @return {!Promise} */ |
| 125 function initNewPage() { |
| 126 browserProxy.resetResolver('refreshUpdateStatus'); |
| 85 PolymerTest.clearBody(); | 127 PolymerTest.clearBody(); |
| 86 page = document.createElement('settings-about-page'); | 128 page = document.createElement('settings-about-page'); |
| 87 document.body.appendChild(page); | 129 document.body.appendChild(page); |
| 88 return browserProxy.whenCalled('refreshUpdateStatus'); | 130 return browserProxy.whenCalled('refreshUpdateStatus'); |
| 89 }); | 131 } |
| 90 | 132 |
| 91 /** | 133 /** |
| 92 * Test that the status icon updates according to incoming | 134 * Test that the status icon updates according to incoming |
| 93 * 'update-status-chanhed' events. | 135 * 'update-status-changed' events. |
| 94 */ | 136 */ |
| 95 test('IconUpdates', function() { | 137 test('IconUpdates', function() { |
| 96 function fireStatusChanged(status) { | |
| 97 cr.webUIListenerCallback('update-status-changed', { | |
| 98 status: status, message: '', progress: 0, | |
| 99 }); | |
| 100 } | |
| 101 | |
| 102 var SPINNER_ICON = 'chrome://resources/images/throbber_small.svg'; | 138 var SPINNER_ICON = 'chrome://resources/images/throbber_small.svg'; |
| 103 | 139 |
| 104 var icon = page.$$('iron-icon'); | 140 var icon = page.$$('iron-icon'); |
| 105 assertTrue(!!icon); | 141 assertTrue(!!icon); |
| 106 assertEquals(null, icon.getAttribute('icon')); | |
| 107 | 142 |
| 108 fireStatusChanged(UpdateStatus.CHECKING); | 143 fireStatusChanged(UpdateStatus.CHECKING); |
| 109 assertEquals(SPINNER_ICON, icon.src); | 144 assertEquals(SPINNER_ICON, icon.src); |
| 110 assertEquals(null, icon.getAttribute('icon')); | 145 assertEquals(null, icon.getAttribute('icon')); |
| 111 | 146 |
| 112 fireStatusChanged(UpdateStatus.UPDATING); | 147 fireStatusChanged(UpdateStatus.UPDATING); |
| 113 assertEquals(SPINNER_ICON, icon.src); | 148 assertEquals(SPINNER_ICON, icon.src); |
| 114 assertEquals(null, icon.getAttribute('icon')); | 149 assertEquals(null, icon.getAttribute('icon')); |
| 115 | 150 |
| 116 fireStatusChanged(UpdateStatus.NEARLY_UPDATED); | 151 fireStatusChanged(UpdateStatus.NEARLY_UPDATED); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 127 | 162 |
| 128 fireStatusChanged(UpdateStatus.FAILED); | 163 fireStatusChanged(UpdateStatus.FAILED); |
| 129 assertEquals(null, icon.src); | 164 assertEquals(null, icon.src); |
| 130 assertEquals('settings:error', icon.icon); | 165 assertEquals('settings:error', icon.icon); |
| 131 | 166 |
| 132 fireStatusChanged(UpdateStatus.DISABLED); | 167 fireStatusChanged(UpdateStatus.DISABLED); |
| 133 assertEquals(null, icon.src); | 168 assertEquals(null, icon.src); |
| 134 assertEquals(null, icon.getAttribute('icon')); | 169 assertEquals(null, icon.getAttribute('icon')); |
| 135 }); | 170 }); |
| 136 | 171 |
| 172 if (cr.isChromeOS) { |
| 173 /** |
| 174 * Test that all buttons update according to incoming |
| 175 * 'update-status-changed' events for the case where target and current |
| 176 * channel are the same. |
| 177 */ |
| 178 test('ButtonsUpdate_SameChannel', function() { |
| 179 var relaunch = page.$.relaunch; |
| 180 var checkForUpdates = page.$.checkForUpdates; |
| 181 var relaunchAndPowerwash = page.$.relaunchAndPowerwash; |
| 182 |
| 183 assertTrue(!!relaunch); |
| 184 assertTrue(!!relaunchAndPowerwash); |
| 185 assertTrue(!!checkForUpdates); |
| 186 |
| 187 function assertAllHidden() { |
| 188 assertTrue(checkForUpdates.hidden); |
| 189 assertTrue(relaunch.hidden); |
| 190 assertTrue(relaunchAndPowerwash.hidden); |
| 191 } |
| 192 |
| 193 // Check that |UPDATED| status is ignored if the user has not |
| 194 // explicitly checked for updates yet. |
| 195 fireStatusChanged(UpdateStatus.UPDATED); |
| 196 assertFalse(checkForUpdates.hidden); |
| 197 assertTrue(relaunch.hidden); |
| 198 assertTrue(relaunchAndPowerwash.hidden); |
| 199 |
| 200 fireStatusChanged(UpdateStatus.CHECKING); |
| 201 assertAllHidden(); |
| 202 |
| 203 fireStatusChanged(UpdateStatus.UPDATING); |
| 204 assertAllHidden(); |
| 205 |
| 206 fireStatusChanged(UpdateStatus.NEARLY_UPDATED); |
| 207 assertTrue(checkForUpdates.hidden); |
| 208 assertFalse(relaunch.hidden); |
| 209 assertTrue(relaunchAndPowerwash.hidden); |
| 210 |
| 211 fireStatusChanged(UpdateStatus.UPDATED); |
| 212 assertAllHidden(); |
| 213 |
| 214 fireStatusChanged(UpdateStatus.FAILED); |
| 215 assertFalse(checkForUpdates.hidden); |
| 216 assertTrue(relaunch.hidden); |
| 217 assertTrue(relaunchAndPowerwash.hidden); |
| 218 |
| 219 fireStatusChanged(UpdateStatus.DISABLED); |
| 220 assertAllHidden(); |
| 221 |
| 222 fireStatusChanged(UpdateStatus.DISABLED_BY_ADMIN); |
| 223 assertAllHidden(); |
| 224 }); |
| 225 |
| 226 /** |
| 227 * Test that buttons update according to incoming |
| 228 * 'update-status-changed' events for the case where the target channel |
| 229 * is more stable than current channel. |
| 230 */ |
| 231 test('ButtonsUpdate_BetaToStable', function() { |
| 232 browserProxy.setChannels(BrowserChannel.BETA, BrowserChannel.STABLE); |
| 233 browserProxy.setUpdateStatus(UpdateStatus.NEARLY_UPDATED); |
| 234 |
| 235 return initNewPage().then(function() { |
| 236 assertTrue(!!page.$.relaunch); |
| 237 assertTrue(!!page.$.relaunchAndPowerwash); |
| 238 |
| 239 assertTrue(page.$.relaunch.hidden); |
| 240 assertFalse(page.$.relaunchAndPowerwash.hidden); |
| 241 }); |
| 242 }); |
| 243 |
| 244 /** |
| 245 * Test that buttons update according to incoming |
| 246 * 'update-status-changed' events for the case where the target channel |
| 247 * is less stable than current channel. |
| 248 */ |
| 249 test('ButtonsUpdate_StableToBeta', function() { |
| 250 browserProxy.setChannels(BrowserChannel.STABLE, BrowserChannel.BETA); |
| 251 browserProxy.setUpdateStatus(UpdateStatus.NEARLY_UPDATED); |
| 252 |
| 253 return initNewPage().then(function() { |
| 254 assertTrue(!!page.$.relaunch); |
| 255 assertTrue(!!page.$.relaunchAndPowerwash); |
| 256 |
| 257 assertFalse(page.$.relaunch.hidden); |
| 258 assertTrue(page.$.relaunchAndPowerwash.hidden); |
| 259 }); |
| 260 }); |
| 261 } |
| 262 |
| 263 if (!cr.isChromeOS) { |
| 264 /* |
| 265 * Test that the "Check for updates" button updates according to |
| 266 * incoming 'update-status-changed' events. |
| 267 */ |
| 268 test('ButtonsUpdate', function() { |
| 269 var relaunch = page.$.relaunch; |
| 270 assertTrue(!!relaunch); |
| 271 |
| 272 fireStatusChanged(UpdateStatus.CHECKING); |
| 273 assertTrue(relaunch.hidden); |
| 274 |
| 275 fireStatusChanged(UpdateStatus.UPDATING); |
| 276 assertTrue(relaunch.hidden); |
| 277 |
| 278 fireStatusChanged(UpdateStatus.NEARLY_UPDATED); |
| 279 assertFalse(relaunch.hidden); |
| 280 |
| 281 fireStatusChanged(UpdateStatus.UPDATED); |
| 282 assertTrue(relaunch.hidden); |
| 283 |
| 284 fireStatusChanged(UpdateStatus.FAILED); |
| 285 assertTrue(relaunch.hidden); |
| 286 |
| 287 fireStatusChanged(UpdateStatus.DISABLED); |
| 288 assertTrue(relaunch.hidden); |
| 289 |
| 290 fireStatusChanged(UpdateStatus.DISABLED_BY_ADMIN); |
| 291 assertTrue(relaunch.hidden); |
| 292 }); |
| 293 } |
| 294 |
| 137 test('GetHelp', function() { | 295 test('GetHelp', function() { |
| 138 assertTrue(!!page.$.help); | 296 assertTrue(!!page.$.help); |
| 139 MockInteractions.tap(page.$.help); | 297 MockInteractions.tap(page.$.help); |
| 140 return browserProxy.whenCalled('openHelpPage'); | 298 return browserProxy.whenCalled('openHelpPage'); |
| 141 }); | 299 }); |
| 142 }); | 300 }); |
| 143 } | 301 } |
| 144 | 302 |
| 145 function registerOfficialBuildTests() { | 303 function registerOfficialBuildTests() { |
| 146 suite('AboutPageTest_OfficialBuild', function() { | 304 suite('AboutPageTest_OfficialBuild', function() { |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 return { | 363 return { |
| 206 registerTests: function() { | 364 registerTests: function() { |
| 207 if (cr.isChromeOS) { | 365 if (cr.isChromeOS) { |
| 208 registerDetailedBuildInfoTests(); | 366 registerDetailedBuildInfoTests(); |
| 209 } | 367 } |
| 210 registerAboutPageTests(); | 368 registerAboutPageTests(); |
| 211 }, | 369 }, |
| 212 registerOfficialBuildTests: registerOfficialBuildTests, | 370 registerOfficialBuildTests: registerOfficialBuildTests, |
| 213 }; | 371 }; |
| 214 }); | 372 }); |
| OLD | NEW |