OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** @fileoverview Suite of tests for site-list. */ | 5 /** @fileoverview Suite of tests for site-list. */ |
6 | 6 |
7 /** | 7 /** |
8 * An example pref with 2 blocked location items and 2 allowed. This pref | 8 * An example pref with 2 blocked location items and 2 allowed. This pref |
9 * is also used for the All Sites category and therefore needs values for | 9 * is also used for the All Sites category and therefore needs values for |
10 * all types, even though some might be blank. | 10 * all types, even though some might be blank. |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 embeddingOrigin: 'https://[*.]foo.com', | 120 embeddingOrigin: 'https://[*.]foo.com', |
121 origin: 'https://[*.]foo.com', | 121 origin: 'https://[*.]foo.com', |
122 setting: 'block', | 122 setting: 'block', |
123 source: 'preference', | 123 source: 'preference', |
124 }, | 124 }, |
125 ] | 125 ] |
126 } | 126 } |
127 }; | 127 }; |
128 | 128 |
129 /** | 129 /** |
| 130 * An example pref with with and without embeddingOrigin. |
| 131 * @type {SiteSettingsPref} |
| 132 */ |
| 133 var prefsMixedEmbeddingOrigin = { |
| 134 exceptions: { |
| 135 images: [ |
| 136 { |
| 137 origin: 'https://foo.com', |
| 138 embeddingOrigin: 'https://example.com', |
| 139 setting: 'allow', |
| 140 source: 'preference', |
| 141 }, |
| 142 { |
| 143 origin: 'https://bar.com', |
| 144 embeddingOrigin: '', |
| 145 setting: 'allow', |
| 146 source: 'preference', |
| 147 }, |
| 148 ], |
| 149 } |
| 150 }; |
| 151 |
| 152 /** |
130 * An example pref with mixed origin and pattern. | 153 * An example pref with mixed origin and pattern. |
131 * @type {SiteSettingsPref} | 154 * @type {SiteSettingsPref} |
132 */ | 155 */ |
133 var prefsMixedOriginAndPattern = { | 156 var prefsMixedOriginAndPattern = { |
134 exceptions: { | 157 exceptions: { |
135 auto_downloads: [], | 158 auto_downloads: [], |
136 background_sync: [], | 159 background_sync: [], |
137 camera: [], | 160 camera: [], |
138 cookies: [], | 161 cookies: [], |
139 geolocation: [ | 162 geolocation: [ |
140 { | 163 { |
141 origin: 'https://foo.com', | 164 origin: 'https://foo.com', |
142 embeddingOrigin: '*', | 165 embeddingOrigin: 'https://example.com', |
143 setting: 'allow', | 166 setting: 'allow', |
144 source: 'preference', | 167 source: 'preference', |
145 }, | 168 }, |
146 ], | 169 ], |
147 images: [], | 170 images: [], |
148 javascript: [ | 171 javascript: [ |
149 { | 172 { |
150 origin: 'https://[*.]foo.com', | 173 origin: 'https://[*.]foo.com', |
151 embeddingOrigin: '*', | 174 embeddingOrigin: '', |
152 setting: 'allow', | 175 setting: 'allow', |
153 source: 'preference', | 176 source: 'preference', |
154 }, | 177 }, |
155 ], | 178 ], |
156 mic: [], | 179 mic: [], |
157 notifications: [], | 180 notifications: [], |
158 plugins: [], | 181 plugins: [], |
159 midiDevices: [], | 182 midiDevices: [], |
160 protectedContent: [], | 183 protectedContent: [], |
161 popups: [], | 184 popups: [], |
162 subresource_filter: [], | 185 subresource_filter: [], |
163 unsandboxed_plugins: [], | 186 unsandboxed_plugins: [], |
164 } | 187 } |
165 }; | 188 }; |
166 | 189 |
167 /** | 190 /** |
168 * An example pref with multiple categories and multiple allow/block | 191 * An example pref with multiple categories and multiple allow/block |
169 * state. | 192 * state. |
170 * @type {SiteSettingsPref} | 193 * @type {SiteSettingsPref} |
171 */ | 194 */ |
172 var prefsVarious = { | 195 var prefsVarious = { |
173 exceptions: { | 196 exceptions: { |
174 auto_downloads: [], | 197 auto_downloads: [], |
175 background_sync: [], | 198 background_sync: [], |
176 camera: [], | 199 camera: [], |
177 cookies: [], | 200 cookies: [], |
178 geolocation: [ | 201 geolocation: [ |
179 { | 202 { |
180 embeddingOrigin: 'https://foo.com', | 203 embeddingOrigin: '', |
181 incognito: false, | 204 incognito: false, |
182 origin: 'https://foo.com', | 205 origin: 'https://foo.com', |
183 setting: 'allow', | 206 setting: 'allow', |
184 source: 'preference', | 207 source: 'preference', |
185 }, | 208 }, |
186 { | 209 { |
187 embeddingOrigin: 'https://bar.com', | 210 embeddingOrigin: '', |
188 incognito: false, | 211 incognito: false, |
189 origin: 'https://bar.com', | 212 origin: 'https://bar.com', |
190 setting: 'block', | 213 setting: 'block', |
191 source: 'preference', | 214 source: 'preference', |
192 }, | 215 }, |
193 ], | 216 ], |
194 images: [], | 217 images: [], |
195 javascript: [], | 218 javascript: [], |
196 mic: [], | 219 mic: [], |
197 midiDevices: [], | 220 midiDevices: [], |
198 notifications: [ | 221 notifications: [ |
199 { | 222 { |
200 embeddingOrigin: 'https://google.com', | 223 embeddingOrigin: '', |
201 incognito: false, | 224 incognito: false, |
202 origin: 'https://google.com', | 225 origin: 'https://google.com', |
203 setting: 'block', | 226 setting: 'block', |
204 source: 'preference', | 227 source: 'preference', |
205 }, | 228 }, |
206 { | 229 { |
207 embeddingOrigin: 'https://bar.com', | 230 embeddingOrigin: '', |
208 incognito: false, | 231 incognito: false, |
209 origin: 'https://bar.com', | 232 origin: 'https://bar.com', |
210 setting: 'block', | 233 setting: 'block', |
211 source: 'preference', | 234 source: 'preference', |
212 }, | 235 }, |
213 { | 236 { |
214 embeddingOrigin: 'https://foo.com', | 237 embeddingOrigin: '', |
215 incognito: false, | 238 incognito: false, |
216 origin: 'https://foo.com', | 239 origin: 'https://foo.com', |
217 setting: 'block', | 240 setting: 'block', |
218 source: 'preference', | 241 source: 'preference', |
219 }, | 242 }, |
220 ], | 243 ], |
221 plugins: [], | 244 plugins: [], |
222 protectedContent: [], | 245 protectedContent: [], |
223 popups: [], | 246 popups: [], |
224 subresource_filter: [], | 247 subresource_filter: [], |
225 unsandboxed_plugins: [], | 248 unsandboxed_plugins: [], |
226 } | 249 } |
227 }; | 250 }; |
228 | 251 |
229 /** | 252 /** |
230 * An example pref with 1 allowed location item. | 253 * An example pref with 1 allowed location item. |
231 * @type {SiteSettingsPref} | 254 * @type {SiteSettingsPref} |
232 */ | 255 */ |
233 var prefsOneEnabled = { | 256 var prefsOneEnabled = { |
234 exceptions: { | 257 exceptions: { |
235 geolocation: [ | 258 geolocation: [ |
236 { | 259 { |
237 embeddingOrigin: 'https://foo-allow.com:443', | 260 embeddingOrigin: '', |
238 incognito: false, | 261 incognito: false, |
239 origin: 'https://foo-allow.com:443', | 262 origin: 'https://foo-allow.com:443', |
240 setting: 'allow', | 263 setting: 'allow', |
241 source: 'preference', | 264 source: 'preference', |
242 }, | 265 }, |
243 ] | 266 ] |
244 } | 267 } |
245 }; | 268 }; |
246 | 269 |
247 /** | 270 /** |
248 * An example pref with 1 blocked location item. | 271 * An example pref with 1 blocked location item. |
249 * @type {SiteSettingsPref} | 272 * @type {SiteSettingsPref} |
250 */ | 273 */ |
251 var prefsOneDisabled = { | 274 var prefsOneDisabled = { |
252 exceptions: { | 275 exceptions: { |
253 geolocation: [ | 276 geolocation: [ |
254 { | 277 { |
255 embeddingOrigin: 'https://foo-block.com:443', | 278 embeddingOrigin: '', |
256 incognito: false, | 279 incognito: false, |
257 origin: 'https://foo-block.com:443', | 280 origin: 'https://foo-block.com:443', |
258 setting: 'block', | 281 setting: 'block', |
259 source: 'preference', | 282 source: 'preference', |
260 }, | 283 }, |
261 ] | 284 ] |
262 } | 285 } |
263 }; | 286 }; |
264 | 287 |
265 /** | 288 /** |
266 * An example Cookies pref with 1 in each of the three categories. | 289 * An example Cookies pref with 1 in each of the three categories. |
267 * @type {SiteSettingsPref} | 290 * @type {SiteSettingsPref} |
268 */ | 291 */ |
269 var prefsSessionOnly = { | 292 var prefsSessionOnly = { |
270 exceptions: { | 293 exceptions: { |
271 cookies: [ | 294 cookies: [ |
272 { | 295 { |
273 embeddingOrigin: 'http://foo-block.com', | 296 embeddingOrigin: '', |
274 incognito: false, | 297 incognito: false, |
275 origin: 'http://foo-block.com', | 298 origin: 'http://foo-block.com', |
276 setting: 'block', | 299 setting: 'block', |
277 source: 'preference', | 300 source: 'preference', |
278 }, | 301 }, |
279 { | 302 { |
280 embeddingOrigin: 'http://foo-allow.com', | 303 embeddingOrigin: '', |
281 incognito: false, | 304 incognito: false, |
282 origin: 'http://foo-allow.com', | 305 origin: 'http://foo-allow.com', |
283 setting: 'allow', | 306 setting: 'allow', |
284 source: 'preference', | 307 source: 'preference', |
285 }, | 308 }, |
286 { | 309 { |
287 embeddingOrigin: 'http://foo-session.com', | 310 embeddingOrigin: '', |
288 incognito: false, | 311 incognito: false, |
289 origin: 'http://foo-session.com', | 312 origin: 'http://foo-session.com', |
290 setting: 'session_only', | 313 setting: 'session_only', |
291 source: 'preference', | 314 source: 'preference', |
292 }, | 315 }, |
293 ] | 316 ] |
294 } | 317 } |
295 }; | 318 }; |
296 | 319 |
297 /** | 320 /** |
298 * An example Cookies pref with mixed incognito and regular settings. | 321 * An example Cookies pref with mixed incognito and regular settings. |
299 * @type {SiteSettingsPref} | 322 * @type {SiteSettingsPref} |
300 */ | 323 */ |
301 var prefsIncognito = { | 324 var prefsIncognito = { |
302 exceptions: { | 325 exceptions: { |
303 cookies: [ | 326 cookies: [ |
304 // foo.com is blocked for regular sessions. | 327 // foo.com is blocked for regular sessions. |
305 { | 328 { |
306 embeddingOrigin: 'http://foo.com', | 329 embeddingOrigin: '', |
307 incognito: false, | 330 incognito: false, |
308 origin: 'http://foo.com', | 331 origin: 'http://foo.com', |
309 setting: 'block', | 332 setting: 'block', |
310 source: 'preference', | 333 source: 'preference', |
311 }, | 334 }, |
312 // bar.com is an allowed incognito item without an embedder. | 335 // bar.com is an allowed incognito item. |
313 { | 336 { |
314 embeddingOrigin: '', | 337 embeddingOrigin: '', |
315 incognito: true, | 338 incognito: true, |
316 origin: 'http://bar.com', | 339 origin: 'http://bar.com', |
317 setting: 'allow', | 340 setting: 'allow', |
318 source: 'preference', | 341 source: 'preference', |
319 }, | 342 }, |
320 // foo.com is allowed in incognito (overridden). | 343 // foo.com is allowed in incognito (overridden). |
321 { | 344 { |
322 embeddingOrigin: 'http://foo.com', | 345 embeddingOrigin: '', |
323 incognito: true, | 346 incognito: true, |
324 origin: 'http://foo.com', | 347 origin: 'http://foo.com', |
325 setting: 'allow', | 348 setting: 'allow', |
326 source: 'preference', | 349 source: 'preference', |
327 }, | 350 }, |
328 | 351 |
329 ] | 352 ] |
330 } | 353 } |
331 }; | 354 }; |
332 | 355 |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
676 assertMenu(['Allow', 'Clear on exit', 'Edit', 'Remove'], testElement); | 699 assertMenu(['Allow', 'Clear on exit', 'Edit', 'Remove'], testElement); |
677 | 700 |
678 // Select 'Remove' from menu. | 701 // Select 'Remove' from menu. |
679 var remove = testElement.$.reset; | 702 var remove = testElement.$.reset; |
680 assertTrue(!!remove); | 703 assertTrue(!!remove); |
681 MockInteractions.tap(remove); | 704 MockInteractions.tap(remove); |
682 return browserProxy.whenCalled('resetCategoryPermissionForOrigin'); | 705 return browserProxy.whenCalled('resetCategoryPermissionForOrigin'); |
683 }) | 706 }) |
684 .then(function(args) { | 707 .then(function(args) { |
685 assertEquals('http://foo.com', args[0]); | 708 assertEquals('http://foo.com', args[0]); |
686 assertEquals('http://foo.com', args[1]); | 709 assertEquals('', args[1]); |
687 assertEquals(contentType, args[2]); | 710 assertEquals(contentType, args[2]); |
688 assertFalse(args[3]); // Incognito. | 711 assertFalse(args[3]); // Incognito. |
689 }); | 712 }); |
690 }); | 713 }); |
691 | 714 |
692 test('initial INCOGNITO ALLOW state is correct', function() { | 715 test('initial INCOGNITO ALLOW state is correct', function() { |
693 var contentType = settings.ContentSettingsTypes.COOKIES; | 716 var contentType = settings.ContentSettingsTypes.COOKIES; |
694 var categorySubtype = settings.PermissionValues.ALLOW; | 717 var categorySubtype = settings.PermissionValues.ALLOW; |
695 setUpCategory(contentType, categorySubtype, prefsIncognito); | 718 setUpCategory(contentType, categorySubtype, prefsIncognito); |
696 return browserProxy.whenCalled('getExceptionList') | 719 return browserProxy.whenCalled('getExceptionList') |
(...skipping 17 matching lines...) Expand all Loading... |
714 | 737 |
715 // Select 'Remove' from menu on 'foo.com'. | 738 // Select 'Remove' from menu on 'foo.com'. |
716 openActionMenu(1); | 739 openActionMenu(1); |
717 var remove = testElement.$.reset; | 740 var remove = testElement.$.reset; |
718 assertTrue(!!remove); | 741 assertTrue(!!remove); |
719 MockInteractions.tap(remove); | 742 MockInteractions.tap(remove); |
720 return browserProxy.whenCalled('resetCategoryPermissionForOrigin'); | 743 return browserProxy.whenCalled('resetCategoryPermissionForOrigin'); |
721 }) | 744 }) |
722 .then(function(args) { | 745 .then(function(args) { |
723 assertEquals('http://foo.com', args[0]); | 746 assertEquals('http://foo.com', args[0]); |
724 assertEquals('http://foo.com', args[1]); | 747 assertEquals('', args[1]); |
725 assertEquals(contentType, args[2]); | 748 assertEquals(contentType, args[2]); |
726 assertTrue(args[3]); // Incognito. | 749 assertTrue(args[3]); // Incognito. |
727 }); | 750 }); |
728 }); | 751 }); |
729 | 752 |
730 test('reset button works for read-only content types', function() { | 753 test('reset button works for read-only content types', function() { |
731 testElement.readOnlyList = true; | 754 testElement.readOnlyList = true; |
732 Polymer.dom.flush(); | 755 Polymer.dom.flush(); |
733 | 756 |
734 var contentType = settings.ContentSettingsTypes.GEOLOCATION; | 757 var contentType = settings.ContentSettingsTypes.GEOLOCATION; |
(...skipping 21 matching lines...) Expand all Loading... |
756 // Assert reset button is visible. | 779 // Assert reset button is visible. |
757 var resetButton = item.querySelector('#resetSite'); | 780 var resetButton = item.querySelector('#resetSite'); |
758 assertTrue(!!resetButton); | 781 assertTrue(!!resetButton); |
759 assertFalse(resetButton.hidden); | 782 assertFalse(resetButton.hidden); |
760 | 783 |
761 MockInteractions.tap(resetButton); | 784 MockInteractions.tap(resetButton); |
762 return browserProxy.whenCalled('resetCategoryPermissionForOrigin'); | 785 return browserProxy.whenCalled('resetCategoryPermissionForOrigin'); |
763 }) | 786 }) |
764 .then(function(args) { | 787 .then(function(args) { |
765 assertEquals('https://foo-allow.com:443', args[0]); | 788 assertEquals('https://foo-allow.com:443', args[0]); |
766 assertEquals('https://foo-allow.com:443', args[1]); | 789 assertEquals('', args[1]); |
767 assertEquals(contentType, args[2]); | 790 assertEquals(contentType, args[2]); |
768 }); | 791 }); |
769 }); | 792 }); |
770 | 793 |
771 test('edit action menu opens edit exception dialog', function() { | 794 test('edit action menu opens edit exception dialog', function() { |
772 setUpCategory( | 795 setUpCategory( |
773 settings.ContentSettingsTypes.COOKIES, | 796 settings.ContentSettingsTypes.COOKIES, |
774 settings.PermissionValues.SESSION_ONLY, prefsSessionOnly); | 797 settings.PermissionValues.SESSION_ONLY, prefsSessionOnly); |
775 | 798 |
776 return browserProxy.whenCalled('getExceptionList').then(function() { | 799 return browserProxy.whenCalled('getExceptionList').then(function() { |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1005 MockInteractions.tap(clickable); | 1028 MockInteractions.tap(clickable); |
1006 if (testElement.sites.length == 1) { | 1029 if (testElement.sites.length == 1) { |
1007 assertEquals( | 1030 assertEquals( |
1008 prefsMixedOriginAndPattern.exceptions.geolocation[0].origin, | 1031 prefsMixedOriginAndPattern.exceptions.geolocation[0].origin, |
1009 testElement.sites[0].displayName); | 1032 testElement.sites[0].displayName); |
1010 } | 1033 } |
1011 }); | 1034 }); |
1012 }); | 1035 }); |
1013 }); | 1036 }); |
1014 | 1037 |
| 1038 test('Mixed embeddingOrigin', function() { |
| 1039 setUpCategory( |
| 1040 settings.ContentSettingsTypes.IMAGES, settings.PermissionValues.ALLOW, |
| 1041 prefsMixedEmbeddingOrigin); |
| 1042 return browserProxy.whenCalled('getExceptionList') |
| 1043 .then(function(contentType) { |
| 1044 // Required for firstItem to be found below. |
| 1045 Polymer.dom.flush(); |
| 1046 // Validate that embeddingOrigin sites cannot be edited. |
| 1047 var firstItem = testElement.$.listContainer.children[0]; |
| 1048 assertTrue(firstItem.querySelector('#actionMenuButton').hidden); |
| 1049 assertFalse(firstItem.querySelector('#resetSite').hidden); |
| 1050 // Validate that non-embeddingOrigin sites can be edited. |
| 1051 var secondItem = testElement.$.listContainer.children[1]; |
| 1052 assertFalse(secondItem.querySelector('#actionMenuButton').hidden); |
| 1053 assertTrue(secondItem.querySelector('#resetSite').hidden); |
| 1054 }); |
| 1055 }); |
| 1056 |
1015 test('Mixed schemes (present and absent)', function() { | 1057 test('Mixed schemes (present and absent)', function() { |
1016 // Prefs: One item with scheme and one without. | 1058 // Prefs: One item with scheme and one without. |
1017 setUpCategory( | 1059 setUpCategory( |
1018 settings.ContentSettingsTypes.GEOLOCATION, | 1060 settings.ContentSettingsTypes.GEOLOCATION, |
1019 settings.PermissionValues.ALLOW, prefsMixedSchemes); | 1061 settings.PermissionValues.ALLOW, prefsMixedSchemes); |
1020 return browserProxy.whenCalled('getExceptionList') | 1062 return browserProxy.whenCalled('getExceptionList') |
1021 .then(function(contentType) { | 1063 .then(function(contentType) { |
1022 // No further checks needed. If this fails, it will hang the test. | 1064 // No further checks needed. If this fails, it will hang the test. |
1023 }); | 1065 }); |
1024 }); | 1066 }); |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1205 input.value = expectedPattern; | 1247 input.value = expectedPattern; |
1206 input.fire('input'); | 1248 input.fire('input'); |
1207 | 1249 |
1208 return browserProxy.whenCalled('isPatternValid').then(function(pattern) { | 1250 return browserProxy.whenCalled('isPatternValid').then(function(pattern) { |
1209 assertEquals(expectedPattern, pattern); | 1251 assertEquals(expectedPattern, pattern); |
1210 assertTrue(actionButton.disabled); | 1252 assertTrue(actionButton.disabled); |
1211 assertTrue(input.invalid); | 1253 assertTrue(input.invalid); |
1212 }); | 1254 }); |
1213 }); | 1255 }); |
1214 }); | 1256 }); |
OLD | NEW |