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

Side by Side Diff: chrome/test/data/webui/settings/site_settings_category_tests.js

Issue 2554403005: [MD settings] move extra options in category settings (Closed)
Patch Set: merge with master; review changes Created 4 years 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 unified diff | 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 /** @fileoverview Suite of tests for site-settings-category. */
6 cr.define('site_settings_category', function() {
7 function registerTests() {
8 suite('SiteSettingsCategory', function() {
9 /**
10 * A site settings category created before each test.
11 * @type {SiteSettingsCategory}
12 */
13 var testElement;
14
15 /**
16 * The mock proxy object to use during test.
17 * @type {TestSiteSettingsPrefsBrowserProxy}
18 */
19 var browserProxy = null;
20
21 /**
22 * An example pref where the location category is disabled.
23 * @type {SiteSettingsPref}
24 */
25 var prefsLocationDisabled = {
26 defaults: {
27 geolocation: {
28 setting: 'block',
29 },
30 },
31 exceptions: {
32 geolocation: [],
33 },
34 };
35
36 /**
37 * An example pref where the location category is enabled.
38 * @type {SiteSettingsPref}
39 */
40 var prefsLocationEnabled = {
41 defaults: {
42 geolocation: {
43 setting: 'allow',
44 },
45 },
46 exceptions: {
47 geolocation: [],
48 },
49 };
50
51 /**
52 * An example pref where the Flash category is set on detect mode.
53 */
54 var prefsFlashDetect = {
55 defaults: {
56 plugins: {
57 setting: 'detect_important_content',
58 },
59 },
60 exceptions: {
61 plugins: [],
62 },
63 };
64
65 /**
66 * An example pref where the Cookies category is set to delete when
67 * session ends.
68 */
69 var prefsCookesSessionOnly = {
70 defaults: {
71 cookies: {
72 setting: 'session_only',
73 },
74 },
75 exceptions: {
76 cookies: [],
77 },
78 };
79
80 // Import necessary html before running suite.
81 suiteSetup(function() {
82 return PolymerTest.importHtml(
83 'chrome://md-settings/site_settings/site_settings_category.html');
84 });
85
86 // Initialize a site-settings-category before each test.
87 setup(function() {
88 browserProxy = new TestSiteSettingsPrefsBrowserProxy();
89 settings.SiteSettingsPrefsBrowserProxyImpl.instance_ = browserProxy;
90 PolymerTest.clearBody();
91 testElement = document.createElement('site-settings-category');
92 document.body.appendChild(testElement);
93 });
94
95 test('getDefaultValueForContentType API used', function() {
96 testElement.category = settings.ContentSettingsTypes.GEOLOCATION;
97 return browserProxy.whenCalled('getDefaultValueForContentType').then(
98 function(contentType) {
99 assertEquals(
100 settings.ContentSettingsTypes.GEOLOCATION, contentType);
101 });
102 });
103
104 function testCategoryEnabled(testElement, enabled) {
105 browserProxy.reset();
106 browserProxy.setPrefs(
107 enabled ? prefsLocationEnabled : prefsLocationDisabled);
108
109 testElement.category = settings.ContentSettingsTypes.GEOLOCATION;
110 return browserProxy.whenCalled('getDefaultValueForContentType').then(
111 function(contentType) {
112 assertEquals(
113 settings.ContentSettingsTypes.GEOLOCATION, contentType);
114 assertEquals(enabled, testElement.categoryEnabled);
115 MockInteractions.tap(testElement.$.toggle);
116 return browserProxy.whenCalled('setDefaultValueForContentType');
117 }).then(function(args) {
118 assertEquals(
119 settings.ContentSettingsTypes.GEOLOCATION, args[0]);
120 assertEquals(
121 enabled ? settings.PermissionValues.BLOCK :
122 settings.PermissionValues.ASK,
123 args[1]);
124 assertNotEquals(enabled, testElement.categoryEnabled);
125 });
126 }
127
128 test('categoryEnabled correctly represents prefs (enabled)', function() {
129 return testCategoryEnabled(testElement, true);
130 });
131
132 test('categoryEnabled correctly represents prefs (disabled)', function() {
133 return testCategoryEnabled(testElement, false);
134 });
135
136 test('basic category tests', function() {
137 for (var key in settings.ContentSettingsTypes) {
138 var category = settings.ContentSettingsTypes[key];
139
140 // A quick testing note on a few special categories...
141
142 // The USB Devices category has no global toggle -- and therefore no
143 // Category Desc (and has a special way of storing its data).
144
145 // The Protocol Handlers is a special category in that is does not
146 // store its data like the rest, but it has a global default toggle
147 // and therefore can be tested like the rest below.
148
149 // Test category text ids and descriptions for those categories that
150 // have those.
151 if (category != settings.ContentSettingsTypes.USB_DEVICES &&
152 category != settings.ContentSettingsTypes.ZOOM_LEVELS) {
153 assertNotEquals('', testElement.computeCategoryDesc(
154 category, settings.PermissionValues.ALLOW, true));
155 assertNotEquals('', testElement.computeCategoryDesc(
156 category, settings.PermissionValues.ALLOW, false));
157 assertNotEquals('', testElement.computeCategoryDesc(
158 category, settings.PermissionValues.BLOCK, true));
159 assertNotEquals('', testElement.computeCategoryDesc(
160 category, settings.PermissionValues.BLOCK, false));
161
162 // Test additional tri-state values:
163 if (category == settings.ContentSettingsTypes.PLUGINS) {
164 assertNotEquals('', testElement.computeCategoryDesc(
165 category, settings.PermissionValues.IMPORTANT_CONTENT, true));
166 assertNotEquals('', testElement.computeCategoryDesc(
167 category, settings.PermissionValues.IMPORTANT_CONTENT,
168 false));
169 } else if (category == settings.ContentSettingsTypes.COOKIES) {
170 assertNotEquals('', testElement.computeCategoryDesc(
171 category, settings.PermissionValues.SESSION_ONLY, true));
172 assertNotEquals('', testElement.computeCategoryDesc(
173 category, settings.PermissionValues.SESSION_ONLY, false));
174 }
175 }
176 }
177 });
178
179 function testTristateCategory(prefs, category, thirdState,
180 secondaryToggleId) {
181 browserProxy.setPrefs(prefs);
182
183 testElement.category = category;
184 var secondaryToggle = null;
185
186 return browserProxy.whenCalled('getDefaultValueForContentType').then(
187 function(contentType) {
188 Polymer.dom.flush();
189
190 secondaryToggle = testElement.$$(secondaryToggleId);
191 assertTrue(!!secondaryToggle);
192
193 assertEquals(category, contentType);
194 assertTrue(testElement.categoryEnabled);
195 assertFalse(secondaryToggle.disabled);
196 assertTrue(secondaryToggle.checked);
197
198 MockInteractions.tap(testElement.$.toggle);
199 return browserProxy.whenCalled('setDefaultValueForContentType');
200 }).then(function(args) {
201 // Check THIRD_STATE => BLOCK transition succeeded.
202 Polymer.dom.flush();
203
204 assertEquals(category, args[0]);
205 assertEquals(settings.PermissionValues.BLOCK, args[1]);
206 assertFalse(testElement.categoryEnabled);
207 assertTrue(secondaryToggle.disabled);
208 assertTrue(secondaryToggle.checked);
209
210 browserProxy.resetResolver('setDefaultValueForContentType');
211 MockInteractions.tap(testElement.$.toggle);
212 return browserProxy.whenCalled('setDefaultValueForContentType');
213 }).then(function(args) {
214 // Check BLOCK => THIRD_STATE transition succeeded.
215 Polymer.dom.flush();
216
217 assertEquals(category, args[0]);
218 assertEquals(thirdState, args[1]);
219 assertTrue(testElement.categoryEnabled);
220 assertFalse(secondaryToggle.disabled);
221 assertTrue(secondaryToggle.checked);
222
223 browserProxy.resetResolver('setDefaultValueForContentType');
224 MockInteractions.tap(secondaryToggle);
225 return browserProxy.whenCalled('setDefaultValueForContentType');
226 }).then(function(args) {
227 // Check THIRD_STATE => ALLOW transition succeeded.
228 Polymer.dom.flush();
229
230 assertEquals(category, args[0]);
231 assertEquals(
232 settings.PermissionValues.ALLOW, args[1]);
233 assertTrue(testElement.categoryEnabled);
234 assertFalse(secondaryToggle.disabled);
235 assertFalse(secondaryToggle.checked);
236
237 browserProxy.resetResolver('setDefaultValueForContentType');
238 MockInteractions.tap(testElement.$.toggle);
239 return browserProxy.whenCalled('setDefaultValueForContentType');
240 }).then(function(args) {
241 // Check ALLOW => BLOCK transition succeeded.
242 Polymer.dom.flush();
243
244 assertEquals(category, args[0]);
245 assertEquals(settings.PermissionValues.BLOCK, args[1]);
246 assertFalse(testElement.categoryEnabled);
247 assertTrue(secondaryToggle.disabled);
248 assertFalse(secondaryToggle.checked);
249
250 browserProxy.resetResolver('setDefaultValueForContentType');
251 MockInteractions.tap(testElement.$.toggle);
252 return browserProxy.whenCalled('setDefaultValueForContentType');
253 }).then(function(args) {
254 // Check BLOCK => ALLOW transition succeeded.
255 Polymer.dom.flush();
256
257 assertEquals(category, args[0]);
258 assertEquals(settings.PermissionValues.ALLOW, args[1]);
259 assertTrue(testElement.categoryEnabled);
260 assertFalse(secondaryToggle.disabled);
261 assertFalse(secondaryToggle.checked);
262
263 browserProxy.resetResolver('setDefaultValueForContentType');
264 MockInteractions.tap(secondaryToggle);
265 return browserProxy.whenCalled('setDefaultValueForContentType');
266 }).then(function(args) {
267 // Check ALLOW => THIRD_STATE transition succeeded.
268 Polymer.dom.flush();
269
270 assertEquals(category, args[0]);
271 assertEquals(thirdState, args[1]);
272 assertTrue(testElement.categoryEnabled);
273 assertFalse(secondaryToggle.disabled);
274 assertTrue(secondaryToggle.checked);
275 });
276 }
277
278 test('test special tri-state Flash category', function() {
279 return testTristateCategory(
280 prefsFlashDetect, settings.ContentSettingsTypes.PLUGINS,
281 settings.PermissionValues.IMPORTANT_CONTENT, '#flashAskToggle');
282 });
283
284 test('test special tri-state Cookies category', function() {
285 return testTristateCategory(
286 prefsCookesSessionOnly, settings.ContentSettingsTypes.COOKIES,
287 settings.PermissionValues.SESSION_ONLY, '#sessionOnlyToggle');
288 });
289 });
290 }
291
292 return {
293 registerTests: registerTests,
294 };
295 });
OLDNEW
« 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