Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4903)

Unified Diff: chrome/test/data/webui/settings/device_page_tests.js

Issue 2630623002: cros: Allow user to configure note taking app in md-settings. (Closed)
Patch Set: NoteAppInfo => settings.NoteAppInfo Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/data/webui/settings/cr_settings_browsertest.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 {
« no previous file with comments | « chrome/test/data/webui/settings/cr_settings_browsertest.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698