Chromium Code Reviews| 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 function fireStatusChanged(status) { | |
| 110 cr.webUIListenerCallback('update-status-changed', {status: status}); | |
| 111 } | |
| 112 | |
| 78 suite('AboutPageTest', function() { | 113 suite('AboutPageTest', function() { |
| 79 var page = null; | 114 var page = null; |
| 80 var browserProxy = null; | 115 var browserProxy = null; |
| 81 | 116 |
| 82 setup(function() { | 117 setup(function() { |
| 83 browserProxy = new TestAboutPageBrowserProxy(); | 118 browserProxy = new TestAboutPageBrowserProxy(); |
| 84 settings.AboutPageBrowserProxyImpl.instance_ = browserProxy; | 119 settings.AboutPageBrowserProxyImpl.instance_ = browserProxy; |
| 120 return initNewPage(); | |
| 121 }); | |
| 122 | |
| 123 function initNewPage() { | |
|
tommycli
2016/05/20 22:53:18
I assume you have to re-init the page because the
dpapad
2016/05/20 23:25:35
Right, so far the channel is only queried when pag
| |
| 124 browserProxy.resetResolver('refreshUpdateStatus'); | |
| 85 PolymerTest.clearBody(); | 125 PolymerTest.clearBody(); |
| 86 page = document.createElement('settings-about-page'); | 126 page = document.createElement('settings-about-page'); |
| 87 document.body.appendChild(page); | 127 document.body.appendChild(page); |
| 88 return browserProxy.whenCalled('refreshUpdateStatus'); | 128 return browserProxy.whenCalled('refreshUpdateStatus'); |
| 89 }); | 129 } |
| 90 | 130 |
| 91 /** | 131 /** |
| 92 * Test that the status icon updates according to incoming | 132 * Test that the status icon updates according to incoming |
| 93 * 'update-status-chanhed' events. | 133 * 'update-status-changed' events. |
| 94 */ | 134 */ |
| 95 test('IconUpdates', function() { | 135 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'; | 136 var SPINNER_ICON = 'chrome://resources/images/throbber_small.svg'; |
| 103 | 137 |
| 104 var icon = page.$$('iron-icon'); | 138 var icon = page.$$('iron-icon'); |
| 105 assertTrue(!!icon); | 139 assertTrue(!!icon); |
| 106 assertEquals(null, icon.getAttribute('icon')); | |
| 107 | 140 |
| 108 fireStatusChanged(UpdateStatus.CHECKING); | 141 fireStatusChanged(UpdateStatus.CHECKING); |
| 109 assertEquals(SPINNER_ICON, icon.src); | 142 assertEquals(SPINNER_ICON, icon.src); |
| 110 assertEquals(null, icon.getAttribute('icon')); | 143 assertEquals(null, icon.getAttribute('icon')); |
| 111 | 144 |
| 112 fireStatusChanged(UpdateStatus.UPDATING); | 145 fireStatusChanged(UpdateStatus.UPDATING); |
| 113 assertEquals(SPINNER_ICON, icon.src); | 146 assertEquals(SPINNER_ICON, icon.src); |
| 114 assertEquals(null, icon.getAttribute('icon')); | 147 assertEquals(null, icon.getAttribute('icon')); |
| 115 | 148 |
| 116 fireStatusChanged(UpdateStatus.NEARLY_UPDATED); | 149 fireStatusChanged(UpdateStatus.NEARLY_UPDATED); |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 127 | 160 |
| 128 fireStatusChanged(UpdateStatus.FAILED); | 161 fireStatusChanged(UpdateStatus.FAILED); |
| 129 assertEquals(null, icon.src); | 162 assertEquals(null, icon.src); |
| 130 assertEquals('settings:error', icon.icon); | 163 assertEquals('settings:error', icon.icon); |
| 131 | 164 |
| 132 fireStatusChanged(UpdateStatus.DISABLED); | 165 fireStatusChanged(UpdateStatus.DISABLED); |
| 133 assertEquals(null, icon.src); | 166 assertEquals(null, icon.src); |
| 134 assertEquals(null, icon.getAttribute('icon')); | 167 assertEquals(null, icon.getAttribute('icon')); |
| 135 }); | 168 }); |
| 136 | 169 |
| 170 if (cr.isChromeOS) { | |
| 171 /** | |
| 172 * Test that all buttons update according to incoming | |
| 173 * 'update-status-changed' events for the case where target and current | |
| 174 * channel are the same. | |
| 175 */ | |
| 176 test('ButtonsUpdate_SameChannel', function() { | |
| 177 var relaunch = page.$.relaunch; | |
| 178 var checkForUpdates = page.$.checkForUpdates; | |
| 179 var relaunchAndPowerwash = page.$.relaunchAndPowerwash; | |
| 180 | |
| 181 assertTrue(!!relaunch); | |
| 182 assertTrue(!!relaunchAndPowerwash); | |
| 183 assertTrue(!!checkForUpdates); | |
| 184 | |
| 185 function assertAllHidden() { | |
| 186 assertTrue(checkForUpdates.hidden); | |
| 187 assertTrue(relaunch.hidden); | |
| 188 assertTrue(relaunchAndPowerwash.hidden); | |
| 189 } | |
| 190 | |
| 191 // Check that |UPDATED| status is ignored if the user has not | |
| 192 // explicitly checked for updates yet. | |
| 193 fireStatusChanged(UpdateStatus.UPDATED); | |
| 194 assertFalse(checkForUpdates.hidden); | |
| 195 assertTrue(relaunch.hidden); | |
| 196 assertTrue(relaunchAndPowerwash.hidden); | |
| 197 | |
| 198 fireStatusChanged(UpdateStatus.CHECKING); | |
| 199 assertAllHidden(); | |
| 200 | |
| 201 fireStatusChanged(UpdateStatus.UPDATING); | |
| 202 assertAllHidden(); | |
| 203 | |
| 204 fireStatusChanged(UpdateStatus.NEARLY_UPDATED); | |
| 205 assertTrue(checkForUpdates.hidden); | |
| 206 assertFalse(relaunch.hidden); | |
| 207 assertTrue(relaunchAndPowerwash.hidden); | |
| 208 | |
| 209 fireStatusChanged(UpdateStatus.UPDATED); | |
| 210 assertAllHidden(); | |
| 211 | |
| 212 fireStatusChanged(UpdateStatus.FAILED); | |
| 213 assertFalse(checkForUpdates.hidden); | |
| 214 assertTrue(relaunch.hidden); | |
| 215 assertTrue(relaunchAndPowerwash.hidden); | |
| 216 | |
| 217 fireStatusChanged(UpdateStatus.DISABLED); | |
| 218 assertAllHidden(); | |
| 219 | |
| 220 fireStatusChanged(UpdateStatus.DISABLED_BY_ADMIN); | |
| 221 assertAllHidden(); | |
| 222 }); | |
| 223 | |
| 224 /** | |
| 225 * Test that buttons update according to incoming | |
| 226 * 'update-status-changed' events for the case where the target channel | |
| 227 * is more stable than current channel. | |
| 228 */ | |
| 229 test('ButtonsUpdate_BetaToStable', function() { | |
| 230 browserProxy.setChannels(BrowserChannel.BETA, BrowserChannel.STABLE); | |
| 231 browserProxy.setUpdateStatus(UpdateStatus.NEARLY_UPDATED); | |
| 232 | |
| 233 return initNewPage().then(function() { | |
| 234 assertTrue(!!page.$.relaunch); | |
| 235 assertTrue(!!page.$.relaunchAndPowerwash); | |
| 236 | |
| 237 assertTrue(page.$.relaunch.hidden); | |
| 238 assertFalse(page.$.relaunchAndPowerwash.hidden); | |
| 239 }); | |
| 240 }); | |
| 241 | |
| 242 /** | |
| 243 * Test that buttons update according to incoming | |
| 244 * 'update-status-changed' events for the case where the target channel | |
| 245 * is less stable than current channel. | |
| 246 */ | |
| 247 test('ButtonsUpdate_StableToBeta', function() { | |
| 248 browserProxy.setChannels(BrowserChannel.STABLE, BrowserChannel.BETA); | |
| 249 browserProxy.setUpdateStatus(UpdateStatus.NEARLY_UPDATED); | |
| 250 | |
| 251 return initNewPage().then(function() { | |
| 252 assertTrue(!!page.$.relaunch); | |
| 253 assertTrue(!!page.$.relaunchAndPowerwash); | |
| 254 | |
| 255 assertFalse(page.$.relaunch.hidden); | |
| 256 assertTrue(page.$.relaunchAndPowerwash.hidden); | |
| 257 }); | |
| 258 }); | |
| 259 } else { | |
|
tommycli
2016/05/20 22:53:19
Nit: since this is so far down, would it be more r
dpapad
2016/05/20 23:25:35
Done.
| |
| 260 /* | |
| 261 * Test that the "Check for updates" button updates according to | |
| 262 * incoming 'update-status-changed' events. | |
| 263 */ | |
| 264 test('ButtonsUpdate', function() { | |
| 265 var relaunch = page.$.relaunch; | |
| 266 assertTrue(!!relaunch); | |
| 267 | |
| 268 fireStatusChanged(UpdateStatus.CHECKING); | |
| 269 assertTrue(relaunch.hidden); | |
| 270 | |
| 271 fireStatusChanged(UpdateStatus.UPDATING); | |
| 272 assertTrue(relaunch.hidden); | |
| 273 | |
| 274 fireStatusChanged(UpdateStatus.NEARLY_UPDATED); | |
| 275 assertFalse(relaunch.hidden); | |
| 276 | |
| 277 fireStatusChanged(UpdateStatus.UPDATED); | |
| 278 assertTrue(relaunch.hidden); | |
| 279 | |
| 280 fireStatusChanged(UpdateStatus.FAILED); | |
| 281 assertTrue(relaunch.hidden); | |
| 282 | |
| 283 fireStatusChanged(UpdateStatus.DISABLED); | |
| 284 assertTrue(relaunch.hidden); | |
| 285 | |
| 286 fireStatusChanged(UpdateStatus.DISABLED_BY_ADMIN); | |
| 287 assertTrue(relaunch.hidden); | |
| 288 }); | |
| 289 } | |
| 290 | |
| 137 test('GetHelp', function() { | 291 test('GetHelp', function() { |
| 138 assertTrue(!!page.$.help); | 292 assertTrue(!!page.$.help); |
| 139 MockInteractions.tap(page.$.help); | 293 MockInteractions.tap(page.$.help); |
| 140 return browserProxy.whenCalled('openHelpPage'); | 294 return browserProxy.whenCalled('openHelpPage'); |
| 141 }); | 295 }); |
| 142 }); | 296 }); |
| 143 } | 297 } |
| 144 | 298 |
| 145 function registerOfficialBuildTests() { | 299 function registerOfficialBuildTests() { |
| 146 suite('AboutPageTest_OfficialBuild', function() { | 300 suite('AboutPageTest_OfficialBuild', function() { |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 197 assertEquals(versionInfo.osVersion, page.$.osVersion.textContent); | 351 assertEquals(versionInfo.osVersion, page.$.osVersion.textContent); |
| 198 assertEquals(versionInfo.osFirmware, page.$.osFirmware.textContent); | 352 assertEquals(versionInfo.osFirmware, page.$.osFirmware.textContent); |
| 199 }); | 353 }); |
| 200 }); | 354 }); |
| 201 }); | 355 }); |
| 202 } | 356 } |
| 203 } | 357 } |
| 204 | 358 |
| 205 return { | 359 return { |
| 206 registerTests: function() { | 360 registerTests: function() { |
| 207 if (cr.isChromeOS) { | 361 /*if (cr.isChromeOS) { |
| 208 registerDetailedBuildInfoTests(); | 362 registerDetailedBuildInfoTests(); |
| 209 } | 363 }*/ |
| 210 registerAboutPageTests(); | 364 registerAboutPageTests(); |
| 211 }, | 365 }, |
| 212 registerOfficialBuildTests: registerOfficialBuildTests, | 366 registerOfficialBuildTests: registerOfficialBuildTests, |
| 213 }; | 367 }; |
| 214 }); | 368 }); |
| OLD | NEW |