Index: third_party/WebKit/Source/devtools/front_end/common/Object.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/common/Object.js b/third_party/WebKit/Source/devtools/front_end/common/Object.js |
index fe01dd3e28e19a899a215803050bc76d43d93c54..8a308d907cd8188887c5a98b04364598dec39bf0 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/common/Object.js |
+++ b/third_party/WebKit/Source/devtools/front_end/common/Object.js |
@@ -87,15 +87,21 @@ |
* @override |
* @param {symbol} eventType |
* @param {*=} eventData |
+ * @return {boolean} |
*/ |
dispatchEventToListeners(eventType, eventData) { |
if (!this._listeners || !this._listeners.has(eventType)) |
- return; |
- |
- var event = new Common.Event(this, eventData); |
+ return false; |
+ |
+ var event = new Common.Event(this, eventType, eventData); |
var listeners = this._listeners.get(eventType).slice(0); |
- for (var i = 0; i < listeners.length; ++i) |
+ for (var i = 0; i < listeners.length; ++i) { |
listeners[i].listener.call(listeners[i].thisObject, event); |
+ if (event._stoppedPropagation) |
+ break; |
+ } |
+ |
+ return event.defaultPrevented; |
} |
}; |
@@ -105,11 +111,32 @@ |
Common.Event = class { |
/** |
* @param {!Common.EventTarget} target |
+ * @param {symbol} type |
* @param {*=} data |
*/ |
- constructor(target, data) { |
+ constructor(target, type, data) { |
this.target = target; |
+ this.type = type; |
this.data = data; |
+ this.defaultPrevented = false; |
+ this._stoppedPropagation = false; |
+ } |
+ |
+ stopPropagation() { |
+ this._stoppedPropagation = true; |
+ } |
+ |
+ preventDefault() { |
+ this.defaultPrevented = true; |
+ } |
+ |
+ /** |
+ * @param {boolean=} preventDefault |
+ */ |
+ consume(preventDefault) { |
+ this.stopPropagation(); |
+ if (preventDefault) |
+ this.preventDefault(); |
} |
}; |
@@ -157,6 +184,7 @@ |
/** |
* @param {symbol} eventType |
* @param {*=} eventData |
+ * @return {boolean} |
*/ |
dispatchEventToListeners(eventType, eventData) {}, |
}; |