Index: chrome/browser/resources/options/content_settings.js |
diff --git a/chrome/browser/resources/options/content_settings.js b/chrome/browser/resources/options/content_settings.js |
index a17a18b75eee95ca98c3060b3d5705a0ad8177c6..9ca9dfa5336c8fcf1ad92c3d04e1d213d063a151 100644 |
--- a/chrome/browser/resources/options/content_settings.js |
+++ b/chrome/browser/resources/options/content_settings.js |
@@ -100,15 +100,30 @@ cr.define('options', function() { |
*/ |
ContentSettings.setContentFilterSettingsValue = function(dict) { |
for (var group in dict) { |
+ var managedBy = dict[group].managedBy; |
+ var controlledBy = managedBy == 'policy' || managedBy == 'extension' ? |
+ managedBy : null; |
document.querySelector('input[type=radio][name=' + group + '][value=' + |
dict[group].value + ']').checked = true; |
var radios = document.querySelectorAll('input[type=radio][name=' + |
group + ']'); |
- var managedBy = dict[group]['managedBy']; |
for (var i = 0, len = radios.length; i < len; i++) { |
radios[i].disabled = (managedBy != 'default'); |
- radios[i].controlledBy = managedBy; |
+ radios[i].controlledBy = controlledBy; |
} |
+ var indicators = document.querySelectorAll( |
+ 'span.controlled-setting-indicator[content-setting=' + group + ']'); |
+ if (indicators.length == 0) |
+ continue; |
+ // Create a synthetic pref change event decorated as |
+ // CoreOptionsHandler::CreateValueForPref() does. |
+ var event = new cr.Event(group); |
+ event.value = { |
+ value: dict[group].value, |
+ controlledBy: controlledBy, |
+ }; |
+ for (var i = 0; i < indicators.length; i++) |
+ indicators[i].handlePrefChange(event); |
} |
OptionsPage.updateManagedBannerVisibility(); |
}; |