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-details. */ | 5 /** @fileoverview Suite of tests for site-details. */ |
6 cr.define('site_details_permission', function() { | 6 suite('SiteDetailsPermission', function() { |
7 function registerTests() { | 7 /** |
8 suite('SiteDetailsPermission', function() { | 8 * A site list element created before each test. |
9 /** | 9 * @type {SiteDetailsPermission} |
10 * A site list element created before each test. | 10 */ |
11 * @type {SiteDetailsPermission} | 11 var testElement; |
12 */ | |
13 var testElement; | |
14 | 12 |
15 /** | 13 /** |
16 * An example pref with only camera allowed. | 14 * An example pref with only camera allowed. |
17 */ | 15 */ |
18 var prefs = { | 16 var prefs = { |
19 exceptions: { | 17 exceptions: { |
20 camera: [ | 18 camera: [ |
21 { | 19 { |
22 embeddingOrigin: '', | 20 embeddingOrigin: '', |
23 origin: 'https://www.example.com', | 21 origin: 'https://www.example.com', |
24 setting: 'allow', | 22 setting: 'allow', |
25 source: 'preference', | 23 source: 'preference', |
26 }, | 24 }, |
27 ] | 25 ] |
28 } | 26 } |
29 }; | 27 }; |
30 | 28 |
31 /** | 29 /** |
32 * An example pref with only one entry allowed. | 30 * An example pref with only one entry allowed. |
33 */ | 31 */ |
34 var prefsCookies = { | 32 var prefsCookies = { |
35 exceptions: { | 33 exceptions: { |
36 cookies: [ | 34 cookies: [ |
37 { | 35 { |
38 embeddingOrigin: '', | 36 embeddingOrigin: '', |
39 origin: 'https://www.example.com', | 37 origin: 'https://www.example.com', |
40 setting: 'allow', | 38 setting: 'allow', |
41 source: 'preference', | 39 source: 'preference', |
42 }, | 40 }, |
43 ] | 41 ] |
44 } | 42 } |
45 }; | 43 }; |
46 | 44 |
47 // Initialize a site-details-permission before each test. | 45 // Initialize a site-details-permission before each test. |
48 setup(function() { | 46 setup(function() { |
49 browserProxy = new TestSiteSettingsPrefsBrowserProxy(); | 47 browserProxy = new TestSiteSettingsPrefsBrowserProxy(); |
50 settings.SiteSettingsPrefsBrowserProxyImpl.instance_ = browserProxy; | 48 settings.SiteSettingsPrefsBrowserProxyImpl.instance_ = browserProxy; |
51 PolymerTest.clearBody(); | 49 PolymerTest.clearBody(); |
52 testElement = document.createElement('site-details-permission'); | 50 testElement = document.createElement('site-details-permission'); |
53 document.body.appendChild(testElement); | 51 document.body.appendChild(testElement); |
54 }); | 52 }); |
55 | 53 |
56 // Tests that the given value is converted to the expected value, for a | 54 // Tests that the given value is converted to the expected value, for a |
57 // given prefType. | 55 // given prefType. |
58 function isAllowed(origin, exceptionList) { | 56 function isAllowed(origin, exceptionList) { |
59 for (var i = 0; i < exceptionList.length; ++i) { | 57 for (var i = 0; i < exceptionList.length; ++i) { |
60 if (exceptionList[i].origin == origin) | 58 if (exceptionList[i].origin == origin) |
61 return exceptionList[i].setting == 'allow'; | 59 return exceptionList[i].setting == 'allow'; |
62 } | 60 } |
63 return false; | 61 return false; |
64 }; | 62 }; |
65 | 63 |
66 function validatePermissionFlipWorks(origin, expectedPermissionValue) { | 64 function validatePermissionFlipWorks(origin, expectedPermissionValue) { |
67 browserProxy.resetResolver('setCategoryPermissionForOrigin'); | 65 browserProxy.resetResolver('setCategoryPermissionForOrigin'); |
68 | 66 |
69 // Simulate permission change initiated by the user. | 67 // Simulate permission change initiated by the user. |
70 testElement.$.permission.value = expectedPermissionValue; | 68 testElement.$.permission.value = expectedPermissionValue; |
71 testElement.$.permission.dispatchEvent(new CustomEvent('change')); | 69 testElement.$.permission.dispatchEvent(new CustomEvent('change')); |
72 | 70 |
73 return browserProxy.whenCalled('setCategoryPermissionForOrigin').then( | 71 return browserProxy.whenCalled('setCategoryPermissionForOrigin') |
74 function(args) { | 72 .then(function(args) { |
75 assertEquals(origin, args[0]); | 73 assertEquals(origin, args[0]); |
76 assertEquals('', args[1]); | 74 assertEquals('', args[1]); |
77 assertEquals(testElement.category, args[2]); | 75 assertEquals(testElement.category, args[2]); |
78 assertEquals(expectedPermissionValue, args[3]); | 76 assertEquals(expectedPermissionValue, args[3]); |
79 }); | 77 }); |
80 }; | 78 }; |
81 | 79 |
82 test('empty state', function() { | 80 test('empty state', function() { |
83 browserProxy.setPrefs(prefsEmpty); | 81 browserProxy.setPrefs(prefsEmpty); |
84 testElement.category = settings.ContentSettingsTypes.CAMERA; | 82 testElement.category = settings.ContentSettingsTypes.CAMERA; |
85 testElement.site = { | 83 testElement.site = { |
86 origin: 'http://www.google.com', | 84 origin: 'http://www.google.com', |
87 embeddingOrigin: '', | 85 embeddingOrigin: '', |
88 }; | 86 }; |
89 | 87 |
90 return browserProxy.whenCalled('getExceptionList').then(function() { | 88 return browserProxy.whenCalled('getExceptionList').then(function() { |
91 assertTrue(testElement.$.details.hidden); | 89 assertTrue(testElement.$.details.hidden); |
92 }); | 90 }); |
93 }); | 91 }); |
94 | 92 |
95 test('camera category', function() { | 93 test('camera category', function() { |
96 var origin = 'https://www.example.com'; | 94 var origin = 'https://www.example.com'; |
97 browserProxy.setPrefs(prefs); | 95 browserProxy.setPrefs(prefs); |
98 testElement.category = settings.ContentSettingsTypes.CAMERA; | 96 testElement.category = settings.ContentSettingsTypes.CAMERA; |
99 testElement.label = 'Camera'; | 97 testElement.label = 'Camera'; |
100 testElement.site = { | 98 testElement.site = { |
101 origin: origin, | 99 origin: origin, |
102 embeddingOrigin: '', | 100 embeddingOrigin: '', |
103 }; | 101 }; |
104 | 102 |
105 return browserProxy.whenCalled('getExceptionList').then(function() { | 103 return browserProxy.whenCalled('getExceptionList') |
| 104 .then(function() { |
106 assertFalse(testElement.$.details.hidden); | 105 assertFalse(testElement.$.details.hidden); |
107 | 106 |
108 var header = testElement.$.details.querySelector( | 107 var header = testElement.$.details.querySelector('#permissionHeader'); |
109 '#permissionHeader'); | 108 assertEquals( |
110 assertEquals('Camera', header.innerText.trim(), | 109 'Camera', header.innerText.trim(), |
111 'Widget should be labelled correctly'); | 110 'Widget should be labelled correctly'); |
112 | 111 |
113 // Flip the permission and validate that prefs stay in sync. | 112 // Flip the permission and validate that prefs stay in sync. |
114 return validatePermissionFlipWorks( | 113 return validatePermissionFlipWorks( |
115 origin, settings.PermissionValues.ALLOW); | 114 origin, settings.PermissionValues.ALLOW); |
116 }).then(function() { | 115 }) |
| 116 .then(function() { |
117 return validatePermissionFlipWorks( | 117 return validatePermissionFlipWorks( |
118 origin, settings.PermissionValues.BLOCK); | 118 origin, settings.PermissionValues.BLOCK); |
119 }).then(function() { | 119 }) |
| 120 .then(function() { |
120 return validatePermissionFlipWorks( | 121 return validatePermissionFlipWorks( |
121 origin, settings.PermissionValues.ALLOW); | 122 origin, settings.PermissionValues.ALLOW); |
122 }); | 123 }); |
123 }); | 124 }); |
124 | 125 |
125 test('cookies category', function() { | 126 test('cookies category', function() { |
126 var origin = 'https://www.example.com'; | 127 var origin = 'https://www.example.com'; |
127 browserProxy.setPrefs(prefsCookies); | 128 browserProxy.setPrefs(prefsCookies); |
128 testElement.category = settings.ContentSettingsTypes.COOKIES; | 129 testElement.category = settings.ContentSettingsTypes.COOKIES; |
129 testElement.label = 'Cookies'; | 130 testElement.label = 'Cookies'; |
130 testElement.site = { | 131 testElement.site = { |
131 origin: origin, | 132 origin: origin, |
132 embeddingOrigin: '', | 133 embeddingOrigin: '', |
133 }; | 134 }; |
134 | 135 |
135 return browserProxy.whenCalled('getExceptionList').then(function() { | 136 return browserProxy.whenCalled('getExceptionList') |
| 137 .then(function() { |
136 assertFalse(testElement.$.details.hidden); | 138 assertFalse(testElement.$.details.hidden); |
137 | 139 |
138 var header = testElement.$.details.querySelector( | 140 var header = testElement.$.details.querySelector('#permissionHeader'); |
139 '#permissionHeader'); | 141 assertEquals( |
140 assertEquals('Cookies', header.innerText.trim(), | 142 'Cookies', header.innerText.trim(), |
141 'Widget should be labelled correctly'); | 143 'Widget should be labelled correctly'); |
142 | 144 |
143 return validatePermissionFlipWorks( | 145 return validatePermissionFlipWorks( |
144 origin, settings.PermissionValues.SESSION_ONLY); | 146 origin, settings.PermissionValues.SESSION_ONLY); |
145 }).then(function() { | 147 }) |
| 148 .then(function() { |
146 // Flip the permission and validate that prefs stay in sync. | 149 // Flip the permission and validate that prefs stay in sync. |
147 return validatePermissionFlipWorks( | 150 return validatePermissionFlipWorks( |
148 origin, settings.PermissionValues.ALLOW); | 151 origin, settings.PermissionValues.ALLOW); |
149 }).then(function() { | 152 }) |
| 153 .then(function() { |
150 return validatePermissionFlipWorks( | 154 return validatePermissionFlipWorks( |
151 origin, settings.PermissionValues.BLOCK); | 155 origin, settings.PermissionValues.BLOCK); |
152 }); | 156 }); |
153 }); | 157 }); |
154 | 158 |
155 test('disappear on empty', function() { | 159 test('disappear on empty', function() { |
156 var origin = "https://www.example.com"; | 160 var origin = 'https://www.example.com'; |
157 browserProxy.setPrefs(prefs); | 161 browserProxy.setPrefs(prefs); |
158 testElement.category = settings.ContentSettingsTypes.CAMERA; | 162 testElement.category = settings.ContentSettingsTypes.CAMERA; |
159 testElement.site = { | 163 testElement.site = { |
160 origin: origin, | 164 origin: origin, |
161 embeddingOrigin: '', | 165 embeddingOrigin: '', |
162 }; | 166 }; |
163 | 167 |
164 return browserProxy.whenCalled('getExceptionList').then(function() { | 168 return browserProxy.whenCalled('getExceptionList') |
| 169 .then(function() { |
165 assertFalse(testElement.$.details.hidden); | 170 assertFalse(testElement.$.details.hidden); |
166 | 171 |
167 browserProxy.setPrefs(prefsEmpty); | 172 browserProxy.setPrefs(prefsEmpty); |
168 return browserProxy.whenCalled('getExceptionList'); | 173 return browserProxy.whenCalled('getExceptionList'); |
169 }).then(function() { | 174 }) |
| 175 .then(function() { |
170 assertTrue(testElement.$.details.hidden); | 176 assertTrue(testElement.$.details.hidden); |
171 }); | 177 }); |
172 }); | 178 }); |
173 }); | |
174 } | |
175 return { | |
176 registerTests: registerTests, | |
177 }; | |
178 }); | 179 }); |
OLD | NEW |