Index: chrome/browser/resources/options/pref_ui.js |
diff --git a/chrome/browser/resources/options/pref_ui.js b/chrome/browser/resources/options/pref_ui.js |
index 3b85d137cd5072b8244daf125c64d44c7273a6eb..6e9c613147e2324bad41e8831c893070f37fb0f1 100644 |
--- a/chrome/browser/resources/options/pref_ui.js |
+++ b/chrome/browser/resources/options/pref_ui.js |
@@ -13,18 +13,23 @@ cr.define('options', function() { |
* @param {!Event} event The pref change event. |
*/ |
function updateElementState_(el, event) { |
- el.managed = event.value && event.value['managed'] != undefined ? |
- event.value['managed'] : false; |
- |
- // Managed UI elements can only be disabled as a result of being |
- // managed. They cannot be enabled as a result of a pref being |
- // unmanaged. |
- if (el.managed) |
- el.disabled = true; |
- |
- // Disable UI elements if backend says so. |
- if (!el.disabled && event.value && event.value['disabled']) |
- el.disabled = true; |
+ el.managed = false; |
+ |
+ if (!event.value) |
+ return; |
+ |
+ el.managed = event.value['managed']; |
+ |
+ // Disable UI elements if the backend says so. |
+ // |reenable| is a flag that tells us if the element is disabled because the |
+ // preference is not modifiable by the user. If the element is disabled but |
+ // the flag is not set, it means that the element has been disabled |
+ // somewhere else, so we don't do anything. |
+ if (el.disabled && !el.notUserModifiable) |
+ return; |
+ |
+ el.disabled = event.value['disabled']; |
+ el.notUserModifiable = event.value['disabled']; |
} |
///////////////////////////////////////////////////////////////////////////// |