| 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 7a17fb68de4620c73b5f9dba59f50447450b56d6..92c3755a5f8a3aed4a37150a7712fc75a69d3263 100644 | 
| --- a/sdk/lib/html/dartium/html_dartium.dart | 
| +++ b/sdk/lib/html/dartium/html_dartium.dart | 
| @@ -101,7 +101,7 @@ HtmlDocument get document { | 
|  | 
| @DocsEditable() | 
| @DomName('AbstractWorker') | 
| -class AbstractWorker extends NativeFieldWrapperClass2 implements EventTarget { | 
| +abstract class AbstractWorker extends NativeFieldWrapperClass2 implements EventTarget { | 
| // To suppress missing implicit constructor warnings. | 
| factory AbstractWorker._() { throw new UnsupportedError("Not supported"); } | 
|  | 
| @@ -304,6 +304,12 @@ class AnchorElement extends HtmlElement implements UrlUtils { | 
| @DocsEditable() | 
| void set href(String value) native "HTMLAnchorElement_href_Setter"; | 
|  | 
| +  @DomName('HTMLAnchorElement.origin') | 
| +  @DocsEditable() | 
| +  // WebKit only | 
| +  @Experimental() // non-standard | 
| +  String get origin native "HTMLAnchorElement_origin_Getter"; | 
| + | 
| @DomName('HTMLAnchorElement.password') | 
| @DocsEditable() | 
| @Experimental() // untriaged | 
| @@ -8291,13 +8297,16 @@ class DocumentFragment extends Node implements ParentNode { | 
| validator: validator, treeSanitizer: treeSanitizer); | 
| } | 
|  | 
| -  List<Element> _children; | 
| +  HtmlCollection get _children => throw new UnimplementedError( | 
| +      'Use _docChildren instead'); | 
| + | 
| +  List<Element> _docChildren; | 
|  | 
| List<Element> get children { | 
| -    if (_children == null) { | 
| -      _children = new FilteredElementList(this); | 
| +    if (_docChildren == null) { | 
| +      _docChildren = new FilteredElementList(this); | 
| } | 
| -    return _children; | 
| +    return _docChildren; | 
| } | 
|  | 
| void set children(List<Element> value) { | 
| @@ -8427,7 +8436,7 @@ class DocumentFragment extends Node implements ParentNode { | 
| @DomName('DocumentType') | 
| // http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-412266927 | 
| @deprecated // stable | 
| -class DocumentType extends Node implements ChildNode { | 
| +abstract class DocumentType extends Node implements ChildNode { | 
| // To suppress missing implicit constructor warnings. | 
| factory DocumentType._() { throw new UnsupportedError("Not supported"); } | 
|  | 
| @@ -11186,8 +11195,6 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, | 
|  | 
| bool hidden; | 
|  | 
| -  InputMethodContext get inputMethodContext; | 
| - | 
| bool get isContentEditable; | 
|  | 
| String lang; | 
| @@ -15596,10 +15603,6 @@ class HtmlFormControlsCollection extends HtmlCollection { | 
| // To suppress missing implicit constructor warnings. | 
| factory HtmlFormControlsCollection._() { throw new UnsupportedError("Not supported"); } | 
|  | 
| -  @DomName('HTMLFormControlsCollection.__getter__') | 
| -  @DocsEditable() | 
| -  Node __getter__(int index) native "HTMLFormControlsCollection___getter___Callback"; | 
| - | 
| @DomName('HTMLFormControlsCollection.namedItem') | 
| @DocsEditable() | 
| Node namedItem(String name) native "HTMLFormControlsCollection_namedItem_Callback"; | 
| @@ -28922,13 +28925,13 @@ class Url extends NativeFieldWrapperClass2 implements UrlUtils { | 
| if ((blob_OR_source_OR_stream is Blob || blob_OR_source_OR_stream == null)) { | 
| return _createObjectURL_1(blob_OR_source_OR_stream); | 
| } | 
| -    if ((blob_OR_source_OR_stream is MediaStream || blob_OR_source_OR_stream == null)) { | 
| +    if ((blob_OR_source_OR_stream is MediaSource || blob_OR_source_OR_stream == null)) { | 
| return _createObjectURL_2(blob_OR_source_OR_stream); | 
| } | 
| -    if ((blob_OR_source_OR_stream is MediaSource || blob_OR_source_OR_stream == null)) { | 
| +    if ((blob_OR_source_OR_stream is _WebKitMediaSource || blob_OR_source_OR_stream == null)) { | 
| return _createObjectURL_3(blob_OR_source_OR_stream); | 
| } | 
| -    if ((blob_OR_source_OR_stream is _WebKitMediaSource || blob_OR_source_OR_stream == null)) { | 
| +    if ((blob_OR_source_OR_stream is MediaStream || blob_OR_source_OR_stream == null)) { | 
| return _createObjectURL_4(blob_OR_source_OR_stream); | 
| } | 
| throw new ArgumentError("Incorrect number or type of arguments"); | 
| @@ -31603,6 +31606,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 | 
| @@ -31641,11 +31653,6 @@ abstract class WindowEventHandlers extends EventTarget { | 
| // To suppress missing implicit constructor warnings. | 
| factory WindowEventHandlers._() { throw new UnsupportedError("Not supported"); } | 
|  | 
| -  @DomName('WindowEventHandlers.beforeunloadEvent') | 
| -  @DocsEditable() | 
| -  @Experimental() // untriaged | 
| -  static const EventStreamProvider<Event> beforeUnloadEvent = const EventStreamProvider<Event>('beforeunload'); | 
| - | 
| @DomName('WindowEventHandlers.hashchangeEvent') | 
| @DocsEditable() | 
| @Experimental() // untriaged | 
| @@ -31686,11 +31693,6 @@ abstract class WindowEventHandlers extends EventTarget { | 
| @Experimental() // untriaged | 
| static const EventStreamProvider<Event> unloadEvent = const EventStreamProvider<Event>('unload'); | 
|  | 
| -  @DomName('WindowEventHandlers.onbeforeunload') | 
| -  @DocsEditable() | 
| -  @Experimental() // untriaged | 
| -  Stream<Event> get onBeforeUnload => beforeUnloadEvent.forTarget(this); | 
| - | 
| @DomName('WindowEventHandlers.onhashchange') | 
| @DocsEditable() | 
| @Experimental() // untriaged | 
| @@ -33920,6 +33922,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; | 
| @@ -33957,6 +33963,43 @@ 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; | 
| + | 
| +  dynamic get _get_currentTarget => wrapped._get_currentTarget; | 
| + | 
| +  dynamic get _get_target => wrapped._get_target; | 
| } | 
| // 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 | 
| @@ -34290,7 +34333,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. | 
|  | 
| /** | 
| @@ -35363,6 +35406,9 @@ class _CustomEventStreamProvider<T extends Event> | 
| String getEventType(EventTarget target) { | 
| return _eventTypeGetter(target); | 
| } | 
| + | 
| +  String get _eventType => | 
| +      throw new UnsupportedError('Access type through getEventType method.'); | 
| } | 
| // DO NOT EDIT- this file is generated from running tool/generator.sh. | 
|  | 
| @@ -38088,6 +38134,17 @@ class KeyEvent extends _WrappedEvent implements KeyboardEvent { | 
| throw new UnsupportedError( | 
| "Cannot initialize a KeyboardEvent from a KeyEvent."); | 
| } | 
| +  int get _layerX => throw new UnsupportedError('Not applicable to KeyEvent'); | 
| +  int get _layerY => throw new UnsupportedError('Not applicable to KeyEvent'); | 
| +  int get _pageX => throw new UnsupportedError('Not applicable to KeyEvent'); | 
| +  int get _pageY => throw new UnsupportedError('Not applicable to KeyEvent'); | 
| +  @Experimental() // untriaged | 
| +  bool getModifierState(String keyArgument) => throw new UnimplementedError(); | 
| +  @Experimental() // untriaged | 
| +  int get location => throw new UnimplementedError(); | 
| +  @Experimental() // untriaged | 
| +  bool get repeat => throw new UnimplementedError(); | 
| +  dynamic get _get_view => throw new UnimplementedError(); | 
| } | 
| // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 
| // for details. All rights reserved. Use of this source code is governed by a | 
| @@ -38585,7 +38642,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')]; | 
|  |