| 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. |
| 11 * @type {SiteDetailsPermission} | 11 * @type {SiteDetailsPermission} |
| 12 */ | 12 */ |
| 13 var testElement; | 13 var testElement; |
| 14 | 14 |
| 15 /** | 15 /** |
| 16 * An example pref with only camera allowed. | 16 * An example pref with only camera allowed. |
| 17 */ | 17 */ |
| 18 var prefs = { | 18 var prefs = { |
| 19 exceptions: { | 19 exceptions: { |
| 20 camera: [ | 20 camera: [ |
| 21 { | 21 { |
| 22 embeddingOrigin: 'https://foo-allow.com:443', | 22 embeddingOrigin: '', |
| 23 origin: 'https://foo-allow.com:443', | 23 origin: 'https://www.example.com', |
| 24 setting: 'allow', | 24 setting: 'allow', |
| 25 source: 'preference', | 25 source: 'preference', |
| 26 }, | 26 }, |
| 27 ] |
| 28 } |
| 29 }; |
| 30 |
| 31 /** |
| 32 * An example pref with only one entry allowed. |
| 33 */ |
| 34 var prefsCookies = { |
| 35 exceptions: { |
| 36 cookies: [ |
| 37 { |
| 38 embeddingOrigin: '', |
| 39 origin: 'https://www.example.com', |
| 40 setting: 'allow', |
| 41 source: 'preference', |
| 42 }, |
| 27 ] | 43 ] |
| 28 } | 44 } |
| 29 }; | 45 }; |
| 30 | 46 |
| 31 // Import necessary html before running suite. | 47 // Import necessary html before running suite. |
| 32 suiteSetup(function() { | 48 suiteSetup(function() { |
| 33 return PolymerTest.importHtml( | 49 return PolymerTest.importHtml( |
| 34 'chrome://md-settings/site_settings/site_details_permission.html' | 50 'chrome://md-settings/site_settings/site_details_permission.html' |
| 35 ); | 51 ); |
| 36 }); | 52 }); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 52 return exceptionList[i].setting == 'allow'; | 68 return exceptionList[i].setting == 'allow'; |
| 53 } | 69 } |
| 54 return false; | 70 return false; |
| 55 }; | 71 }; |
| 56 | 72 |
| 57 function validatePermissionFlipWorks(origin, allow) { | 73 function validatePermissionFlipWorks(origin, allow) { |
| 58 MockInteractions.tap(allow ? testElement.$.allow : testElement.$.block); | 74 MockInteractions.tap(allow ? testElement.$.allow : testElement.$.block); |
| 59 return browserProxy.whenCalled('setCategoryPermissionForOrigin').then( | 75 return browserProxy.whenCalled('setCategoryPermissionForOrigin').then( |
| 60 function(arguments) { | 76 function(arguments) { |
| 61 assertEquals(origin, arguments[0]); | 77 assertEquals(origin, arguments[0]); |
| 62 assertEquals(origin, arguments[1]); | 78 assertEquals('', arguments[1]); |
| 63 assertEquals(testElement.category, arguments[2]); | 79 assertEquals(testElement.category, arguments[2]); |
| 64 assertEquals(allow ? | 80 assertEquals(allow ? |
| 65 settings.PermissionValues.ALLOW : | 81 settings.PermissionValues.ALLOW : |
| 66 settings.PermissionValues.BLOCK, arguments[3]); | 82 settings.PermissionValues.BLOCK, arguments[3]); |
| 67 }); | 83 }); |
| 68 }; | 84 }; |
| 69 | 85 |
| 70 test('empty state', function() { | 86 test('empty state', function() { |
| 71 browserProxy.setPrefs(prefsEmpty); | 87 browserProxy.setPrefs(prefsEmpty); |
| 72 testElement.category = settings.ContentSettingsTypes.CAMERA; | 88 testElement.category = settings.ContentSettingsTypes.CAMERA; |
| 73 testElement.site = { | 89 testElement.site = { |
| 74 origin: 'http://www.google.com', | 90 origin: 'http://www.google.com', |
| 75 embeddingOrigin: '', | 91 embeddingOrigin: '', |
| 76 }; | 92 }; |
| 77 | 93 |
| 78 return browserProxy.whenCalled('getExceptionList').then(function() { | 94 return browserProxy.whenCalled('getExceptionList').then(function() { |
| 79 assertTrue(testElement.$.details.hidden); | 95 assertTrue(testElement.$.details.hidden); |
| 80 }); | 96 }); |
| 81 }); | 97 }); |
| 82 | 98 |
| 83 test('camera category', function() { | 99 test('camera category', function() { |
| 84 var origin = "https://foo-allow.com:443"; | 100 var origin = "https://www.example.com"; |
| 85 browserProxy.setPrefs(prefs); | 101 browserProxy.setPrefs(prefs); |
| 86 testElement.category = settings.ContentSettingsTypes.CAMERA; | 102 testElement.category = settings.ContentSettingsTypes.CAMERA; |
| 87 testElement.site = { | 103 testElement.site = { |
| 88 origin: origin, | 104 origin: origin, |
| 89 embeddingOrigin: origin, | 105 embeddingOrigin: '', |
| 90 }; | 106 }; |
| 91 | 107 |
| 92 return browserProxy.whenCalled('getExceptionList').then(function() { | 108 return browserProxy.whenCalled('getExceptionList').then(function() { |
| 93 assertFalse(testElement.$.details.hidden); | 109 assertFalse(testElement.$.details.hidden); |
| 94 | 110 |
| 95 var header = testElement.$.details.querySelector( | 111 var header = testElement.$.details.querySelector( |
| 96 '#permissionHeader'); | 112 '#permissionHeader'); |
| 97 assertEquals('Camera', header.innerText.trim(), | 113 assertEquals('Camera', header.innerText.trim(), |
| 98 'Widget should be labelled correctly'); | 114 'Widget should be labelled correctly'); |
| 99 | 115 |
| 100 // Flip the permission and validate that prefs stay in sync. | 116 // Flip the permission and validate that prefs stay in sync. |
| 101 return validatePermissionFlipWorks(origin, true); | 117 return validatePermissionFlipWorks(origin, true); |
| 102 }).then(function() { | 118 }).then(function() { |
| 103 browserProxy.resetResolver('setCategoryPermissionForOrigin'); | 119 browserProxy.resetResolver('setCategoryPermissionForOrigin'); |
| 104 return validatePermissionFlipWorks(origin, false); | 120 return validatePermissionFlipWorks(origin, false); |
| 105 }).then(function() { | 121 }).then(function() { |
| 106 browserProxy.resetResolver('setCategoryPermissionForOrigin'); | 122 browserProxy.resetResolver('setCategoryPermissionForOrigin'); |
| 107 return validatePermissionFlipWorks(origin, true); | 123 return validatePermissionFlipWorks(origin, true); |
| 108 }); | 124 }); |
| 109 }); | 125 }); |
| 110 | 126 |
| 127 test('cookies category', function() { |
| 128 var origin = "https://www.example.com"; |
| 129 browserProxy.setPrefs(prefsCookies); |
| 130 testElement.category = settings.ContentSettingsTypes.COOKIES; |
| 131 testElement.site = { |
| 132 origin: origin, |
| 133 embeddingOrigin: '', |
| 134 }; |
| 135 |
| 136 return browserProxy.whenCalled('getExceptionList').then(function() { |
| 137 assertFalse(testElement.$.details.hidden); |
| 138 |
| 139 var header = testElement.$.details.querySelector( |
| 140 '#permissionHeader'); |
| 141 assertEquals('Cookies', header.innerText.trim(), |
| 142 'Widget should be labelled correctly'); |
| 143 |
| 144 MockInteractions.tap(testElement.$.sessionOnly); |
| 145 return browserProxy.whenCalled('setCategoryPermissionForOrigin'); |
| 146 }).then(function(arguments) { |
| 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. |
| 152 browserProxy.resetResolver('setCategoryPermissionForOrigin'); |
| 153 return validatePermissionFlipWorks(origin, true); |
| 154 }).then(function() { |
| 155 browserProxy.resetResolver('setCategoryPermissionForOrigin'); |
| 156 return validatePermissionFlipWorks(origin, false); |
| 157 }); |
| 158 }); |
| 159 |
| 111 test('disappear on empty', function() { | 160 test('disappear on empty', function() { |
| 112 var origin = "https://foo-allow.com:443"; | 161 var origin = "https://www.example.com"; |
| 113 browserProxy.setPrefs(prefs); | 162 browserProxy.setPrefs(prefs); |
| 114 testElement.category = settings.ContentSettingsTypes.CAMERA; | 163 testElement.category = settings.ContentSettingsTypes.CAMERA; |
| 115 testElement.site = { | 164 testElement.site = { |
| 116 origin: origin, | 165 origin: origin, |
| 117 embeddingOrigin: origin, | 166 embeddingOrigin: '', |
| 118 }; | 167 }; |
| 119 | 168 |
| 120 return browserProxy.whenCalled('getExceptionList').then(function() { | 169 return browserProxy.whenCalled('getExceptionList').then(function() { |
| 121 assertFalse(testElement.$.details.hidden); | 170 assertFalse(testElement.$.details.hidden); |
| 122 | 171 |
| 123 browserProxy.setPrefs(prefsEmpty); | 172 browserProxy.setPrefs(prefsEmpty); |
| 124 return browserProxy.whenCalled('getExceptionList'); | 173 return browserProxy.whenCalled('getExceptionList'); |
| 125 }).then(function() { | 174 }).then(function() { |
| 126 assertTrue(testElement.$.details.hidden); | 175 assertTrue(testElement.$.details.hidden); |
| 127 }); | 176 }); |
| 128 }); | 177 }); |
| 129 }); | 178 }); |
| 130 } | 179 } |
| 131 return { | 180 return { |
| 132 registerTests: registerTests, | 181 registerTests: registerTests, |
| 133 }; | 182 }; |
| 134 }); | 183 }); |
| OLD | NEW |