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

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

Issue 2846723002: [MD settings] separate all-sites from site-list (Closed)
Patch Set: review changes Created 3 years, 7 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/all_sites_tests.js
diff --git a/chrome/test/data/webui/settings/all_sites_tests.js b/chrome/test/data/webui/settings/all_sites_tests.js
new file mode 100644
index 0000000000000000000000000000000000000000..c610006eea70825dd6ebf004483c7a666eda0287
--- /dev/null
+++ b/chrome/test/data/webui/settings/all_sites_tests.js
@@ -0,0 +1,295 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * An example pref with exceptions with origins and patterns from
+ * different providers.
+ * @type {SiteSettingsPref}
+ */
+var prefsMixedProvider = {
+ exceptions: {
+ geolocation: [
+ {
+ embeddingOrigin: '',
+ origin: 'https://[*.]foo.com',
+ setting: 'block',
+ source: 'policy',
+ },
+ {
+ embeddingOrigin: '',
+ origin: 'https://bar.foo.com',
+ setting: 'block',
+ source: 'preference',
+ },
+ {
+ embeddingOrigin: '',
+ origin: 'https://[*.]foo.com',
+ setting: 'block',
+ source: 'preference',
+ },
+ ],
+ images: [],
+ }
+};
+
+/**
+ * An example pref with mixed origin and pattern.
+ * @type {SiteSettingsPref}
+ */
+var prefsMixedOriginAndPattern = {
+ exceptions: {
+ auto_downloads: [],
+ background_sync: [],
+ camera: [],
+ cookies: [],
+ geolocation: [
+ {
+ embeddingOrigin: '',
+ origin: 'https://foo.com',
+ setting: 'allow',
+ source: 'preference',
+ },
+ ],
+ images: [],
+ javascript: [
+ {
+ embeddingOrigin: '',
+ origin: 'https://[*.]foo.com',
+ setting: 'allow',
+ source: 'preference',
+ },
+ ],
+ mic: [],
+ notifications: [],
+ plugins: [],
+ midiDevices: [],
+ protectedContent: [],
+ popups: [],
+ subresource_filter: [],
+ unsandboxed_plugins: [],
+ }
+};
+
+/**
+ * An example pref with multiple categories and multiple allow/block
+ * state.
+ * @type {SiteSettingsPref}
+ */
+var prefsVarious = {
+ exceptions: {
+ auto_downloads: [],
+ background_sync: [],
+ camera: [],
+ cookies: [],
+ geolocation: [
+ {
+ embeddingOrigin: '',
+ incognito: false,
+ origin: 'https://foo.com',
+ setting: 'allow',
+ source: 'preference',
+ },
+ {
+ embeddingOrigin: '',
+ incognito: false,
+ origin: 'https://bar.com',
+ setting: 'block',
+ source: 'preference',
+ },
+ ],
+ images: [],
+ javascript: [],
+ mic: [],
+ midiDevices: [],
+ notifications: [
+ {
+ embeddingOrigin: '',
+ incognito: false,
+ origin: 'https://google.com',
+ setting: 'block',
+ source: 'preference',
+ },
+ {
+ embeddingOrigin: '',
+ incognito: false,
+ origin: 'https://bar.com',
+ setting: 'block',
+ source: 'preference',
+ },
+ {
+ embeddingOrigin: '',
+ incognito: false,
+ origin: 'https://foo.com',
+ setting: 'block',
+ source: 'preference',
+ },
+ ],
+ plugins: [],
+ protectedContent: [],
+ popups: [],
+ subresource_filter: [],
+ unsandboxed_plugins: [],
+ }
+};
+
+suite('AllSites', function() {
+ /**
+ * A site list element created before each test.
+ * @type {SiteList}
+ */
+ var testElement;
+
+ /**
+ * The mock proxy object to use during test.
+ * @type {TestSiteSettingsPrefsBrowserProxy}
+ */
+ var browserProxy = null;
+
+ suiteSetup(function() {
+ CrSettingsPrefs.setInitialized();
+ });
+
+ suiteTeardown(function() {
+ CrSettingsPrefs.resetForTesting();
+ });
+
+ // Initialize a site-list before each test.
+ setup(function() {
+ browserProxy = new TestSiteSettingsPrefsBrowserProxy();
+ settings.SiteSettingsPrefsBrowserProxyImpl.instance_ = browserProxy;
+ PolymerTest.clearBody();
+ browserProxy.setPrefs(prefsMixedOriginAndPattern);
+ testElement = document.createElement('all-sites');
+ assertTrue(!!testElement);
+ document.body.appendChild(testElement);
+ });
+
+ teardown(function() {
+ // The code being tested changes the Route. Reset so that state is not
+ // leaked across tests.
+ settings.resetRouteForTesting();
+ });
+
+ /**
+ * Configures the test element.
+ * @param {Array<dictionary>} prefs The prefs to use.
+ */
+ function setUpCategory(prefs) {
+ browserProxy.setPrefs(prefs);
+ // Some route is needed, but the actual route doesn't matter.
+ testElement.currentRoute = {
+ page: 'dummy',
+ section: 'privacy',
+ subpage: ['site-settings', 'site-settings-category-location'],
+ };
+ }
+
+ test('All sites category no action menu', function() {
+ setUpCategory(prefsVarious);
+ return browserProxy.whenCalled('getExceptionList')
+ .then(function(contentType) {
+ // Use resolver to ensure that the list container is populated.
+ var resolver = new PromiseResolver();
+ testElement.async(resolver.resolve);
+ return resolver.promise.then(function() {
+ var item = testElement.$.listContainer.children[0];
+ var name = item.querySelector('#displayName');
+ assertTrue(!!name);
+ });
+ });
+ });
+
+ test('All sites category', function() {
+ // Prefs: Multiple and overlapping sites.
+ setUpCategory(prefsVarious);
+
+ return browserProxy.whenCalled('getExceptionList')
+ .then(function(contentType) {
+ // Use resolver to ensure asserts bubble up to the framework with
+ // meaningful errors.
+ var resolver = new PromiseResolver();
+ testElement.async(resolver.resolve);
+ return resolver.promise.then(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();
+
+ // Validate that the sites gets populated from pre-canned prefs.
+ assertEquals(
+ 3, testElement.sites.length,
+ 'If this fails with 5 instead of the expected 3, then ' +
+ 'the de-duping of sites is not working for site_list');
+ 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.children[1];
+ var clickable = firstItem.querySelector('.middle');
+ assertNotEquals(undefined, clickable);
+ MockInteractions.tap(clickable);
+ assertEquals(
+ prefsVarious.exceptions.geolocation[0].origin,
+ settings.getQueryParameters().get('site'));
+ });
+ });
+ });
+
+ test('All sites mixed pattern and origin', function() {
+ // Prefs: One site, represented as origin and pattern.
+ setUpCategory(prefsMixedOriginAndPattern);
+
+ return browserProxy.whenCalled('getExceptionList')
+ .then(function(contentType) {
+ // Use resolver to ensure asserts bubble up to the framework with
+ // meaningful errors.
+ var resolver = new PromiseResolver();
+ testElement.async(resolver.resolve);
+ return resolver.promise.then(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();
+
+ // Validate that the sites gets populated from pre-canned prefs.
+ // TODO(dschuyler): de-duping of sites is under discussion, so
+ // it is currently disabled. It should be enabled again or this
+ // code should be removed.
+ assertEquals(
+ 2, testElement.sites.length,
+ 'If this fails with 1 instead of the expected 2, then ' +
+ 'the de-duping of sites has been enabled for site_list.');
+ if (testElement.sites.length == 1) {
+ assertEquals(
+ prefsMixedOriginAndPattern.exceptions.geolocation[0].origin,
+ testElement.sites[0].displayName);
+ }
+
+ assertEquals(undefined, testElement.selectedOrigin);
+ // Validate that the sites are shown in UI and can be selected.
+ var firstItem = testElement.$.listContainer.children[0];
+ var clickable = firstItem.querySelector('.middle');
+ assertNotEquals(undefined, clickable);
+ MockInteractions.tap(clickable);
+ if (testElement.sites.length == 1) {
+ assertEquals(
+ prefsMixedOriginAndPattern.exceptions.geolocation[0].origin,
+ testElement.sites[0].displayName);
+ }
+ });
+ });
+ });
+});

Powered by Google App Engine
This is Rietveld 408576698