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

Unified Diff: chrome/browser/resources/chromeos/chromevox/cvox2/background/base_automation_handler.js

Issue 1942683005: Refactor event handler classes to make it easier to add new event type listeners. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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: chrome/browser/resources/chromeos/chromevox/cvox2/background/base_automation_handler.js
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/base_automation_handler.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/base_automation_handler.js
index ae19aa5bc8035230fec7c5ec1cdd0229cef36f1d..7aaa80150d84ad1fbfa73a1257d5b7fc3aa86dcf 100644
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/base_automation_handler.js
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/base_automation_handler.js
@@ -24,53 +24,31 @@ BaseAutomationHandler = function(node) {
*/
this.node_ = node;
- /**
- * Maps an automation event to its listener.
- * @type {!Object<EventType, function(!AutomationEvent) : void>}
- */
- this.listenerMap_ = {
- alert: this.onAlert,
- ariaAttributeChanged: this.onEventIfInRange,
- checkedStateChanged: this.onEventIfInRange,
- focus: this.onFocus,
- hover: this.onEventWithFlushedOutput,
- loadComplete: this.onLoadComplete,
- menuListItemSelected: this.onEventDefault,
- menuStart: this.onMenuStart,
- menuEnd: this.onMenuEnd,
- scrollPositionChanged: this.onScrollPositionChanged,
- selection: this.onEventWithFlushedOutput,
- textChanged: this.onTextChanged,
- textSelectionChanged: this.onTextSelectionChanged,
- valueChanged: this.onValueChanged
- };
-
- /** @type {!Object<string, function(!AutomationEvent): void>} @private */
+ /** @type {!Object<EventType, function(!AutomationEvent): void>} @private */
this.listeners_ = {};
-
- this.register_();
};
BaseAutomationHandler.prototype = {
/**
- * Registers event listeners. Can be called repeatedly without duplicate
- * listeners.
- * @private
+ * Adds an event listener to this handler.
+ * @param {chrome.automation.EventType} eventType
+ * @param {!function(!AutomationEvent): void} eventCallback
+ * @protected
*/
- register_: function() {
- for (var eventType in this.listenerMap_) {
- var listener =
- this.makeListener_(this.listenerMap_[eventType].bind(this));
- this.node_.addEventListener(eventType, listener, true);
- this.listeners_[eventType] = listener;
- }
+ addListener_: function(eventType, eventCallback) {
+ if (this.listeners_[eventType])
+ throw 'Listener already added: ' + eventType;
+
+ var listener = this.makeListener_(eventCallback.bind(this));
+ this.node_.addEventListener(eventType, listener, true);
+ this.listeners_[eventType] = listener;
},
/**
- * Unregisters listeners.
+ * Removes all listeners from this handler.
*/
- unregister: function() {
- for (var eventType in this.listenerMap_) {
+ removeAllListeners: function() {
+ for (var eventType in this.listeners_) {
this.node_.removeEventListener(
eventType, this.listeners_[eventType], true);
}
@@ -103,76 +81,7 @@ BaseAutomationHandler.prototype = {
* @protected
*/
didHandleEvent_: function(evt) {
- },
-
- /**
- * @param {!AutomationEvent} evt
- */
- onAlert: function(evt) {},
-
- /**
- * @param {!AutomationEvent} evt
- */
- onFocus: function(evt) {},
-
- /**
- * @param {!AutomationEvent} evt
- */
- onLoadComplete: function(evt) {},
-
- /**
- * @param {!AutomationEvent} evt
- */
- onEventDefault: function(evt) {},
-
- /**
- * @param {!AutomationEvent} evt
- */
- onEventIfInRange: function(evt) {
- // TODO(dtseng): Consider the end of the current range as well.
- if (AutomationUtil.isDescendantOf(
- global.backgroundObj.currentRange.start.node, evt.target) ||
- evt.target.state.focused)
- this.onEventDefault(evt);
- },
-
- /**
- * @param {!AutomationEvent} evt
- */
- onEventWithFlushedOutput: function(evt) {
- Output.flushNextSpeechUtterance();
- this.onEventDefault(evt);
- },
-
- /**
- * @param {!AutomationEvent} evt
- */
- onMenuStart: function(evt) {},
-
- /**
- * @param {!AutomationEvent} evt
- */
- onMenuEnd: function(evt) {},
-
- /**
- * @param {!AutomationEvent} evt
- */
- onScrollPositionChanged: function(evt) {},
-
- /**
- * @param {!AutomationEvent} evt
- */
- onTextChanged: function(evt) {},
-
- /**
- * @param {!AutomationEvent} evt
- */
- onTextSelectionChanged: function(evt) {},
-
- /**
- * @param {!AutomationEvent} evt
- */
- onValueChanged: function(evt) {}
+ }
};
}); // goog.scope

Powered by Google App Engine
This is Rietveld 408576698