michael@0: const Ci = Components.interfaces; michael@0: const Cu = Components.utils; michael@0: michael@0: Cu.import('resource://gre/modules/XPCOMUtils.jsm'); michael@0: michael@0: this.EXPORTED_SYMBOLS = ['Roles', 'Events', 'Relations', michael@0: 'Filters', 'States', 'Prefilters']; michael@0: michael@0: function ConstantsMap (aObject, aPrefix, aMap = {}, aModifier = null) { michael@0: let offset = aPrefix.length; michael@0: for (var name in aObject) { michael@0: if (name.indexOf(aPrefix) === 0) { michael@0: aMap[name.slice(offset)] = aModifier ? michael@0: aModifier(aObject[name]) : aObject[name]; michael@0: } michael@0: } michael@0: michael@0: return aMap; michael@0: } michael@0: michael@0: XPCOMUtils.defineLazyGetter( michael@0: this, 'Roles', michael@0: function() { michael@0: return ConstantsMap(Ci.nsIAccessibleRole, 'ROLE_'); michael@0: }); michael@0: michael@0: XPCOMUtils.defineLazyGetter( michael@0: this, 'Events', michael@0: function() { michael@0: return ConstantsMap(Ci.nsIAccessibleEvent, 'EVENT_'); michael@0: }); michael@0: michael@0: XPCOMUtils.defineLazyGetter( michael@0: this, 'Relations', michael@0: function() { michael@0: return ConstantsMap(Ci.nsIAccessibleRelation, 'RELATION_'); michael@0: }); michael@0: michael@0: XPCOMUtils.defineLazyGetter( michael@0: this, 'Prefilters', michael@0: function() { michael@0: return ConstantsMap(Ci.nsIAccessibleTraversalRule, 'PREFILTER_'); michael@0: }); michael@0: michael@0: XPCOMUtils.defineLazyGetter( michael@0: this, 'Filters', michael@0: function() { michael@0: return ConstantsMap(Ci.nsIAccessibleTraversalRule, 'FILTER_'); michael@0: }); michael@0: michael@0: XPCOMUtils.defineLazyGetter( michael@0: this, 'States', michael@0: function() { michael@0: let statesMap = ConstantsMap(Ci.nsIAccessibleStates, 'STATE_', {}, michael@0: (val) => { return { base: val, extended: 0 }; }); michael@0: ConstantsMap(Ci.nsIAccessibleStates, 'EXT_STATE_', statesMap, michael@0: (val) => { return { base: 0, extended: val }; }); michael@0: return statesMap; michael@0: });