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 9a7fb7bcfd1e54271be57dc8c688249d12c06bc7..fe0aa45ef9117ca583f480fa36dd08d95593788c 100644 |
--- a/chrome/test/data/webui/settings/about_page_tests.js |
+++ b/chrome/test/data/webui/settings/about_page_tests.js |
@@ -25,6 +25,17 @@ cr.define('settings_about_page', function() { |
osFirmware: '', |
osVersion: '', |
}; |
+ |
+ /** @private {!UpdateStatus} */ |
+ this.updateStatus_ = UpdateStatus.UPDATED; |
+ |
+ if (cr.isChromeOS) { |
+ /** @private {!BrowserChannel} */ |
+ this.currentChannel_ = BrowserChannel.BETA; |
+ |
+ /** @private {!BrowserChannel} */ |
+ this.targetChannel_ = BrowserChannel.BETA; |
+ } |
}; |
TestAboutPageBrowserProxy.prototype = { |
@@ -35,6 +46,11 @@ cr.define('settings_about_page', function() { |
this.versionInfo_ = versionInfo; |
}, |
+ /** @param {!UpdateStatus} updateStatus */ |
+ setUpdateStatus: function(updateStatus) { |
+ this.updateStatus_ = updateStatus; |
+ }, |
+ |
/** @override */ |
pageReady: function() { |
this.methodCalled('pageReady'); |
@@ -42,39 +58,59 @@ cr.define('settings_about_page', function() { |
/** @override */ |
refreshUpdateStatus: function() { |
+ cr.webUIListenerCallback( |
+ 'update-status-changed', {status: this.updateStatus_}); |
this.methodCalled('refreshUpdateStatus'); |
}, |
/** @override */ |
- getCurrentChannel: function() { |
- this.methodCalled('getCurrentChannel'); |
- return Promise.resolve(BrowserChannel.BETA); |
+ openFeedbackDialog: function() { |
+ this.methodCalled('openFeedbackDialog'); |
}, |
/** @override */ |
- getTargetChannel: function() { |
- this.methodCalled('getTargetChannel'); |
- return Promise.resolve(BrowserChannel.BETA); |
+ openHelpPage: function() { |
+ this.methodCalled('openHelpPage'); |
}, |
+ }; |
+ |
+ if (cr.isChromeOS) { |
+ /** |
+ * @param {!BrowserChannel} current |
+ * @param {!BrowserChannel} target |
+ */ |
+ TestAboutPageBrowserProxy.prototype.setChannels = function( |
+ current, target) { |
+ this.currentChannel_ = current; |
+ this.targetChannel_ = target; |
+ }; |
/** @override */ |
- getVersionInfo: function() { |
- this.methodCalled('getVersionInfo'); |
- return Promise.resolve(this.versionInfo_); |
- }, |
+ TestAboutPageBrowserProxy.prototype.getCurrentChannel = function() { |
+ this.methodCalled('getCurrentChannel'); |
+ return Promise.resolve(this.currentChannel_); |
+ }; |
/** @override */ |
- openFeedbackDialog: function() { |
- this.methodCalled('openFeedbackDialog'); |
- }, |
+ TestAboutPageBrowserProxy.prototype.getTargetChannel = function() { |
+ this.methodCalled('getTargetChannel'); |
+ return Promise.resolve(this.targetChannel_); |
+ }; |
/** @override */ |
- openHelpPage: function() { |
- this.methodCalled('openHelpPage'); |
- }, |
- }; |
+ TestAboutPageBrowserProxy.prototype.getVersionInfo = function() { |
+ this.methodCalled('getVersionInfo'); |
+ return Promise.resolve(this.versionInfo_); |
+ }; |
+ } |
+ |
function registerAboutPageTests() { |
+ /** @param {!UpdateStatus} status */ |
+ function fireStatusChanged(status) { |
+ cr.webUIListenerCallback('update-status-changed', {status: status}); |
+ } |
+ |
suite('AboutPageTest', function() { |
var page = null; |
var browserProxy = null; |
@@ -82,28 +118,27 @@ cr.define('settings_about_page', function() { |
setup(function() { |
browserProxy = new TestAboutPageBrowserProxy(); |
settings.AboutPageBrowserProxyImpl.instance_ = browserProxy; |
+ return initNewPage(); |
+ }); |
+ |
+ /** @return {!Promise} */ |
+ function initNewPage() { |
+ browserProxy.resetResolver('refreshUpdateStatus'); |
PolymerTest.clearBody(); |
page = document.createElement('settings-about-page'); |
document.body.appendChild(page); |
return browserProxy.whenCalled('refreshUpdateStatus'); |
- }); |
+ } |
/** |
* Test that the status icon updates according to incoming |
- * 'update-status-chanhed' events. |
+ * 'update-status-changed' events. |
*/ |
test('IconUpdates', function() { |
- function fireStatusChanged(status) { |
- cr.webUIListenerCallback('update-status-changed', { |
- status: status, message: '', progress: 0, |
- }); |
- } |
- |
var SPINNER_ICON = 'chrome://resources/images/throbber_small.svg'; |
var icon = page.$$('iron-icon'); |
assertTrue(!!icon); |
- assertEquals(null, icon.getAttribute('icon')); |
fireStatusChanged(UpdateStatus.CHECKING); |
assertEquals(SPINNER_ICON, icon.src); |
@@ -134,6 +169,129 @@ cr.define('settings_about_page', function() { |
assertEquals(null, icon.getAttribute('icon')); |
}); |
+ if (cr.isChromeOS) { |
+ /** |
+ * Test that all buttons update according to incoming |
+ * 'update-status-changed' events for the case where target and current |
+ * channel are the same. |
+ */ |
+ test('ButtonsUpdate_SameChannel', function() { |
+ var relaunch = page.$.relaunch; |
+ var checkForUpdates = page.$.checkForUpdates; |
+ var relaunchAndPowerwash = page.$.relaunchAndPowerwash; |
+ |
+ assertTrue(!!relaunch); |
+ assertTrue(!!relaunchAndPowerwash); |
+ assertTrue(!!checkForUpdates); |
+ |
+ function assertAllHidden() { |
+ assertTrue(checkForUpdates.hidden); |
+ assertTrue(relaunch.hidden); |
+ assertTrue(relaunchAndPowerwash.hidden); |
+ } |
+ |
+ // Check that |UPDATED| status is ignored if the user has not |
+ // explicitly checked for updates yet. |
+ fireStatusChanged(UpdateStatus.UPDATED); |
+ assertFalse(checkForUpdates.hidden); |
+ assertTrue(relaunch.hidden); |
+ assertTrue(relaunchAndPowerwash.hidden); |
+ |
+ fireStatusChanged(UpdateStatus.CHECKING); |
+ assertAllHidden(); |
+ |
+ fireStatusChanged(UpdateStatus.UPDATING); |
+ assertAllHidden(); |
+ |
+ fireStatusChanged(UpdateStatus.NEARLY_UPDATED); |
+ assertTrue(checkForUpdates.hidden); |
+ assertFalse(relaunch.hidden); |
+ assertTrue(relaunchAndPowerwash.hidden); |
+ |
+ fireStatusChanged(UpdateStatus.UPDATED); |
+ assertAllHidden(); |
+ |
+ fireStatusChanged(UpdateStatus.FAILED); |
+ assertFalse(checkForUpdates.hidden); |
+ assertTrue(relaunch.hidden); |
+ assertTrue(relaunchAndPowerwash.hidden); |
+ |
+ fireStatusChanged(UpdateStatus.DISABLED); |
+ assertAllHidden(); |
+ |
+ fireStatusChanged(UpdateStatus.DISABLED_BY_ADMIN); |
+ assertAllHidden(); |
+ }); |
+ |
+ /** |
+ * Test that buttons update according to incoming |
+ * 'update-status-changed' events for the case where the target channel |
+ * is more stable than current channel. |
+ */ |
+ test('ButtonsUpdate_BetaToStable', function() { |
+ browserProxy.setChannels(BrowserChannel.BETA, BrowserChannel.STABLE); |
+ browserProxy.setUpdateStatus(UpdateStatus.NEARLY_UPDATED); |
+ |
+ return initNewPage().then(function() { |
+ assertTrue(!!page.$.relaunch); |
+ assertTrue(!!page.$.relaunchAndPowerwash); |
+ |
+ assertTrue(page.$.relaunch.hidden); |
+ assertFalse(page.$.relaunchAndPowerwash.hidden); |
+ }); |
+ }); |
+ |
+ /** |
+ * Test that buttons update according to incoming |
+ * 'update-status-changed' events for the case where the target channel |
+ * is less stable than current channel. |
+ */ |
+ test('ButtonsUpdate_StableToBeta', function() { |
+ browserProxy.setChannels(BrowserChannel.STABLE, BrowserChannel.BETA); |
+ browserProxy.setUpdateStatus(UpdateStatus.NEARLY_UPDATED); |
+ |
+ return initNewPage().then(function() { |
+ assertTrue(!!page.$.relaunch); |
+ assertTrue(!!page.$.relaunchAndPowerwash); |
+ |
+ assertFalse(page.$.relaunch.hidden); |
+ assertTrue(page.$.relaunchAndPowerwash.hidden); |
+ }); |
+ }); |
+ } |
+ |
+ if (!cr.isChromeOS) { |
+ /* |
+ * Test that the "Check for updates" button updates according to |
+ * incoming 'update-status-changed' events. |
+ */ |
+ test('ButtonsUpdate', function() { |
+ var relaunch = page.$.relaunch; |
+ assertTrue(!!relaunch); |
+ |
+ fireStatusChanged(UpdateStatus.CHECKING); |
+ assertTrue(relaunch.hidden); |
+ |
+ fireStatusChanged(UpdateStatus.UPDATING); |
+ assertTrue(relaunch.hidden); |
+ |
+ fireStatusChanged(UpdateStatus.NEARLY_UPDATED); |
+ assertFalse(relaunch.hidden); |
+ |
+ fireStatusChanged(UpdateStatus.UPDATED); |
+ assertTrue(relaunch.hidden); |
+ |
+ fireStatusChanged(UpdateStatus.FAILED); |
+ assertTrue(relaunch.hidden); |
+ |
+ fireStatusChanged(UpdateStatus.DISABLED); |
+ assertTrue(relaunch.hidden); |
+ |
+ fireStatusChanged(UpdateStatus.DISABLED_BY_ADMIN); |
+ assertTrue(relaunch.hidden); |
+ }); |
+ } |
+ |
test('GetHelp', function() { |
assertTrue(!!page.$.help); |
MockInteractions.tap(page.$.help); |