| Index: lib/html/dartium/html_dartium.dart
|
| diff --git a/lib/html/dartium/html_dartium.dart b/lib/html/dartium/html_dartium.dart
|
| index c12f2f6c40f32e64afdd4f05a194861033e2f12b..d3473692f1bbe323a058c9102a9f2c5924007c23 100644
|
| --- a/lib/html/dartium/html_dartium.dart
|
| +++ b/lib/html/dartium/html_dartium.dart
|
| @@ -41,7 +41,7 @@ Document get document {
|
| Document get _document => _window.document;
|
|
|
| Element query(String selector) => _document.query(selector);
|
| -ElementList queryAll(String selector) => _document.queryAll(selector);
|
| +List<Element> queryAll(String selector) => _document.queryAll(selector);
|
|
|
| int _getNewIsolateId() => _Utils._getNewIsolateId();
|
|
|
| @@ -11582,11 +11582,11 @@ abstract class DocumentFragment extends Element {
|
| // for details. All rights reserved. Use of this source code is governed by a
|
| // BSD-style license that can be found in the LICENSE file.
|
|
|
| -class FilteredElementList implements ElementList {
|
| +class _FilteredElementList implements List {
|
| final Node _node;
|
| final NodeList _childNodes;
|
|
|
| - FilteredElementList(Node node): _childNodes = node.nodes, _node = node;
|
| + _FilteredElementList(Node node): _childNodes = node.nodes, _node = node;
|
|
|
| // We can't memoize this, since it's possible that children will be messed
|
| // with externally to this class.
|
| @@ -11595,16 +11595,6 @@ class FilteredElementList implements ElementList {
|
| List<Element> get _filtered =>
|
| new List.from(_childNodes.filter((n) => n is Element));
|
|
|
| - // Don't use _filtered.first so we can short-circuit once we find an element.
|
| - Element get first {
|
| - for (final node in _childNodes) {
|
| - if (node is Element) {
|
| - return node;
|
| - }
|
| - }
|
| - return null;
|
| - }
|
| -
|
| void forEach(void f(Element element)) {
|
| _filtered.forEach(f);
|
| }
|
| @@ -11715,11 +11705,11 @@ class _FrozenCSSClassSet extends _CssClassSet {
|
| }
|
|
|
| class _DocumentFragmentImpl extends _NodeImpl implements DocumentFragment {
|
| - ElementList _elements;
|
| + List<Element> _elements;
|
|
|
| - ElementList get elements {
|
| + List<Element> get elements {
|
| if (_elements == null) {
|
| - _elements = new FilteredElementList(this);
|
| + _elements = new _FilteredElementList(this);
|
| }
|
| return _elements;
|
| }
|
| @@ -11764,7 +11754,8 @@ class _DocumentFragmentImpl extends _NodeImpl implements DocumentFragment {
|
| case "beforebegin": return null;
|
| case "afterend": return null;
|
| case "afterbegin":
|
| - this.insertBefore(node, this.nodes.first);
|
| + var first = this.nodes.length > 0 ? this.nodes[0] : null;
|
| + this.insertBefore(node, first);
|
| return node;
|
| case "beforeend":
|
| this.nodes.add(node);
|
| @@ -11813,7 +11804,12 @@ class _DocumentFragmentImpl extends _NodeImpl implements DocumentFragment {
|
| String get tagName => "";
|
| String get webkitdropzone => "";
|
| String get webkitRegionOverflow => "";
|
| - Element get $m_firstElementChild() => elements.first();
|
| + Element get $m_firstElementChild {
|
| + if (elements.length > 0) {
|
| + return elements[0];
|
| + }
|
| + return null;
|
| + }
|
| Element get $m_lastElementChild() => elements.last();
|
| Element get nextElementSibling => null;
|
| Element get previousElementSibling => null;
|
| @@ -12343,21 +12339,6 @@ class _EXTTextureFilterAnisotropicImpl extends NativeFieldWrapperClass1 implemen
|
|
|
| // WARNING: Do not edit - generated code.
|
|
|
| -// TODO(vsm): Eliminate this type.
|
| -
|
| -// Note, ElementList implements List (instead of List<Element>) so
|
| -// that its implementing classes may be cast to Lists of more specific
|
| -// type such as List<CanvasElement>.
|
| -abstract class ElementList implements List {
|
| - // TODO(jacobr): add element batch manipulation methods.
|
| - ElementList filter(bool f(Element element));
|
| -
|
| - ElementList getRange(int start, int length);
|
| -
|
| - Element get first;
|
| - // TODO(jacobr): add insertAt
|
| -}
|
| -
|
| /**
|
| * All your attribute manipulation needs in one place.
|
| * Extends the regular Map interface by automatically coercing non-string
|
| @@ -12414,7 +12395,7 @@ abstract class Element implements Node, NodeSelector {
|
| * @domName childElementCount, firstElementChild, lastElementChild,
|
| * children, Node.nodes.add
|
| */
|
| - ElementList get elements;
|
| + List<Element> get elements;
|
|
|
| void set elements(Collection<Element> value);
|
|
|
| @@ -12863,7 +12844,7 @@ class _ElementEventsImpl extends _EventsImpl implements ElementEvents {
|
|
|
| // TODO(jacobr): use _Lists.dart to remove some of the duplicated
|
| // functionality.
|
| -class _ChildrenElementList implements ElementList {
|
| +class _ChildrenElementList implements List {
|
| // Raw Element.
|
| final _ElementImpl _element;
|
| final _HTMLCollectionImpl _childElements;
|
| @@ -12880,17 +12861,13 @@ class _ChildrenElementList implements ElementList {
|
| return output;
|
| }
|
|
|
| - _ElementImpl get first {
|
| - return _element.$dom_firstElementChild;
|
| - }
|
| -
|
| void forEach(void f(Element element)) {
|
| for (_ElementImpl element in _childElements) {
|
| f(element);
|
| }
|
| }
|
|
|
| - ElementList filter(bool f(Element element)) {
|
| + List<Element> filter(bool f(Element element)) {
|
| final output = <Element>[];
|
| forEach((Element element) {
|
| if (f(element)) {
|
| @@ -13013,7 +12990,7 @@ class _ChildrenElementList implements ElementList {
|
| // a better option given that we cannot quite force NodeList to be an
|
| // ElementList as there are valid cases where a NodeList JavaScript object
|
| // contains Node objects that are not Elements.
|
| -class _FrozenElementList implements ElementList {
|
| +class _FrozenElementList implements List {
|
| final List<Node> _nodeList;
|
|
|
| _FrozenElementList._wrap(this._nodeList);
|
| @@ -13036,8 +13013,8 @@ class _FrozenElementList implements ElementList {
|
| return out;
|
| }
|
|
|
| - ElementList filter(bool f(Element element)) {
|
| - final out = new _ElementList([]);
|
| + List<Element> filter(bool f(Element element)) {
|
| + final out = <Element>[];
|
| for (Element el in this) {
|
| if (f(el)) out.add(el);
|
| }
|
| @@ -13106,7 +13083,7 @@ class _FrozenElementList implements ElementList {
|
| throw const UnsupportedOperationException('');
|
| }
|
|
|
| - ElementList getRange(int start, int rangeLength) =>
|
| + List<Element> getRange(int start, int rangeLength) =>
|
| new _FrozenElementList._wrap(_nodeList.getRange(start, rangeLength));
|
|
|
| int indexOf(Element element, [int start = 0]) =>
|
| @@ -13150,16 +13127,6 @@ class _FrozenElementListIterator implements Iterator<Element> {
|
| bool hasNext() => _index < _list.length;
|
| }
|
|
|
| -class _ElementList extends _ListWrapper<Element> implements ElementList {
|
| - _ElementList(List<Element> list) : super(list);
|
| -
|
| - ElementList filter(bool f(Element element)) =>
|
| - new _ElementList(super.filter(f));
|
| -
|
| - ElementList getRange(int start, int rangeLength) =>
|
| - new _ElementList(super.getRange(start, rangeLength));
|
| -}
|
| -
|
| class _ElementAttributeMap implements AttributeMap {
|
|
|
| final _ElementImpl _element;
|
| @@ -13547,7 +13514,7 @@ class _ElementImpl extends _NodeImpl implements Element {
|
| elements.addAll(value);
|
| }
|
|
|
| - ElementList get elements => new _ChildrenElementList._wrap(this);
|
| + List<Element> get elements => new _ChildrenElementList._wrap(this);
|
|
|
| _ElementImpl query(String selectors) => $dom_querySelector(selectors);
|
|
|
| @@ -13757,7 +13724,7 @@ class _ElementFactoryProvider {
|
|
|
| Element element;
|
| if (temp.elements.length == 1) {
|
| - element = temp.elements.first;
|
| + element = temp.elements[0];
|
| } else if (parentTag == 'html' && temp.elements.length == 2) {
|
| // Work around for edge case in WebKit and possibly other browsers where
|
| // both body and head elements are created even though the inner html
|
| @@ -23102,10 +23069,10 @@ class _ListWrapper<E> implements List<E> {
|
| class _NodeListWrapper extends _ListWrapper<Node> implements NodeList {
|
| _NodeListWrapper(List list) : super(list);
|
|
|
| - NodeList filter(bool f(Node element)) =>
|
| + List<Node> filter(bool f(Node element)) =>
|
| new _NodeListWrapper(_list.filter(f));
|
|
|
| - NodeList getRange(int start, int rangeLength) =>
|
| + List<Node> getRange(int start, int rangeLength) =>
|
| new _NodeListWrapper(_list.getRange(start, rangeLength));
|
| }
|
|
|
| @@ -23136,7 +23103,7 @@ class _NodeListImpl extends NativeFieldWrapperClass1 implements NodeList {
|
|
|
| void addAll(Collection<_NodeImpl> collection) {
|
| for (_NodeImpl node in collection) {
|
| - _parent.$dom_appendChild(node);
|
| + _parent.$dom_appendChild(node);
|
| }
|
| }
|
|
|
| @@ -23194,7 +23161,7 @@ class _NodeListImpl extends NativeFieldWrapperClass1 implements NodeList {
|
| void insertRange(int start, int rangeLength, [Node initialValue]) {
|
| throw new UnsupportedOperationException("Cannot insertRange on immutable List.");
|
| }
|
| - NodeList getRange(int start, int rangeLength) =>
|
| + List<Node> getRange(int start, int rangeLength) =>
|
| new _NodeListWrapper(_Lists.getRange(this, start, rangeLength, <Node>[]));
|
|
|
| // -- end List<Node> mixins.
|
| @@ -27181,7 +27148,7 @@ class _SVGElementImpl extends _ElementImpl implements SVGElement {
|
| return _cssClassSet;
|
| }
|
|
|
| - ElementList get elements => new FilteredElementList(this);
|
| + List<Element> get elements => new _FilteredElementList(this);
|
|
|
| void set elements(Collection<Element> value) {
|
| final elements = this.elements;
|
| @@ -27208,7 +27175,7 @@ class _SVGElementImpl extends _ElementImpl implements SVGElement {
|
| // Wrap the SVG string in <svg> so that SVGElements are created, rather than
|
| // HTMLElements.
|
| container.innerHTML = '<svg version="1.1">$svg</svg>';
|
| - this.elements = container.elements.first.elements;
|
| + this.elements = container.elements[0].elements;
|
| }
|
|
|
|
|
|
|