| 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 /** | 5 /** |
| 6 * @fileoverview | 6 * @fileoverview |
| 7 * 'site-details-permission' handles showing the state of one permission, such | 7 * 'site-details-permission' handles showing the state of one permission, such |
| 8 * as Geolocation, for a given origin. | 8 * as Geolocation, for a given origin. |
| 9 */ | 9 */ |
| 10 Polymer({ | 10 Polymer({ |
| 11 is: 'site-details-permission', | 11 is: 'site-details-permission', |
| 12 | 12 |
| 13 behaviors: [SiteSettingsBehavior, WebUIListenerBehavior], | 13 behaviors: [SiteSettingsBehavior, WebUIListenerBehavior], |
| 14 | 14 |
| 15 properties: { | 15 properties: { |
| 16 /** | 16 /** |
| 17 * The site that this widget is showing details for. | 17 * The site that this widget is showing details for. |
| 18 * @type {SiteException} | 18 * @type {SiteException} |
| 19 */ | 19 */ |
| 20 site: Object, | 20 site: Object, |
| 21 }, | 21 }, |
| 22 | 22 |
| 23 observers: ['siteChanged_(site, category)'], | 23 observers: ['siteChanged_(site, category)'], |
| 24 | 24 |
| 25 /** @override */ | 25 /** @override */ |
| 26 attached: function() { | 26 attached: function() { |
| 27 this.addWebUIListener('contentSettingSitePermissionChanged', | 27 this.addWebUIListener( |
| 28 'contentSettingSitePermissionChanged', |
| 28 this.sitePermissionChanged_.bind(this)); | 29 this.sitePermissionChanged_.bind(this)); |
| 29 }, | 30 }, |
| 30 | 31 |
| 31 /** | 32 /** |
| 32 * Returns true if the origins match, e.g. http://google.com and | 33 * Returns true if the origins match, e.g. http://google.com and |
| 33 * http://[*.]google.com. | 34 * http://[*.]google.com. |
| 34 * @param {string} left The first origin to compare. | 35 * @param {string} left The first origin to compare. |
| 35 * @param {string} right The second origin to compare. | 36 * @param {string} right The second origin to compare. |
| 36 * @return {boolean} True if the origins are the same. | 37 * @return {boolean} True if the origins are the same. |
| 37 * @private | 38 * @private |
| 38 */ | 39 */ |
| 39 sameOrigin_: function(left, right) { | 40 sameOrigin_: function(left, right) { |
| 40 return this.removePatternWildcard(left) == | 41 return this.removePatternWildcard(left) == |
| 41 this.removePatternWildcard(right); | 42 this.removePatternWildcard(right); |
| 42 }, | 43 }, |
| 43 | 44 |
| 44 /** @private */ | 45 /** @private */ |
| 45 isCookiesCategory_: function(category) { | 46 isCookiesCategory_: function(category) { |
| 46 return category == settings.ContentSettingsTypes.COOKIES; | 47 return category == settings.ContentSettingsTypes.COOKIES; |
| 47 }, | 48 }, |
| 48 | 49 |
| 49 /** | 50 /** |
| 50 * Sets the site to display. | 51 * Sets the site to display. |
| 51 * @param {!SiteException} site The site to display. | 52 * @param {!SiteException} site The site to display. |
| 52 * @private | 53 * @private |
| 53 */ | 54 */ |
| 54 siteChanged_: function(site) { | 55 siteChanged_: function(site) { |
| 55 | 56 |
| 56 this.browserProxy.getExceptionList(this.category).then( | 57 this.browserProxy.getExceptionList(this.category) |
| 57 function(exceptionList) { | 58 .then(function(exceptionList) { |
| 58 for (var i = 0; i < exceptionList.length; ++i) { | 59 for (var i = 0; i < exceptionList.length; ++i) { |
| 59 if (exceptionList[i].embeddingOrigin == site.embeddingOrigin && | 60 if (exceptionList[i].embeddingOrigin == site.embeddingOrigin && |
| 60 this.sameOrigin_(exceptionList[i].origin, site.origin)) { | 61 this.sameOrigin_(exceptionList[i].origin, site.origin)) { |
| 61 this.$.permission.value = exceptionList[i].setting; | 62 this.$.permission.value = exceptionList[i].setting; |
| 62 break; | 63 break; |
| 63 } | 64 } |
| 64 } | 65 } |
| 65 }.bind(this)); | 66 }.bind(this)); |
| 66 }, | 67 }, |
| 67 | 68 |
| 68 /** | 69 /** |
| 69 * Called when a site within a category has been changed. | 70 * Called when a site within a category has been changed. |
| 70 * @param {number} category The category that changed. | 71 * @param {number} category The category that changed. |
| 71 * @param {string} origin The origin of the site that changed. | 72 * @param {string} origin The origin of the site that changed. |
| 72 * @param {string} embeddingOrigin The embedding origin of the site that | 73 * @param {string} embeddingOrigin The embedding origin of the site that |
| 73 * changed. | 74 * changed. |
| 74 * @private | 75 * @private |
| 75 */ | 76 */ |
| 76 sitePermissionChanged_: function(category, origin, embeddingOrigin) { | 77 sitePermissionChanged_: function(category, origin, embeddingOrigin) { |
| 77 if (this.site === undefined) | 78 if (this.site === undefined) |
| 78 return; | 79 return; |
| 79 if (category != this.category) | 80 if (category != this.category) |
| 80 return; | 81 return; |
| 81 | 82 |
| 82 if (origin == '' || (origin == this.site.origin && | 83 if (origin == '' || |
| 83 embeddingOrigin == this.site.embeddingOrigin)) { | 84 (origin == this.site.origin && |
| 85 embeddingOrigin == this.site.embeddingOrigin)) { |
| 84 this.siteChanged_(this.site); | 86 this.siteChanged_(this.site); |
| 85 } | 87 } |
| 86 }, | 88 }, |
| 87 | 89 |
| 88 /** | 90 /** |
| 89 * Resets the category permission for this origin. | 91 * Resets the category permission for this origin. |
| 90 */ | 92 */ |
| 91 resetPermission: function() { | 93 resetPermission: function() { |
| 92 this.browserProxy.resetCategoryPermissionForOrigin( | 94 this.browserProxy.resetCategoryPermissionForOrigin( |
| 93 this.site.origin, this.site.embeddingOrigin, this.category, | 95 this.site.origin, this.site.embeddingOrigin, this.category, |
| 94 this.site.incognito); | 96 this.site.incognito); |
| 95 }, | 97 }, |
| 96 | 98 |
| 97 /** | 99 /** |
| 98 * Handles the category permission changing for this origin. | 100 * Handles the category permission changing for this origin. |
| 99 * @private | 101 * @private |
| 100 */ | 102 */ |
| 101 onPermissionSelectionChange_: function() { | 103 onPermissionSelectionChange_: function() { |
| 102 this.browserProxy.setCategoryPermissionForOrigin( | 104 this.browserProxy.setCategoryPermissionForOrigin( |
| 103 this.site.origin, this.site.embeddingOrigin, this.category, | 105 this.site.origin, this.site.embeddingOrigin, this.category, |
| 104 this.$.permission.value, this.site.incognito); | 106 this.$.permission.value, this.site.incognito); |
| 105 }, | 107 }, |
| 106 }); | 108 }); |
| OLD | NEW |