Index: sdk/lib/html/dartium/html_dartium.dart |
diff --git a/sdk/lib/html/dartium/html_dartium.dart b/sdk/lib/html/dartium/html_dartium.dart |
index 52544f05df4bf0b0da12e75cba7a9a6cbff1a49d..90b4b15b3aa6a8f7981e77ad698c26f50f30d886 100644 |
--- a/sdk/lib/html/dartium/html_dartium.dart |
+++ b/sdk/lib/html/dartium/html_dartium.dart |
@@ -31536,6 +31536,15 @@ class _BeforeUnloadEventStreamProvider implements |
String getEventType(EventTarget target) { |
return _eventType; |
} |
+ |
+ ElementStream<BeforeUnloadEvent> forElement(Element e, {bool useCapture: false}) { |
+ return new _ElementEventStreamImpl(e, _eventType, useCapture); |
+ } |
+ |
+ ElementStream<BeforeUnloadEvent> _forElementList(ElementList e, |
+ {bool useCapture: false}) { |
+ return new _ElementListEventStreamImpl(e, _eventType, useCapture); |
+ } |
} |
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
// for details. All rights reserved. Use of this source code is governed by a |
@@ -33860,6 +33869,10 @@ abstract class _XMLHttpRequestProgressEvent extends ProgressEvent { |
*/ |
class _WrappedEvent implements Event { |
final Event wrapped; |
+ |
+ /** The CSS selector involved with event delegation. */ |
+ String _selector; |
+ |
_WrappedEvent(this.wrapped); |
bool get bubbles => wrapped.bubbles; |
@@ -33897,6 +33910,39 @@ class _WrappedEvent implements Event { |
void stopPropagation() { |
wrapped.stopPropagation(); |
} |
+ |
+ /** |
+ * A pointer to the element whose CSS selector matched within which an event |
+ * was fired. If this Event was not associated with any Event delegation, |
+ * accessing this value will throw an [UnsupportedError]. |
+ */ |
+ Element get matchingTarget { |
+ if (_selector == null) { |
+ throw new UnsupportedError('Cannot call matchingTarget if this Event did' |
+ ' not arise as a result of event delegation.'); |
+ } |
+ var currentTarget = this.currentTarget; |
+ var target = this.target; |
+ var matchedTarget; |
+ do { |
+ if (target.matches(_selector)) return target; |
+ target = target.parent; |
+ } while (target != null && target != currentTarget.parent); |
+ throw new StateError('No selector matched for populating matchedTarget.'); |
+ } |
+ |
+ /** |
+ * This event's path, taking into account shadow DOM. |
+ * |
+ * ## Other resources |
+ * |
+ * * [Shadow DOM extensions to Event] |
+ * (http://w3c.github.io/webcomponents/spec/shadow/#extensions-to-event) from |
+ * W3C. |
+ */ |
+ // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#extensions-to-event |
+ @Experimental() |
+ List<Node> get path => wrapped.path; |
} |
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
// for details. All rights reserved. Use of this source code is governed by a |
@@ -34230,7 +34276,7 @@ abstract class CanvasImageSource {} |
* * [DOM Window](https://developer.mozilla.org/en-US/docs/DOM/window) from MDN. |
* * [Window](http://www.w3.org/TR/Window/) from the W3C. |
*/ |
-abstract class WindowBase implements EventTarget { |
+abstract class WindowBase { |
// Fields. |
/** |
@@ -38525,7 +38571,7 @@ class _Utils { |
// TODO(vsm): Move these checks into native code. |
ClassMirror cls = reflectClass(type); |
if (_isBuiltinType(cls)) { |
- throw new UnsupportedError("Invalid custom element from ${cls.owner.uri}."); |
+ throw new UnsupportedError("Invalid custom element from ${(cls.owner as LibraryMirror).uri}."); |
} |
var className = MirrorSystem.getName(cls.simpleName); |
var createdConstructor = cls.declarations[new Symbol('$className.created')]; |