Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2667)

Unified Diff: chrome/browser/resources/extensions/extensions.js

Issue 2529083002: Make extensions developer mode adhere to policy (Closed)
Patch Set: Reviewers' comments Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/extensions/extensions.js
diff --git a/chrome/browser/resources/extensions/extensions.js b/chrome/browser/resources/extensions/extensions.js
index fbf7b3cb2a4dcc18f7b7bbd05364d9aa12e2ac26..145d54d0edaa85e4d2b72f2857edc7907d9283ad 100644
--- a/chrome/browser/resources/extensions/extensions.js
+++ b/chrome/browser/resources/extensions/extensions.js
@@ -196,6 +196,8 @@ cr.define('extensions', function() {
/** @const */
var supervised = profileInfo.isSupervised;
+ var developerModeControlledByPolicy =
+ profileInfo.isDeveloperModeControlledByPolicy;
var pageDiv = $('extension-settings');
pageDiv.classList.toggle('profile-is-supervised', supervised);
@@ -203,7 +205,13 @@ cr.define('extensions', function() {
var devControlsCheckbox = $('toggle-dev-on');
devControlsCheckbox.checked = profileInfo.inDeveloperMode;
- devControlsCheckbox.disabled = supervised;
+ devControlsCheckbox.disabled =
+ supervised || developerModeControlledByPolicy;
+
+ // This is necessary e.g. if developer mode is now disabled by policy
+ // but extension developer tools were visible.
+ this.updateDevControlsVisibility_(false);
+ this.updateDevToggleControlledIndicator_(developerModeControlledByPolicy);
$('load-unpacked').disabled = !profileInfo.canLoadUnpacked;
var extensionList = $('extension-settings-list');
@@ -219,6 +227,36 @@ cr.define('extensions', function() {
},
/**
+ * Shows or hides the 'controlled by policy' indicator on the dev-toggle
+ * checkbox.
+ * @param {boolean} devModeControlledByPolicy true if the indicator
+ * should be showing.
+ * @private
+ */
+ updateDevToggleControlledIndicator_: function(devModeControlledByPolicy) {
+ var controlledIndicator = document.querySelector(
+ '#dev-toggle .controlled-setting-indicator');
+
+ if (!(controlledIndicator instanceof cr.ui.ControlledIndicator))
+ cr.ui.ControlledIndicator.decorate(controlledIndicator);
+
+ // We control the visibility of the ControlledIndicator by setting or
+ // removing the 'controlled-by' attribute (see controlled_indicator.css).
+ var isVisible = controlledIndicator.getAttribute('controlled-by');
+ if (devModeControlledByPolicy && !isVisible) {
+ var controlledBy = 'policy';
+ controlledIndicator.setAttribute(
+ 'controlled-by', controlledBy);
+ controlledIndicator.setAttribute(
+ 'text' + controlledBy,
+ loadTimeData.getString('extensionControlledSettingPolicy'));
+ } else if (!devModeControlledByPolicy && isVisible) {
+ // This hides the element - see above.
+ controlledIndicator.removeAttribute('controlled-by');
Andrew T Wilson (Slow) 2016/12/04 14:54:54 BTW, are the checks for isVisible/!isVisible neede
Devlin 2016/12/04 16:07:11 I requested it change from that. I slightly prefe
pmarko 2016/12/07 16:12:11 Acknowledged.
+ }
+ },
+
+ /**
* Shows the loading spinner and hides elements that shouldn't be visible
* while loading.
* @param {boolean} isLoading

Powered by Google App Engine
This is Rietveld 408576698