Index: chrome/browser/resources/settings/site_settings/site_settings_behavior.js |
diff --git a/chrome/browser/resources/settings/site_settings/site_settings_behavior.js b/chrome/browser/resources/settings/site_settings/site_settings_behavior.js |
index 7e949361e3175f7ede811eb8e34ce59967a398db..d810c8226962bcf129c71e40301a519caaa345d4 100644 |
--- a/chrome/browser/resources/settings/site_settings/site_settings_behavior.js |
+++ b/chrome/browser/resources/settings/site_settings/site_settings_behavior.js |
@@ -441,6 +441,55 @@ var SiteSettingsBehaviorImpl = { |
setting != settings.PermissionValues.ASK : |
setting != settings.PermissionValues.BLOCK; |
}, |
+ |
+ /** |
+ * Converts a string origin/pattern to a URL. |
+ * @param {string} originOrPattern The origin/pattern to convert to URL. |
+ * @return {URL} The URL to return (or null if origin is not a valid URL). |
+ * @private |
+ */ |
+ toUrl: function(originOrPattern) { |
+ if (originOrPattern.length == 0) |
+ return null; |
+ // TODO(finnur): Hmm, it would probably be better to ensure scheme on the |
+ // JS/C++ boundary. |
+ // TODO(dschuyler): I agree. This filtering should be done in one go, rather |
+ // that during the sort. The URL generation should be wrapped in a try/catch |
+ // as well. |
+ originOrPattern = originOrPattern.replace('*://', ''); |
+ originOrPattern = originOrPattern.replace('[*.]', ''); |
+ return new URL(this.ensureUrlHasScheme(originOrPattern)); |
+ }, |
+ |
+ /** |
+ * Convert an exception (received from the C++ handler) to a full |
+ * SiteException. |
+ * @param {!Object} exception The raw site exception from C++. |
+ * @return {SiteException} The expanded (full) SiteException. |
+ * @private |
+ */ |
+ expandSiteException: function(exception) { |
+ var origin = exception.origin; |
+ var originForDisplay = this.sanitizePort(this.toUrl(origin).origin); |
+ |
+ var embeddingOrigin = exception.embeddingOrigin; |
+ var embeddingOriginForDisplay = ''; |
+ if (origin != embeddingOrigin) { |
+ embeddingOriginForDisplay = |
+ this.getEmbedderString(embeddingOrigin, this.category); |
+ } |
+ |
+ return { |
+ origin: origin, |
+ originForDisplay: originForDisplay, |
+ embeddingOrigin: embeddingOrigin, |
+ embeddingOriginForDisplay: embeddingOriginForDisplay, |
+ incognito: exception.incognito, |
+ setting: exception.setting, |
+ source: exception.source, |
+ }; |
+ }, |
+ |
}; |
/** @polymerBehavior */ |