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

Unified Diff: lib/html/dartium/html_dartium.dart

Side-by-side diff isn't available for this file because of its large size.
Issue 10979063: Removing ElementList. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Syncing. Created 8 years, 2 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:
Download patch
« no previous file with comments | « lib/html/dart2js/html_dart2js.dart ('k') | lib/html/templates/html/dart2js/html_dart2js.darttemplate » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
}
« no previous file with comments | « lib/html/dart2js/html_dart2js.dart ('k') | lib/html/templates/html/dart2js/html_dart2js.darttemplate » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698