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', function() { | 6 suite('SiteDetails', function() { |
7 function registerTests() { | 7 /** |
8 suite('SiteDetails', function() { | 8 * A site list element created before each test. |
9 /** | 9 * @type {SiteDetails} |
10 * A site list element created before each test. | 10 */ |
11 * @type {SiteDetails} | 11 var testElement; |
12 */ | |
13 var testElement; | |
14 | 12 |
15 /** | 13 /** |
16 * An example pref with 1 allowed in each category. | 14 * An example pref with 1 allowed in each category. |
17 */ | 15 */ |
18 var prefs = { | 16 var prefs = { |
19 exceptions: { | 17 exceptions: { |
20 auto_downloads: [ | 18 auto_downloads: [ |
21 { | 19 { |
22 embeddingOrigin: 'https://foo-allow.com:443', | 20 embeddingOrigin: 'https://foo-allow.com:443', |
23 origin: 'https://foo-allow.com:443', | 21 origin: 'https://foo-allow.com:443', |
24 setting: 'allow', | 22 setting: 'allow', |
25 source: 'preference', | 23 source: 'preference', |
26 }, | 24 }, |
27 ], | 25 ], |
28 background_sync: [ | 26 background_sync: [ |
29 { | 27 { |
30 embeddingOrigin: 'https://foo-allow.com:443', | 28 embeddingOrigin: 'https://foo-allow.com:443', |
31 origin: 'https://foo-allow.com:443', | 29 origin: 'https://foo-allow.com:443', |
32 setting: 'allow', | 30 setting: 'allow', |
33 source: 'preference', | 31 source: 'preference', |
34 }, | 32 }, |
35 ], | 33 ], |
36 camera: [ | 34 camera: [ |
37 { | 35 { |
38 embeddingOrigin: 'https://foo-allow.com:443', | 36 embeddingOrigin: 'https://foo-allow.com:443', |
39 origin: 'https://foo-allow.com:443', | 37 origin: 'https://foo-allow.com:443', |
40 setting: 'allow', | 38 setting: 'allow', |
41 source: 'preference', | 39 source: 'preference', |
42 }, | 40 }, |
43 ], | 41 ], |
44 cookies: [ | 42 cookies: [ |
45 { | 43 { |
46 embeddingOrigin: 'https://foo-allow.com:443', | 44 embeddingOrigin: 'https://foo-allow.com:443', |
47 origin: 'https://foo-allow.com:443', | 45 origin: 'https://foo-allow.com:443', |
48 setting: 'allow', | 46 setting: 'allow', |
49 source: 'preference', | 47 source: 'preference', |
50 }, | 48 }, |
51 ], | 49 ], |
52 geolocation: [ | 50 geolocation: [ |
53 { | 51 { |
54 embeddingOrigin: 'https://foo-allow.com:443', | 52 embeddingOrigin: 'https://foo-allow.com:443', |
55 origin: 'https://foo-allow.com:443', | 53 origin: 'https://foo-allow.com:443', |
56 setting: 'allow', | 54 setting: 'allow', |
57 source: 'preference', | 55 source: 'preference', |
58 }, | 56 }, |
59 ], | 57 ], |
60 javascript: [ | 58 javascript: [ |
61 { | 59 { |
62 embeddingOrigin: 'https://foo-allow.com:443', | 60 embeddingOrigin: 'https://foo-allow.com:443', |
63 origin: 'https://foo-allow.com:443', | 61 origin: 'https://foo-allow.com:443', |
64 setting: 'allow', | 62 setting: 'allow', |
65 source: 'preference', | 63 source: 'preference', |
66 }, | 64 }, |
67 ], | 65 ], |
68 mic: [ | 66 mic: [ |
69 { | 67 { |
70 embeddingOrigin: 'https://foo-allow.com:443', | 68 embeddingOrigin: 'https://foo-allow.com:443', |
71 origin: 'https://foo-allow.com:443', | 69 origin: 'https://foo-allow.com:443', |
72 setting: 'allow', | 70 setting: 'allow', |
73 source: 'preference', | 71 source: 'preference', |
74 }, | 72 }, |
75 ], | 73 ], |
76 notifications: [ | 74 notifications: [ |
77 { | 75 { |
78 embeddingOrigin: 'https://foo-allow.com:443', | 76 embeddingOrigin: 'https://foo-allow.com:443', |
79 origin: 'https://foo-allow.com:443', | 77 origin: 'https://foo-allow.com:443', |
80 setting: 'allow', | 78 setting: 'allow', |
81 source: 'preference', | 79 source: 'preference', |
82 }, | 80 }, |
83 ], | 81 ], |
84 plugins: [ | 82 plugins: [ |
85 { | 83 { |
86 embeddingOrigin: 'https://foo-allow.com:443', | 84 embeddingOrigin: 'https://foo-allow.com:443', |
87 origin: 'https://foo-allow.com:443', | 85 origin: 'https://foo-allow.com:443', |
88 setting: 'allow', | 86 setting: 'allow', |
89 source: 'preference', | 87 source: 'preference', |
90 }, | 88 }, |
91 ], | 89 ], |
92 popups: [ | 90 popups: [ |
93 { | 91 { |
94 embeddingOrigin: 'https://foo-allow.com:443', | 92 embeddingOrigin: 'https://foo-allow.com:443', |
95 origin: 'https://foo-allow.com:443', | 93 origin: 'https://foo-allow.com:443', |
96 setting: 'allow', | 94 setting: 'allow', |
97 source: 'preference', | 95 source: 'preference', |
98 }, | 96 }, |
99 ], | 97 ], |
100 unsandboxed_plugins: [ | 98 unsandboxed_plugins: [ |
101 { | 99 { |
102 embeddingOrigin: 'https://foo-allow.com:443', | 100 embeddingOrigin: 'https://foo-allow.com:443', |
103 origin: 'https://foo-allow.com:443', | 101 origin: 'https://foo-allow.com:443', |
104 setting: 'allow', | 102 setting: 'allow', |
105 source: 'preference', | 103 source: 'preference', |
106 }, | 104 }, |
107 ], | 105 ], |
108 } | 106 } |
109 }; | 107 }; |
110 | 108 |
111 // Initialize a site-details before each test. | 109 // Initialize a site-details before each test. |
112 setup(function() { | 110 setup(function() { |
113 browserProxy = new TestSiteSettingsPrefsBrowserProxy(); | 111 browserProxy = new TestSiteSettingsPrefsBrowserProxy(); |
114 settings.SiteSettingsPrefsBrowserProxyImpl.instance_ = browserProxy; | 112 settings.SiteSettingsPrefsBrowserProxyImpl.instance_ = browserProxy; |
115 PolymerTest.clearBody(); | 113 PolymerTest.clearBody(); |
116 testElement = document.createElement('site-details'); | 114 testElement = document.createElement('site-details'); |
117 document.body.appendChild(testElement); | 115 document.body.appendChild(testElement); |
118 }); | 116 }); |
119 | 117 |
120 test('empty state', function() { | 118 test('empty state', function() { |
121 var category = settings.ContentSettingsTypes.NOTIFICATIONS; | 119 var category = settings.ContentSettingsTypes.NOTIFICATIONS; |
122 var site = { | 120 var site = { |
123 origin: 'http://www.google.com', | 121 origin: 'http://www.google.com', |
124 displayName: 'http://www.google.com', | 122 displayName: 'http://www.google.com', |
125 embeddingOrigin: '', | 123 embeddingOrigin: '', |
126 }; | 124 }; |
127 browserProxy.setPrefs(prefsEmpty); | 125 browserProxy.setPrefs(prefsEmpty); |
128 testElement.category = category; | 126 testElement.category = category; |
129 testElement.site = site | 127 testElement.site = site |
130 | 128 |
131 //expect usage to not be rendered | 129 // expect usage to not be rendered |
132 assertFalse(!!testElement.$$('#usage')); | 130 assertFalse(!!testElement.$$('#usage')); |
133 | 131 |
134 // TODO(finnur): Check for the Permission heading hiding when no | 132 // TODO(finnur): Check for the Permission heading hiding when no |
135 // permissions are showing. | 133 // permissions are showing. |
136 | 134 |
137 var msg = 'No category should be showing, height'; | 135 var msg = 'No category should be showing, height'; |
138 assertEquals(0, testElement.$.camera.offsetHeight, msg); | 136 assertEquals(0, testElement.$.camera.offsetHeight, msg); |
139 assertEquals(0, testElement.$.cookies.offsetHeight, msg); | 137 assertEquals(0, testElement.$.cookies.offsetHeight, msg); |
140 assertEquals(0, testElement.$.geolocation.offsetHeight, msg); | 138 assertEquals(0, testElement.$.geolocation.offsetHeight, msg); |
141 assertEquals(0, testElement.$.javascript.offsetHeight, msg); | 139 assertEquals(0, testElement.$.javascript.offsetHeight, msg); |
142 assertEquals(0, testElement.$.mic.offsetHeight, msg); | 140 assertEquals(0, testElement.$.mic.offsetHeight, msg); |
143 assertEquals(0, testElement.$.notification.offsetHeight, msg); | 141 assertEquals(0, testElement.$.notification.offsetHeight, msg); |
144 assertEquals(0, testElement.$.popups.offsetHeight, msg); | 142 assertEquals(0, testElement.$.popups.offsetHeight, msg); |
145 }); | 143 }); |
146 | 144 |
147 test('all categories visible', function() { | 145 test('all categories visible', function() { |
148 var category = settings.ContentSettingsTypes.NOTIFICATIONS; | 146 var category = settings.ContentSettingsTypes.NOTIFICATIONS; |
149 var site = { | 147 var site = { |
150 origin: 'https://foo-allow.com:443', | 148 origin: 'https://foo-allow.com:443', |
151 displayName: 'https://foo-allow.com:443', | 149 displayName: 'https://foo-allow.com:443', |
152 embeddingOrigin: '', | 150 embeddingOrigin: '', |
153 }; | 151 }; |
154 | 152 |
155 browserProxy.setPrefs(prefs); | 153 browserProxy.setPrefs(prefs); |
156 testElement.category = category; | 154 testElement.category = category; |
157 testElement.site = site; | 155 testElement.site = site; |
158 | 156 |
159 var msg = 'All categories should be showing'; | 157 var msg = 'All categories should be showing'; |
160 assertFalse(testElement.$.camera.hidden, msg); | 158 assertFalse(testElement.$.camera.hidden, msg); |
161 assertFalse(testElement.$.cookies.hidden, msg); | 159 assertFalse(testElement.$.cookies.hidden, msg); |
162 assertFalse(testElement.$.geolocation.hidden, msg); | 160 assertFalse(testElement.$.geolocation.hidden, msg); |
163 assertFalse(testElement.$.javascript.hidden, msg); | 161 assertFalse(testElement.$.javascript.hidden, msg); |
164 assertFalse(testElement.$.mic.hidden, msg); | 162 assertFalse(testElement.$.mic.hidden, msg); |
165 assertFalse(testElement.$.notification.hidden, msg); | 163 assertFalse(testElement.$.notification.hidden, msg); |
166 assertFalse(testElement.$.popups.hidden, msg); | 164 assertFalse(testElement.$.popups.hidden, msg); |
167 }); | 165 }); |
168 | 166 |
169 test('usage heading shows on storage available', function() { | 167 test('usage heading shows on storage available', function() { |
170 // Remove the current website-usage-private-api element. | 168 // Remove the current website-usage-private-api element. |
171 var parent = testElement.$.usageApi.parentNode; | 169 var parent = testElement.$.usageApi.parentNode; |
172 testElement.$.usageApi.remove(); | 170 testElement.$.usageApi.remove(); |
173 | 171 |
174 // Replace it with a mock version. | 172 // Replace it with a mock version. |
175 Polymer({ | 173 Polymer({ |
176 is: 'mock-website-usage-private-api', | 174 is: 'mock-website-usage-private-api', |
177 | 175 |
178 fetchUsageTotal: function(origin) { | 176 fetchUsageTotal: function(origin) { |
179 testElement.storedData_ = '1 KB'; | 177 testElement.storedData_ = '1 KB'; |
180 }, | 178 }, |
181 }); | 179 }); |
182 var api = document.createElement('mock-website-usage-private-api'); | 180 var api = document.createElement('mock-website-usage-private-api'); |
183 testElement.$.usageApi = api; | 181 testElement.$.usageApi = api; |
184 Polymer.dom(parent).appendChild(api); | 182 Polymer.dom(parent).appendChild(api); |
185 | 183 |
186 browserProxy.setPrefs(prefs); | 184 browserProxy.setPrefs(prefs); |
187 testElement.site = { | 185 testElement.site = { |
188 origin: 'https://foo-allow.com:443', | 186 origin: 'https://foo-allow.com:443', |
189 displayName: 'https://foo-allow.com:443', | 187 displayName: 'https://foo-allow.com:443', |
190 embeddingOrigin: '', | 188 embeddingOrigin: '', |
191 }; | 189 }; |
192 | 190 |
193 Polymer.dom.flush(); | 191 Polymer.dom.flush(); |
194 | 192 |
195 //expect usage to be rendered | 193 // expect usage to be rendered |
196 assertTrue(!!testElement.$$('#usage')); | 194 assertTrue(!!testElement.$$('#usage')); |
197 }); | 195 }); |
198 }); | |
199 } | |
200 return { | |
201 registerTests: registerTests, | |
202 }; | |
203 }); | 196 }); |
OLD | NEW |