*/
var EventTrackerEntry;
-// Use an anonymous function to enable strict mode just for this file (which
-// will be concatenated with other files when embedded in Chrome).
-var EventTracker = (function() {
- 'use strict';
-
+/**
+ * Create an EventTracker to track a set of events.
+ * EventTracker instances are typically tied 1:1 with other objects or
+ * DOM elements whose listeners should be removed when the object is disposed
+ * or the corresponding elements are removed from the DOM.
+ * @constructor
+ */
+function EventTracker() {
/**
- * Create an EventTracker to track a set of events.
- * EventTracker instances are typically tied 1:1 with other objects or
- * DOM elements whose listeners should be removed when the object is disposed
- * or the corresponding elements are removed from the DOM.
- * @constructor
+ * @type {Array.<EventTrackerEntry>}
+ * @private
*/
- function EventTracker() {
- /**
- * @type {Array.<EventTrackerEntry>}
- * @private
- */
- this.listeners_ = [];
- }
-
- EventTracker.prototype = {
- /**
- * Add an event listener - replacement for Node.addEventListener.
- * @param {!Node} node The DOM node to add a listener to.
- * @param {string} eventType The type of event to subscribe to.
- * @param {Function} listener The listener to add.
- * @param {boolean} capture Whether to invoke during the capture phase.
- */
- add: function(node, eventType, listener, capture) {
- var h = {
- node: node,
- eventType: eventType,
- listener: listener,
- capture: capture
- };
- this.listeners_.push(h);
- node.addEventListener(eventType, listener, capture);
- },
+ this.listeners_ = [];
+}
- /**
- * Remove any specified event listeners added with this EventTracker.
- * @param {!Node} node The DOM node to remove a listener from.
- * @param {?string} eventType The type of event to remove.
- */
- remove: function(node, eventType) {
- this.listeners_ = this.listeners_.filter(function(h) {
- if (h.node == node && (!eventType || (h.eventType == eventType))) {
- EventTracker.removeEventListener_(h);
- return false;
- }
- return true;
- });
- },
-
- /**
- * Remove all event listeners added with this EventTracker.
- */
- removeAll: function() {
- this.listeners_.forEach(EventTracker.removeEventListener_);
- this.listeners_ = [];
- }
- };
+EventTracker.prototype = {
+ /**
+ * Add an event listener - replacement for Node.addEventListener.
+ * @param {!Node} node The DOM node to add a listener to.
+ * @param {string} eventType The type of event to subscribe to.
+ * @param {EventListener|Function} listener The listener to add.
+ * @param {boolean=} opt_capture Whether to invoke during the capture phase.
+ */
+ add: function(node, eventType, listener, opt_capture) {
+ var capture = !!opt_capture;
+ var h = {
+ node: node,
+ eventType: eventType,
+ listener: listener,
+ capture: capture,
+ };
+ this.listeners_.push(h);
+ node.addEventListener(eventType, listener, capture);
+ },
/**
- * Remove a single event listener given it's tracking entry. It's up to the
- * caller to ensure the entry is removed from listeners_.
- * @param {EventTrackerEntry} h The entry describing the listener to remove.
- * @private
+ * Remove any specified event listeners added with this EventTracker.
+ * @param {!Node} node The DOM node to remove a listener from.
+ * @param {?string} eventType The type of event to remove.
*/
- EventTracker.removeEventListener_ = function(h) {
- h.node.removeEventListener(h.eventType, h.listener, h.capture);
- };
+ remove: function(node, eventType) {
+ this.listeners_ = this.listeners_.filter(function(h) {
+ if (h.node == node && (!eventType || (h.eventType == eventType))) {
+ EventTracker.removeEventListener_(h);
+ return false;
+ }
+ return true;
+ });
+ },
- return EventTracker;
-})();
+ /**
+ * Remove all event listeners added with this EventTracker.
+ */
+ removeAll: function() {
+ this.listeners_.forEach(EventTracker.removeEventListener_);
+ this.listeners_ = [];
+ }
+};
+/**
+ * Remove a single event listener given it's tracking entry. It's up to the
+ * caller to ensure the entry is removed from listeners_.
+ * @param {EventTrackerEntry} h The entry describing the listener to remove.
+ * @private
+ */
+EventTracker.removeEventListener_ = function(h) {
+ h.node.removeEventListener(h.eventType, h.listener, h.capture);
+};