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

Side by Side Diff: sdk/lib/html/dartium/html_dartium.dart

Issue 11471004: Hiding FilteredElementList class and fixing FilteredElementList.length. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Really reverting. Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 library html; 1 library html;
2 2
3 import 'dart:collection'; 3 import 'dart:collection';
4 import 'dart:html_common'; 4 import 'dart:html_common';
5 import 'dart:indexed_db'; 5 import 'dart:indexed_db';
6 import 'dart:isolate'; 6 import 'dart:isolate';
7 import 'dart:json'; 7 import 'dart:json';
8 import 'dart:nativewrappers'; 8 import 'dart:nativewrappers';
9 import 'dart:svg' as svg; 9 import 'dart:svg' as svg;
10 import 'dart:web_audio' as web_audio; 10 import 'dart:web_audio' as web_audio;
(...skipping 27350 matching lines...) Expand 10 before | Expand all | Expand 10 after
27361 * This is intended to be overridden by specific implementations. 27361 * This is intended to be overridden by specific implementations.
27362 */ 27362 */
27363 void writeClasses(Set<String> s); 27363 void writeClasses(Set<String> s);
27364 } 27364 }
27365 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 27365 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
27366 // for details. All rights reserved. Use of this source code is governed by a 27366 // for details. All rights reserved. Use of this source code is governed by a
27367 // BSD-style license that can be found in the LICENSE file. 27367 // BSD-style license that can be found in the LICENSE file.
27368 27368
27369 27369
27370 typedef void EventListener(Event event); 27370 typedef void EventListener(Event event);
27371 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
27372 // for details. All rights reserved. Use of this source code is governed by a
27373 // BSD-style license that can be found in the LICENSE file.
27374
27375
27376 class FilteredElementList implements List {
27377 final Node _node;
27378 final List<Node> _childNodes;
27379
27380 FilteredElementList(Node node): _childNodes = node.nodes, _node = node;
27381
27382 // We can't memoize this, since it's possible that children will be messed
27383 // with externally to this class.
27384 //
27385 // TODO(nweiz): Do we really need to copy the list to make the types work out?
27386 List<Element> get _filtered =>
27387 new List.from(_childNodes.filter((n) => n is Element));
27388
27389 void forEach(void f(Element element)) {
27390 _filtered.forEach(f);
27391 }
27392
27393 void operator []=(int index, Element value) {
27394 this[index].replaceWith(value);
27395 }
27396
27397 void set length(int newLength) {
27398 final len = this.length;
27399 if (newLength >= len) {
27400 return;
27401 } else if (newLength < 0) {
27402 throw new ArgumentError("Invalid list length");
27403 }
27404
27405 removeRange(newLength - 1, len - newLength);
27406 }
27407
27408 void add(Element value) {
27409 _childNodes.add(value);
27410 }
27411
27412 void addAll(Collection<Element> collection) {
27413 collection.forEach(add);
27414 }
27415
27416 void addLast(Element value) {
27417 add(value);
27418 }
27419
27420 bool contains(Element element) {
27421 return element is Element && _childNodes.contains(element);
27422 }
27423
27424 void sort([int compare(Element a, Element b)]) {
27425 throw new UnsupportedError('TODO(jacobr): should we impl?');
27426 }
27427
27428 void setRange(int start, int rangeLength, List from, [int startFrom = 0]) {
27429 throw new UnimplementedError();
27430 }
27431
27432 void removeRange(int start, int rangeLength) {
27433 _filtered.getRange(start, rangeLength).forEach((el) => el.remove());
27434 }
27435
27436 void insertRange(int start, int rangeLength, [initialValue = null]) {
27437 throw new UnimplementedError();
27438 }
27439
27440 void clear() {
27441 // Currently, ElementList#clear clears even non-element nodes, so we follow
27442 // that behavior.
27443 _childNodes.clear();
27444 }
27445
27446 Element removeLast() {
27447 final result = this.last;
27448 if (result != null) {
27449 result.remove();
27450 }
27451 return result;
27452 }
27453
27454 Element removeAt(int index) {
27455 final result = this[index];
27456 result.remove();
27457 return result;
27458 }
27459
27460 dynamic reduce(dynamic initialValue,
27461 dynamic combine(dynamic previousValue, Element element)) {
27462 return Collections.reduce(this, initialValue, combine);
27463 }
27464 Collection map(f(Element element)) => _filtered.map(f);
27465 Collection<Element> filter(bool f(Element element)) => _filtered.filter(f);
27466 bool every(bool f(Element element)) => _filtered.every(f);
27467 bool some(bool f(Element element)) => _filtered.some(f);
27468 bool get isEmpty => _filtered.isEmpty;
27469 int get length => _filtered.length;
27470 Element operator [](int index) => _filtered[index];
27471 Iterator<Element> iterator() => _filtered.iterator();
27472 List<Element> getRange(int start, int rangeLength) =>
27473 _filtered.getRange(start, rangeLength);
27474 int indexOf(Element element, [int start = 0]) =>
27475 _filtered.indexOf(element, start);
27476
27477 int lastIndexOf(Element element, [int start = null]) {
27478 if (start == null) start = length - 1;
27479 return _filtered.lastIndexOf(element, start);
27480 }
27481
27482 Element get first => _filtered.first;
27483
27484 Element get last => _filtered.last;
27485 }
27486 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 27371 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
27487 // for details. All rights reserved. Use of this source code is governed by a 27372 // for details. All rights reserved. Use of this source code is governed by a
27488 // BSD-style license that can be found in the LICENSE file. 27373 // BSD-style license that can be found in the LICENSE file.
27489 27374
27490 27375
27491 /** 27376 /**
27492 * Works with KeyboardEvent and KeyEvent to determine how to expose information 27377 * Works with KeyboardEvent and KeyEvent to determine how to expose information
27493 * about Key(board)Events. This class functions like an EventListenerList, and 27378 * about Key(board)Events. This class functions like an EventListenerList, and
27494 * provides a consistent interface for the Dart 27379 * provides a consistent interface for the Dart
27495 * user, despite the fact that a multitude of browsers that have varying 27380 * user, despite the fact that a multitude of browsers that have varying
(...skipping 2336 matching lines...) Expand 10 before | Expand all | Expand 10 after
29832 bool get isEmpty => Maps.isEmpty(this); 29717 bool get isEmpty => Maps.isEmpty(this);
29833 } 29718 }
29834 29719
29835 get _printClosure => (s) { 29720 get _printClosure => (s) {
29836 try { 29721 try {
29837 window.console.log(s); 29722 window.console.log(s);
29838 } catch (_) { 29723 } catch (_) {
29839 _Utils.print(s); 29724 _Utils.print(s);
29840 } 29725 }
29841 }; 29726 };
OLDNEW
« no previous file with comments | « sdk/lib/html/dart2js/html_dart2js.dart ('k') | sdk/lib/html/html_common/filtered_element_list.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698