Chromium Code Reviews| Index: chrome/test/data/webui/settings/device_page_tests.js |
| diff --git a/chrome/test/data/webui/settings/device_page_tests.js b/chrome/test/data/webui/settings/device_page_tests.js |
| index 224583cd8fb3dcdfa4af988c8f30f3aa56834cc7..f9ee4cc270edf9941d1c82b7b2378d69caf1f872 100644 |
| --- a/chrome/test/data/webui/settings/device_page_tests.js |
| +++ b/chrome/test/data/webui/settings/device_page_tests.js |
| @@ -10,6 +10,7 @@ cr.define('device_page_tests', function() { |
| Keyboard: 'keyboard', |
| Pointers: 'pointers', |
| Power: 'power', |
| + Stylus: 'stylus', |
| }; |
| /** |
| @@ -19,6 +20,9 @@ cr.define('device_page_tests', function() { |
| function TestDevicePageBrowserProxy() { |
| this.keyboardShortcutsOverlayShown_ = 0; |
| this.updatePowerStatusCalled_ = 0; |
| + this.onNoteTakingAppsUpdatedCallback_ = null; |
| + this.requestNoteTakingApps_ = 0; |
| + this.setPreferredNoteTakingApp_ = ''; |
| } |
| TestDevicePageBrowserProxy.prototype = { |
| @@ -54,6 +58,21 @@ cr.define('device_page_tests', function() { |
| setPowerSource: function(powerSourceId) { |
| this.powerSourceId_ = powerSourceId; |
| }, |
| + |
| + /** @override */ |
| + onNoteTakingAppsUpdated: function(callback) { |
| + this.onNoteTakingAppsUpdated_ = callback; |
| + }, |
| + |
| + /** @override */ |
| + requestNoteTakingApps: function() { |
| + this.requestNoteTakingApps_ += 1; |
|
stevenjb
2017/01/25 01:40:08
nit: ++
jdufault
2017/02/03 21:32:09
Done.
|
| + }, |
| + |
| + /** @override */ |
| + setPreferredNoteTakingApp: function(appId) { |
| + this.setPreferredNoteTakingApp_ = appId; |
| + }, |
| }; |
| function getFakePrefs() { |
| @@ -699,6 +718,118 @@ cr.define('device_page_tests', function() { |
| }); |
| }); |
| }); |
| + |
| + suite(assert(TestNames.Stylus), function() { |
| + var stylusPage; |
| + var appSelector; |
| + var browserProxy; |
| + var noAppsDiv; |
| + var waitingDiv; |
| + var selectAppDiv; |
| + |
| + suiteSetup(function() { |
| + // Always show stylus settings. |
| + loadTimeData.overrideValues({ |
| + stylusAllowed: true, |
| + }); |
| + }); |
| + |
| + setup(function() { |
| + return showAndGetDeviceSubpage('stylus', settings.Route.STYLUS).then( |
| + function(page) { |
| + stylusPage = page; |
| + browserProxy = settings.DevicePageBrowserProxyImpl.getInstance(); |
| + appSelector = assert(page.$$('#menu')); |
| + noAppsDiv = assert(page.$$('#no-apps')); |
| + waitingDiv = assert(page.$$('#waiting')); |
| + selectAppDiv = assert(page.$$('#select-app')); |
| + |
| + assertEquals(1, browserProxy.requestNoteTakingApps_); |
| + assertEquals('', browserProxy.setPreferredNoteTakingApp_); |
| + assert(browserProxy.onNoteTakingAppsUpdated_); |
| + }); |
| + }); |
| + |
| + // Helper function to allocate a note app entry. |
| + function entry(name, value, preferred) { |
| + return { |
| + name: name, |
| + value: value, |
| + preferred: preferred |
| + }; |
| + } |
| + |
| + test('initial app choice selector value', function() { |
| + // Selector chooses the first value in list if there is no preferred |
| + // value set. |
| + browserProxy.onNoteTakingAppsUpdated_( |
| + [entry('n1', 'v1', false), entry('n2', 'v2', false)], false); |
| + Polymer.dom.flush(); |
| + assertEquals('v1', appSelector.value); |
| + |
| + // Selector chooses the preferred value if set. |
| + browserProxy.onNoteTakingAppsUpdated_( |
| + [entry('n1', 'v1', false), entry('n2', 'v2', true)], false); |
| + Polymer.dom.flush(); |
| + assertEquals('v2', appSelector.value); |
| + }); |
| + |
| + test('change preferred app', function() { |
| + // Load app list. |
| + browserProxy.onNoteTakingAppsUpdated_( |
| + [entry('n1', 'v1', false), entry('n2', 'v2', true)], false); |
| + Polymer.dom.flush(); |
| + assertEquals('', browserProxy.setPreferredNoteTakingApp_); |
| + |
| + // Update select element to new value, verify browser proxy is called. |
| + appSelector.value = 'v1'; |
| + stylusPage.onSelectedAppChanged_(); |
| + assertEquals('v1', browserProxy.setPreferredNoteTakingApp_); |
| + }); |
| + |
| + test('preferred app does not change without interaction', function() { |
| + // Pass various types of data to page, verify the preferred note-app |
| + // does not change. |
| + browserProxy.onNoteTakingAppsUpdated_([], false); |
| + Polymer.dom.flush(); |
|
stevenjb
2017/01/25 01:40:08
It seems like we should be asserting after each of
jdufault
2017/02/03 21:32:09
I think the test is okay without the extra asserts
|
| + browserProxy.onNoteTakingAppsUpdated_([], true); |
| + Polymer.dom.flush(); |
| + browserProxy.onNoteTakingAppsUpdated_([entry('n', 'v', false)], true); |
| + Polymer.dom.flush(); |
| + browserProxy.onNoteTakingAppsUpdated_([entry('n', 'v', false)], false); |
| + Polymer.dom.flush(); |
| + browserProxy.onNoteTakingAppsUpdated_( |
| + [entry('n1', 'v1', false), entry('n2', 'v2', true)], false); |
| + Polymer.dom.flush(); |
| + |
| + assertEquals('', browserProxy.setPreferredNoteTakingApp_); |
| + }); |
| + |
| + test('app-visibility', function() { |
| + // No apps available. |
| + browserProxy.onNoteTakingAppsUpdated_([], false); |
| + assert(!noAppsDiv.hidden); |
| + assert(waitingDiv.hidden); |
| + assert(selectAppDiv.hidden); |
| + |
| + // Waiting for apps to finish loading. |
| + browserProxy.onNoteTakingAppsUpdated_([], true); |
| + assert(noAppsDiv.hidden); |
| + assert(!waitingDiv.hidden); |
| + assert(selectAppDiv.hidden); |
| + |
| + browserProxy.onNoteTakingAppsUpdated_([entry('n', 'v', false)], true); |
| + assert(noAppsDiv.hidden); |
| + assert(!waitingDiv.hidden); |
| + assert(selectAppDiv.hidden); |
| + |
| + // Apps loaded, show selector. |
| + browserProxy.onNoteTakingAppsUpdated_([entry('n', 'v', false)], false); |
| + assert(noAppsDiv.hidden); |
| + assert(waitingDiv.hidden); |
| + assert(!selectAppDiv.hidden); |
| + }); |
| + }); |
| }); |
| return { |