| 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..b5619b792445798e1845edc3d67890c63bf5e6ee 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.onNoteTakingAppsUpdated_ = 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 */
|
| + setNoteTakingAppsUpdatedCallback: function(callback) {
|
| + this.onNoteTakingAppsUpdated_ = callback;
|
| + },
|
| +
|
| + /** @override */
|
| + requestNoteTakingApps: function() {
|
| + this.requestNoteTakingApps_++;
|
| + },
|
| +
|
| + /** @override */
|
| + setPreferredNoteTakingApp: function(appId) {
|
| + this.setPreferredNoteTakingApp_ = appId;
|
| + },
|
| };
|
|
|
| function getFakePrefs() {
|
| @@ -699,6 +718,125 @@ 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();
|
| + assertEquals('', browserProxy.setPreferredNoteTakingApp_);
|
| +
|
| + browserProxy.onNoteTakingAppsUpdated_([], true);
|
| + Polymer.dom.flush();
|
| + assertEquals('', browserProxy.setPreferredNoteTakingApp_);
|
| +
|
| + browserProxy.onNoteTakingAppsUpdated_([entry('n', 'v', false)], true);
|
| + Polymer.dom.flush();
|
| + assertEquals('', browserProxy.setPreferredNoteTakingApp_);
|
| +
|
| + browserProxy.onNoteTakingAppsUpdated_([entry('n', 'v', false)], false);
|
| + Polymer.dom.flush();
|
| + assertEquals('', browserProxy.setPreferredNoteTakingApp_);
|
| +
|
| + 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 {
|
|
|