| 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 cr.define('site_details_permission', function() { |
| 7 function registerTests() { | 7 function registerTests() { |
| 8 suite('SiteDetailsPermission', function() { | 8 suite('SiteDetailsPermission', function() { |
| 9 /** | 9 /** |
| 10 * A site list element created before each test. | 10 * A site list element created before each test. |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 // Tests that the given value is converted to the expected value, for a | 63 // Tests that the given value is converted to the expected value, for a |
| 64 // given prefType. | 64 // given prefType. |
| 65 function isAllowed(origin, exceptionList) { | 65 function isAllowed(origin, exceptionList) { |
| 66 for (var i = 0; i < exceptionList.length; ++i) { | 66 for (var i = 0; i < exceptionList.length; ++i) { |
| 67 if (exceptionList[i].origin == origin) | 67 if (exceptionList[i].origin == origin) |
| 68 return exceptionList[i].setting == 'allow'; | 68 return exceptionList[i].setting == 'allow'; |
| 69 } | 69 } |
| 70 return false; | 70 return false; |
| 71 }; | 71 }; |
| 72 | 72 |
| 73 function validatePermissionFlipWorks(origin, allow) { | 73 function validatePermissionFlipWorks(origin, expectedPermissionValue) { |
| 74 MockInteractions.tap(allow ? testElement.$.allow : testElement.$.block); | 74 browserProxy.resetResolver('setCategoryPermissionForOrigin'); |
| 75 |
| 76 // Simulate permission change initiated by the user. |
| 77 testElement.$.permission.value = expectedPermissionValue; |
| 78 testElement.$.permission.dispatchEvent(new CustomEvent('change')); |
| 79 |
| 75 return browserProxy.whenCalled('setCategoryPermissionForOrigin').then( | 80 return browserProxy.whenCalled('setCategoryPermissionForOrigin').then( |
| 76 function(arguments) { | 81 function(args) { |
| 77 assertEquals(origin, arguments[0]); | 82 assertEquals(origin, args[0]); |
| 78 assertEquals('', arguments[1]); | 83 assertEquals('', args[1]); |
| 79 assertEquals(testElement.category, arguments[2]); | 84 assertEquals(testElement.category, args[2]); |
| 80 assertEquals(allow ? | 85 assertEquals(expectedPermissionValue, args[3]); |
| 81 settings.PermissionValues.ALLOW : | |
| 82 settings.PermissionValues.BLOCK, arguments[3]); | |
| 83 }); | 86 }); |
| 84 }; | 87 }; |
| 85 | 88 |
| 86 test('empty state', function() { | 89 test('empty state', function() { |
| 87 browserProxy.setPrefs(prefsEmpty); | 90 browserProxy.setPrefs(prefsEmpty); |
| 88 testElement.category = settings.ContentSettingsTypes.CAMERA; | 91 testElement.category = settings.ContentSettingsTypes.CAMERA; |
| 89 testElement.site = { | 92 testElement.site = { |
| 90 origin: 'http://www.google.com', | 93 origin: 'http://www.google.com', |
| 91 embeddingOrigin: '', | 94 embeddingOrigin: '', |
| 92 }; | 95 }; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 107 | 110 |
| 108 return browserProxy.whenCalled('getExceptionList').then(function() { | 111 return browserProxy.whenCalled('getExceptionList').then(function() { |
| 109 assertFalse(testElement.$.details.hidden); | 112 assertFalse(testElement.$.details.hidden); |
| 110 | 113 |
| 111 var header = testElement.$.details.querySelector( | 114 var header = testElement.$.details.querySelector( |
| 112 '#permissionHeader'); | 115 '#permissionHeader'); |
| 113 assertEquals('Camera', header.innerText.trim(), | 116 assertEquals('Camera', header.innerText.trim(), |
| 114 'Widget should be labelled correctly'); | 117 'Widget should be labelled correctly'); |
| 115 | 118 |
| 116 // Flip the permission and validate that prefs stay in sync. | 119 // Flip the permission and validate that prefs stay in sync. |
| 117 return validatePermissionFlipWorks(origin, true); | 120 return validatePermissionFlipWorks( |
| 121 origin, settings.PermissionValues.ALLOW); |
| 118 }).then(function() { | 122 }).then(function() { |
| 119 browserProxy.resetResolver('setCategoryPermissionForOrigin'); | 123 return validatePermissionFlipWorks( |
| 120 return validatePermissionFlipWorks(origin, false); | 124 origin, settings.PermissionValues.BLOCK); |
| 121 }).then(function() { | 125 }).then(function() { |
| 122 browserProxy.resetResolver('setCategoryPermissionForOrigin'); | 126 return validatePermissionFlipWorks( |
| 123 return validatePermissionFlipWorks(origin, true); | 127 origin, settings.PermissionValues.ALLOW); |
| 124 }); | 128 }); |
| 125 }); | 129 }); |
| 126 | 130 |
| 127 test('cookies category', function() { | 131 test('cookies category', function() { |
| 128 var origin = "https://www.example.com"; | 132 var origin = "https://www.example.com"; |
| 129 browserProxy.setPrefs(prefsCookies); | 133 browserProxy.setPrefs(prefsCookies); |
| 130 testElement.category = settings.ContentSettingsTypes.COOKIES; | 134 testElement.category = settings.ContentSettingsTypes.COOKIES; |
| 131 testElement.site = { | 135 testElement.site = { |
| 132 origin: origin, | 136 origin: origin, |
| 133 embeddingOrigin: '', | 137 embeddingOrigin: '', |
| 134 }; | 138 }; |
| 135 | 139 |
| 136 return browserProxy.whenCalled('getExceptionList').then(function() { | 140 return browserProxy.whenCalled('getExceptionList').then(function() { |
| 137 assertFalse(testElement.$.details.hidden); | 141 assertFalse(testElement.$.details.hidden); |
| 138 | 142 |
| 139 var header = testElement.$.details.querySelector( | 143 var header = testElement.$.details.querySelector( |
| 140 '#permissionHeader'); | 144 '#permissionHeader'); |
| 141 assertEquals('Cookies', header.innerText.trim(), | 145 assertEquals('Cookies', header.innerText.trim(), |
| 142 'Widget should be labelled correctly'); | 146 'Widget should be labelled correctly'); |
| 143 | 147 |
| 144 MockInteractions.tap(testElement.$.sessionOnly); | 148 return validatePermissionFlipWorks( |
| 145 return browserProxy.whenCalled('setCategoryPermissionForOrigin'); | 149 origin, settings.PermissionValues.SESSION_ONLY); |
| 146 }).then(function(arguments) { | 150 }).then(function() { |
| 147 assertEquals(origin, arguments[0]); | |
| 148 assertEquals('', arguments[1]); | |
| 149 assertEquals(testElement.category, arguments[2]); | |
| 150 assertEquals(settings.PermissionValues.SESSION_ONLY, arguments[3]); | |
| 151 // Flip the permission and validate that prefs stay in sync. | 151 // Flip the permission and validate that prefs stay in sync. |
| 152 browserProxy.resetResolver('setCategoryPermissionForOrigin'); | 152 return validatePermissionFlipWorks( |
| 153 return validatePermissionFlipWorks(origin, true); | 153 origin, settings.PermissionValues.ALLOW); |
| 154 }).then(function() { | 154 }).then(function() { |
| 155 browserProxy.resetResolver('setCategoryPermissionForOrigin'); | 155 return validatePermissionFlipWorks( |
| 156 return validatePermissionFlipWorks(origin, false); | 156 origin, settings.PermissionValues.BLOCK); |
| 157 }); | 157 }); |
| 158 }); | 158 }); |
| 159 | 159 |
| 160 test('disappear on empty', function() { | 160 test('disappear on empty', function() { |
| 161 var origin = "https://www.example.com"; | 161 var origin = "https://www.example.com"; |
| 162 browserProxy.setPrefs(prefs); | 162 browserProxy.setPrefs(prefs); |
| 163 testElement.category = settings.ContentSettingsTypes.CAMERA; | 163 testElement.category = settings.ContentSettingsTypes.CAMERA; |
| 164 testElement.site = { | 164 testElement.site = { |
| 165 origin: origin, | 165 origin: origin, |
| 166 embeddingOrigin: '', | 166 embeddingOrigin: '', |
| 167 }; | 167 }; |
| 168 | 168 |
| 169 return browserProxy.whenCalled('getExceptionList').then(function() { | 169 return browserProxy.whenCalled('getExceptionList').then(function() { |
| 170 assertFalse(testElement.$.details.hidden); | 170 assertFalse(testElement.$.details.hidden); |
| 171 | 171 |
| 172 browserProxy.setPrefs(prefsEmpty); | 172 browserProxy.setPrefs(prefsEmpty); |
| 173 return browserProxy.whenCalled('getExceptionList'); | 173 return browserProxy.whenCalled('getExceptionList'); |
| 174 }).then(function() { | 174 }).then(function() { |
| 175 assertTrue(testElement.$.details.hidden); | 175 assertTrue(testElement.$.details.hidden); |
| 176 }); | 176 }); |
| 177 }); | 177 }); |
| 178 }); | 178 }); |
| 179 } | 179 } |
| 180 return { | 180 return { |
| 181 registerTests: registerTests, | 181 registerTests: registerTests, |
| 182 }; | 182 }; |
| 183 }); | 183 }); |
| OLD | NEW |