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

Unified Diff: ui/webui/resources/cr_elements/v1_0/policy/cr_policy_indicator.js

Issue 1342033002: Add tooltips to cr-policy-indicator (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@issue_521791_settings_policy_1
Patch Set: . Created 5 years, 3 months 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: ui/webui/resources/cr_elements/v1_0/policy/cr_policy_indicator.js
diff --git a/ui/webui/resources/cr_elements/v1_0/policy/cr_policy_indicator.js b/ui/webui/resources/cr_elements/v1_0/policy/cr_policy_indicator.js
index 486ff722035f4ef74d710a5acf7654fa4e94ca5d..5fa479e2f5b435b959be413d195ef958f70d4f2c 100644
--- a/ui/webui/resources/cr_elements/v1_0/policy/cr_policy_indicator.js
+++ b/ui/webui/resources/cr_elements/v1_0/policy/cr_policy_indicator.js
@@ -3,10 +3,12 @@
// found in the LICENSE file.
/**
- * @fileoverview
- * @element cr-policy-indicator
+ * @fileoverview Polymer element for indicating policies that apply to an
+ * element controlling a settings preference.
*/
+(function() {
+
/** @enum {string} */
var IndicatorType = {
DEVICE_POLICY: 'devicePolicy',
@@ -18,6 +20,7 @@ var IndicatorType = {
USER_POLICY: 'userPolicy',
};
+/** @element cr-policy-indicator */
Polymer({
is: 'cr-policy-indicator',
@@ -33,11 +36,17 @@ Polymer({
* @type {IndicatorType}
*/
indicatorType: {type: String, value: IndicatorType.NONE},
+
+ /**
+ * Polymer iron-meta instance for icon images
+ * @type {Polymer.IronMeta}
+ */
+ meta_: {
+ value: Polymer.Base.create('iron-meta', {type: 'iconset'})
+ }
},
- observers: [
- 'prefPolicyChanged_(pref.policySource, pref.policyEnforcement)'
- ],
+ observers: ['prefPolicyChanged_(pref.policySource, pref.policyEnforcement)'],
/**
* Polymer observer for pref.
@@ -63,6 +72,7 @@ Polymer({
type = IndicatorType.RECOMMENDED;
}
this.indicatorType = type;
+ this.updateIcon_();
},
/**
@@ -74,13 +84,11 @@ Polymer({
/**
* @param {IndicatorType} type
- * @return {string} The iron-icons icon name.
+ * @return {string|undefined} The iron-icons icon name for |type|.
* @private
*/
- getIcon_: function(type) {
+ getIconForType_: function(type) {
switch (type) {
- case IndicatorType.NONE:
- return '';
case IndicatorType.PRIMARY_USER:
return 'social:group';
case IndicatorType.OWNER:
@@ -93,7 +101,59 @@ Polymer({
case IndicatorType.RECOMMENDED:
return 'social:domain';
}
- assertNotReached();
Dan Beam 2015/09/21 21:50:47 why did you remove this assertNotReached()?
stevenjb 2015/09/23 18:46:24 |type| could be undefined here. The assert didn't
+ return '';
+ },
+
+ /**
+ * Creates or replaces the icon element for |indicatorType|.
+ * @private
+ */
+ updateIcon_: function() {
+ var icon = this.getIconForType_(this.indicatorType);
+ if (!icon)
+ return;
+ var parts = icon.split(':');
+ var iconName = parts.pop();
+ var iconsetName = parts.pop() || 'icons';
+ var iconset =
+ /** @type {Polymer.IronIconsetSvg} */(this.meta_.byKey(iconsetName));
+ iconset.applyIcon(this.$.indicator, iconName);
+ },
+
+ /**
+ * @param {string} id The id of the string to translate.
+ * @param {string=} opt_name An optional name argument.
+ * @return The translated string.
+ */
+ i18n_: function (id, opt_name) {
+ return loadTimeData.getStringF(id, opt_name);
+ },
+
+ /**
+ * @param {IndicatorType} type The type of indicator.
+ * @param {chrome.settingsPrivate.PrefObject} pref
+ * @return {string} The tooltip text for |type|.
+ * @private
+ */
+ getTooltipText_: function(type, pref) {
+ var name = pref.policySourceName || '';
+ switch (type) {
+ case IndicatorType.PRIMARY_USER:
+ return this.i18n_('controlledSettingShared', name);
+ case IndicatorType.OWNER:
+ return this.i18n_('controlledSettingOwner', name);
+ case IndicatorType.USER_POLICY:
+ case IndicatorType.DEVICE_POLICY:
+ return this.i18n_('controlledSettingPolicy');
+ case IndicatorType.EXTENSION:
+ return this.i18n_('controlledSettingExtension', name);
+ case IndicatorType.RECOMMENDED:
+ if (pref.value == pref.recommendedValue)
+ return this.i18n_('controlledSettingRecommendedMatches');
+ else
+ return this.i18n_('controlledSettingRecommendedDiffers');
+ }
return '';
}
});
+})();

Powered by Google App Engine
This is Rietveld 408576698