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

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

Issue 1838213002: Simplify Site Settings tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address feedback Created 4 years, 8 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
Index: chrome/test/data/webui/settings/site_list_tests.js
diff --git a/chrome/test/data/webui/settings/site_list_tests.js b/chrome/test/data/webui/settings/site_list_tests.js
index ffe81d8362b56b83cf37959a719de7e7eca0c6fb..9235f42de9292270e892d9596fe70d16f89a0190 100644
--- a/chrome/test/data/webui/settings/site_list_tests.js
+++ b/chrome/test/data/webui/settings/site_list_tests.js
@@ -192,22 +192,6 @@ cr.define('site_list', function() {
});
/**
- * Returns a promise that resolves once the site list has been updated.
- * @param {function()} action is executed after the listener is set up.
- * @return {!Promise} a Promise fulfilled when the selected item changes.
- */
- function runAndResolveWhenSitesChanged(action) {
- return new Promise(function(resolve, reject) {
- var handler = function() {
- testElement.removeEventListener('sites-changed', handler);
- resolve();
- };
- testElement.addEventListener('sites-changed', handler);
- action();
- });
- }
-
- /**
* Asserts if a menu action is incorrectly hidden.
* @param {!HTMLElement} parentElement The parent node to start looking
* in.
@@ -215,14 +199,19 @@ cr.define('site_list', function() {
* should be hidden.
*/
function assertMenuActionHidden(parentElement, textForHiddenAction) {
- var actions = parentElement.$.listContainer.items;
- for (var i = 0; i < actions.length; ++i) {
- var content = actions[i].textContent.trim();
- if (content == textForHiddenAction)
- assertTrue(actions[i].hidden);
- else
- assertFalse(actions[i].hidden);
- }
+ var listItem = parentElement.$.listContainer.items[0];
+ var menuItems =
+ listItem.querySelectorAll('paper-menu-button paper-item');
+ assertNotEquals(0, menuItems.length);
+
+ var found = false;
+ menuItems.forEach(function(item) {
+ var text = item.textContent.trim();
+ if (text == textForHiddenAction)
+ found = true;
+ assertEquals(text == textForHiddenAction, item.hidden);
+ });
+ assertTrue(found);
}
/**
@@ -272,179 +261,246 @@ cr.define('site_list', function() {
});
test('Empty list', function() {
- return runAndResolveWhenSitesChanged(function() {
- setupLocationCategory(settings.PermissionValues.ALLOW, prefsEmpty);
- }).then(function() {
- assertEquals(0, testElement.sites.length);
-
- assertTrue(testElement.isAllowList_());
- assertFalse(testElement.showSiteList_(testElement.sites, true));
- assertFalse(testElement.showSiteList_(testElement.sites, false));
- assertEquals('Allow - 0', testElement.computeSiteListHeader_(
- testElement.sites, true));
- assertEquals('Exceptions - 0', testElement.computeSiteListHeader_(
- testElement.sites, false));
- }.bind(this));
+ setupLocationCategory(settings.PermissionValues.ALLOW, prefsEmpty);
+ return browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ assertEquals(
+ settings.ContentSettingsTypes.GEOLOCATION, contentType);
+
+ assertEquals(0, testElement.sites.length);
+
+ assertEquals(
+ settings.PermissionValues.ALLOW, testElement.categorySubtype);
+ assertEquals('Allow - 0', testElement.$.header.innerText);
+
+ // Site list should not show, no matter what category default is set
+ // to.
+ assertTrue(testElement.$.category.hidden);
+ browserProxy.resetResolver('getExceptionList');
+ testElement.categoryEnabled = false;
+ return browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ assertTrue(testElement.$.category.hidden);
+ assertEquals('Exceptions - 0', testElement.$.header.innerText);
+ });
+ });
});
test('initial ALLOW state is correct', function() {
- return runAndResolveWhenSitesChanged(function() {
- setupLocationCategory(settings.PermissionValues.ALLOW, prefs);
- }).then(function() {
- assertEquals(2, testElement.sites.length);
- assertEquals('https://bar-allow.com:443', testElement.sites[0].origin);
- assertTrue(testElement.isAllowList_());
- assertMenuActionHidden(testElement, 'Allow');
- // Site list should show, no matter what category default is set to.
- assertTrue(testElement.showSiteList_(testElement.sites, true));
- assertTrue(testElement.showSiteList_(testElement.sites, false));
- assertEquals('Exceptions - 2', testElement.computeSiteListHeader_(
- testElement.sites, false));
- assertEquals('Allow - 2', testElement.computeSiteListHeader_(
- testElement.sites, true));
- }.bind(this));
+ setupLocationCategory(settings.PermissionValues.ALLOW, prefs);
+ return browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ assertEquals(
+ settings.ContentSettingsTypes.GEOLOCATION, contentType);
+
+ assertEquals(2, testElement.sites.length);
+ assertEquals(prefs.exceptions.geolocation[1].origin,
+ testElement.sites[0].origin);
+ assertEquals(
+ settings.PermissionValues.ALLOW, testElement.categorySubtype);
+ Polymer.dom.flush(); // Populates action menu.
+ assertMenuActionHidden(testElement, 'Allow');
+ assertEquals('Allow - 2', testElement.$.header.innerText);
+
+ // Site list should show, no matter what category default is set to.
+ assertFalse(testElement.$.category.hidden);
+ browserProxy.resetResolver('getExceptionList');
+ testElement.categoryEnabled = false;
+ return browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ assertFalse(testElement.$.category.hidden);
+ assertEquals('Exceptions - 2', testElement.$.header.innerText);
+ });
+ });
});
test('initial BLOCK state is correct', function() {
- return runAndResolveWhenSitesChanged(function() {
- setupLocationCategory(settings.PermissionValues.BLOCK, prefs);
- }).then(function() {
- assertEquals(2, testElement.sites.length);
- assertEquals('https://bar-block.com:443', testElement.sites[0].origin);
-
- assertFalse(testElement.isAllowList_());
- assertMenuActionHidden(testElement, 'Block');
- // Site list should only show when category default is enabled.
- assertFalse(testElement.showSiteList_(testElement.sites, false));
- assertTrue(testElement.showSiteList_(testElement.sites, true));
- assertEquals('Block - 2', testElement.computeSiteListHeader_(
- testElement.sites, true));
- }.bind(this));
+ setupLocationCategory(settings.PermissionValues.BLOCK, prefs);
+ return browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ assertEquals(
+ settings.ContentSettingsTypes.GEOLOCATION, contentType);
+
+ assertEquals(2, testElement.sites.length);
+ assertEquals(prefs.exceptions.geolocation[3].origin,
+ testElement.sites[0].origin);
+
+ assertEquals(
+ settings.PermissionValues.BLOCK, testElement.categorySubtype);
+ Polymer.dom.flush(); // Populates action menu.
+ assertMenuActionHidden(testElement, 'Block');
+ assertEquals('Block - 2', testElement.$.header.innerText);
+
+ // Site list should only show when category default is enabled.
+ assertFalse(testElement.$.category.hidden);
+ browserProxy.resetResolver('getExceptionList');
+ testElement.categoryEnabled = false;
+ return browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ assertTrue(testElement.$.category.hidden);
+ });
+ });
});
test('list items shown and clickable when data is present', function() {
- return runAndResolveWhenSitesChanged(function() {
- setupLocationCategory(settings.PermissionValues.ALLOW, prefs);
- }).then(function() {
- // Required for firstItem to be found below.
- Polymer.dom.flush();
-
- // Validate that the sites gets populated from pre-canned prefs.
- assertEquals(2, testElement.sites.length);
- assertEquals('https://bar-allow.com:443', testElement.sites[0].origin);
- assertEquals(undefined, testElement.selectedOrigin);
-
- // Validate that the sites are shown in UI and can be selected.
- var firstItem = testElement.$.listContainer.items[0];
- var clickable = firstItem.querySelector('.flex paper-item-body');
- assertNotEquals(undefined, clickable);
- MockInteractions.tap(clickable);
- assertEquals(
- 'https://bar-allow.com:443', testElement.selectedSite.origin);
- }.bind(this));
+ setupLocationCategory(settings.PermissionValues.ALLOW, prefs);
+ return browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ assertEquals(
+ settings.ContentSettingsTypes.GEOLOCATION, contentType);
+
+ // Required for firstItem to be found below.
+ Polymer.dom.flush();
+
+ // Validate that the sites gets populated from pre-canned prefs.
+ assertEquals(2, testElement.sites.length);
+ assertEquals(prefs.exceptions.geolocation[1].origin,
+ testElement.sites[0].origin);
+ assertEquals(undefined, testElement.selectedOrigin);
+
+ // Validate that the sites are shown in UI and can be selected.
+ var firstItem = testElement.$.listContainer.items[0];
+ var clickable = firstItem.querySelector('.flex paper-item-body');
+ assertNotEquals(undefined, clickable);
+ MockInteractions.tap(clickable);
+ assertEquals(prefs.exceptions.geolocation[1].origin,
+ testElement.selectedSite.origin);
+ });
});
test('Block list open when Allow list is empty', function() {
- return runAndResolveWhenSitesChanged(function() {
- // Prefs: One item in Block list, nothing in Allow list.
- setupLocationCategory(settings.PermissionValues.BLOCK,
- prefsOneDisabled);
- }).then(function() {
- assertFalse(testElement.$.category.hidden);
- assertTrue(testElement.$.category.opened);
- assertNotEquals(0, testElement.$.listContainer.offsetHeight);
- }.bind(this));
+ // Prefs: One item in Block list, nothing in Allow list.
+ setupLocationCategory(settings.PermissionValues.BLOCK,
+ prefsOneDisabled);
+ return browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ assertEquals(
+ settings.ContentSettingsTypes.GEOLOCATION, contentType);
+
+ assertFalse(testElement.$.category.hidden);
+ assertTrue(testElement.$.category.opened);
+ assertNotEquals(0, testElement.$.listContainer.offsetHeight);
+ });
});
test('Block list closed when Allow list is not empty', function() {
- return runAndResolveWhenSitesChanged(function() {
- // Prefs: Items in both Block and Allow list.
- setupLocationCategory(settings.PermissionValues.BLOCK, prefs);
- }).then(function() {
- assertFalse(testElement.$.category.hidden);
- assertFalse(testElement.$.category.opened);
- assertEquals(0, testElement.$.listContainer.offsetHeight);
- }.bind(this));
+ // Prefs: Items in both Block and Allow list.
+ setupLocationCategory(settings.PermissionValues.BLOCK, prefs);
+ return browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ assertEquals(
+ settings.ContentSettingsTypes.GEOLOCATION, contentType);
+
+ assertFalse(testElement.$.category.hidden);
+ assertFalse(testElement.$.category.opened);
+ assertEquals(0, testElement.$.listContainer.offsetHeight);
+ });
});
test('Allow list is always open (Block list empty)', function() {
- return runAndResolveWhenSitesChanged(function() {
- // Prefs: One item in Allow list, nothing in Block list.
- setupLocationCategory(
- settings.PermissionValues.ALLOW, prefsOneEnabled);
- }).then(function() {
- assertFalse(testElement.$.category.hidden);
- assertTrue(testElement.$.category.opened);
- assertNotEquals(0, testElement.$.listContainer.offsetHeight);
- }.bind(this));
+ // Prefs: One item in Allow list, nothing in Block list.
+ setupLocationCategory(
+ settings.PermissionValues.ALLOW, prefsOneEnabled);
+ return browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ assertEquals(
+ settings.ContentSettingsTypes.GEOLOCATION, contentType);
+
+ assertFalse(testElement.$.category.hidden);
+ assertTrue(testElement.$.category.opened);
+ assertNotEquals(0, testElement.$.listContainer.offsetHeight);
+ });
});
test('Allow list is always open (Block list non-empty)', function() {
- return runAndResolveWhenSitesChanged(function() {
- // Prefs: Items in both Block and Allow list.
- setupLocationCategory(settings.PermissionValues.ALLOW, prefs);
- }).then(function() {
- assertFalse(testElement.$.category.hidden);
- assertTrue(testElement.$.category.opened);
- assertNotEquals(0, testElement.$.listContainer.offsetHeight);
- }.bind(this));
+ // Prefs: Items in both Block and Allow list.
+ setupLocationCategory(settings.PermissionValues.ALLOW, prefs);
+ return browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ assertEquals(
+ settings.ContentSettingsTypes.GEOLOCATION, contentType);
+
+ assertFalse(testElement.$.category.hidden);
+ assertTrue(testElement.$.category.opened);
+ assertNotEquals(0, testElement.$.listContainer.offsetHeight);
+ });
});
test('Block list hidden when empty', function() {
- return runAndResolveWhenSitesChanged(function() {
- // Prefs: One item in Allow list, nothing in Block list.
- setupLocationCategory(
- settings.PermissionValues.BLOCK, prefsOneEnabled);
- }).then(function() {
- assertTrue(testElement.$.category.hidden);
- }.bind(this));
+ // Prefs: One item in Allow list, nothing in Block list.
+ setupLocationCategory(
+ settings.PermissionValues.BLOCK, prefsOneEnabled);
+ return browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ assertEquals(
+ settings.ContentSettingsTypes.GEOLOCATION, contentType);
+
+ assertTrue(testElement.$.category.hidden);
+ });
});
test('Allow list hidden when empty', function() {
- return runAndResolveWhenSitesChanged(function() {
- // Prefs: One item in Block list, nothing in Allow list.
- setupLocationCategory(settings.PermissionValues.ALLOW,
- prefsOneDisabled);
- }).then(function() {
- assertTrue(testElement.$.category.hidden);
- }.bind(this));
+ // Prefs: One item in Block list, nothing in Allow list.
+ setupLocationCategory(settings.PermissionValues.ALLOW,
+ prefsOneDisabled);
+ return browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ assertEquals(
+ settings.ContentSettingsTypes.GEOLOCATION, contentType);
+
+ assertTrue(testElement.$.category.hidden);
+ });
});
- test('All sites category', function() {
- return runAndResolveWhenSitesChanged(function() {
- // Prefs: Multiple and overlapping sites.
- setupAllSitesCategory(prefsVarious);
- }).then(function() {
- // Required for firstItem to be found below.
- Polymer.dom.flush();
-
- assertFalse(testElement.$.category.hidden);
- // Validate that the sites gets populated from pre-canned prefs. If
- // this fails with 5 instead of the expected 3, then the de-duping of
- // sites is not working for site_list.
- assertEquals(3, testElement.sites.length);
- assertEquals('https://bar.com', testElement.sites[0].origin);
- assertEquals('https://foo.com', testElement.sites[1].origin);
- assertEquals('https://google.com', testElement.sites[2].origin);
- assertEquals(undefined, testElement.selectedOrigin);
-
- // Validate that the sites are shown in UI and can be selected.
- var firstItem = testElement.$.listContainer.items[1];
- var clickable = firstItem.querySelector('.flex paper-item-body');
- assertNotEquals(undefined, clickable);
- MockInteractions.tap(clickable);
- assertEquals('https://foo.com', testElement.selectedSite.origin);
- }.bind(this));
+ test('All sites category', function(done) {
+ // Prefs: Multiple and overlapping sites.
+ setupAllSitesCategory(prefsVarious);
+
+ browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ testElement.async(function() {
+ // All Sites calls getExceptionList for all categories, starting
+ // with Cookies.
+ assertEquals(settings.ContentSettingsTypes.COOKIES, contentType);
+
+ // Required for firstItem to be found below.
+ Polymer.dom.flush();
+
+ assertTrue(testElement.$.category.opened);
+ assertFalse(testElement.$.category.hidden);
+ // Validate that the sites gets populated from pre-canned prefs.
+ // If this fails with 5 instead of the expected 3, then the
+ // de-duping of sites is not working for site_list.
+ assertEquals(3, testElement.sites.length);
+ assertEquals(prefsVarious.exceptions.geolocation[1].origin,
+ testElement.sites[0].origin);
+ assertEquals(prefsVarious.exceptions.geolocation[0].origin,
+ testElement.sites[1].origin);
+ assertEquals(prefsVarious.exceptions.notifications[0].origin,
+ testElement.sites[2].origin);
+ assertEquals(undefined, testElement.selectedOrigin);
+
+ // Validate that the sites are shown in UI and can be selected.
+ var firstItem = testElement.$.listContainer.items[1];
+ var clickable = firstItem.querySelector('.flex paper-item-body');
+ assertNotEquals(undefined, clickable);
+ MockInteractions.tap(clickable);
+ assertEquals(prefsVarious.exceptions.geolocation[0].origin,
+ testElement.selectedSite.origin);
+
+ done();
+ });
+ });
});
test('Mixed schemes (present and absent)', function() {
- return runAndResolveWhenSitesChanged(function() {
- // Prefs: One item with scheme and one without.
- setupLocationCategory(settings.PermissionValues.ALLOW,
- prefsMixedSchemes);
- }).then(function() {
- // No further checks needed. If this fails, it will hang the test.
- }.bind(this));
+ // Prefs: One item with scheme and one without.
+ setupLocationCategory(settings.PermissionValues.ALLOW,
+ prefsMixedSchemes);
+ return browserProxy.whenCalled('getExceptionList').then(
+ function(contentType) {
+ // No further checks needed. If this fails, it will hang the test.
+ });
});
});
}

Powered by Google App Engine
This is Rietveld 408576698