| 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 |