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

Side by Side Diff: sdk/lib/html/dart2js/html_dart2js.dart

Issue 11348111: Adding support for accessing attributes in alternate namespaces. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Minor cleanup Created 8 years, 1 month 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:isolate'; 3 import 'dart:isolate';
4 import 'dart:json'; 4 import 'dart:json';
5 import 'dart:svg' as svg; 5 import 'dart:svg' as svg;
6 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 6 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
7 // for details. All rights reserved. Use of this source code is governed by a 7 // for details. All rights reserved. Use of this source code is governed by a
8 // BSD-style license that can be found in the LICENSE file. 8 // BSD-style license that can be found in the LICENSE file.
9 9
10 // DO NOT EDIT 10 // DO NOT EDIT
(...skipping 7370 matching lines...) Expand 10 before | Expand all | Expand 10 after
7381 7381
7382 return _list[_index++]; 7382 return _list[_index++];
7383 } 7383 }
7384 7384
7385 /** 7385 /**
7386 * Returns whether the [Iterator] has elements left. 7386 * Returns whether the [Iterator] has elements left.
7387 */ 7387 */
7388 bool get hasNext => _index < _list.length; 7388 bool get hasNext => _index < _list.length;
7389 } 7389 }
7390 7390
7391 class _ElementAttributeMap implements Map<String, String> {
7392
7393 final Element _element;
7394
7395 _ElementAttributeMap(this._element);
7396
7397 bool containsValue(String value) {
7398 final attributes = _element.$dom_attributes;
7399 for (int i = 0, len = attributes.length; i < len; i++) {
7400 if(value == attributes[i].value) {
7401 return true;
7402 }
7403 }
7404 return false;
7405 }
7406
7407 bool containsKey(String key) {
7408 return _element.$dom_hasAttribute(key);
7409 }
7410
7411 String operator [](String key) {
7412 return _element.$dom_getAttribute(key);
7413 }
7414
7415 void operator []=(String key, value) {
7416 _element.$dom_setAttribute(key, '$value');
7417 }
7418
7419 String putIfAbsent(String key, String ifAbsent()) {
7420 if (!containsKey(key)) {
7421 this[key] = ifAbsent();
7422 }
7423 return this[key];
7424 }
7425
7426 String remove(String key) {
7427 String value = _element.$dom_getAttribute(key);
7428 _element.$dom_removeAttribute(key);
7429 return value;
7430 }
7431
7432 void clear() {
7433 final attributes = _element.$dom_attributes;
7434 for (int i = attributes.length - 1; i >= 0; i--) {
7435 remove(attributes[i].name);
7436 }
7437 }
7438
7439 void forEach(void f(String key, String value)) {
7440 final attributes = _element.$dom_attributes;
7441 for (int i = 0, len = attributes.length; i < len; i++) {
7442 final item = attributes[i];
7443 f(item.name, item.value);
7444 }
7445 }
7446
7447 Collection<String> get keys {
7448 // TODO(jacobr): generate a lazy collection instead.
7449 final attributes = _element.$dom_attributes;
7450 final keys = new List<String>(attributes.length);
7451 for (int i = 0, len = attributes.length; i < len; i++) {
7452 keys[i] = attributes[i].name;
7453 }
7454 return keys;
7455 }
7456
7457 Collection<String> get values {
7458 // TODO(jacobr): generate a lazy collection instead.
7459 final attributes = _element.$dom_attributes;
7460 final values = new List<String>(attributes.length);
7461 for (int i = 0, len = attributes.length; i < len; i++) {
7462 values[i] = attributes[i].value;
7463 }
7464 return values;
7465 }
7466
7467 /**
7468 * The number of {key, value} pairs in the map.
7469 */
7470 int get length {
7471 return _element.$dom_attributes.length;
7472 }
7473
7474 /**
7475 * Returns true if there is no {key, value} pair in the map.
7476 */
7477 bool get isEmpty {
7478 return length == 0;
7479 }
7480 }
7481
7482 /**
7483 * Provides a Map abstraction on top of data-* attributes, similar to the
7484 * dataSet in the old DOM.
7485 */
7486 class _DataAttributeMap implements Map<String, String> {
7487
7488 final Map<String, String> $dom_attributes;
7489
7490 _DataAttributeMap(this.$dom_attributes);
7491
7492 // interface Map
7493
7494 // TODO: Use lazy iterator when it is available on Map.
7495 bool containsValue(String value) => values.some((v) => v == value);
7496
7497 bool containsKey(String key) => $dom_attributes.containsKey(_attr(key));
7498
7499 String operator [](String key) => $dom_attributes[_attr(key)];
7500
7501 void operator []=(String key, value) {
7502 $dom_attributes[_attr(key)] = '$value';
7503 }
7504
7505 String putIfAbsent(String key, String ifAbsent()) =>
7506 $dom_attributes.putIfAbsent(_attr(key), ifAbsent);
7507
7508 String remove(String key) => $dom_attributes.remove(_attr(key));
7509
7510 void clear() {
7511 // Needs to operate on a snapshot since we are mutating the collection.
7512 for (String key in keys) {
7513 remove(key);
7514 }
7515 }
7516
7517 void forEach(void f(String key, String value)) {
7518 $dom_attributes.forEach((String key, String value) {
7519 if (_matches(key)) {
7520 f(_strip(key), value);
7521 }
7522 });
7523 }
7524
7525 Collection<String> get keys {
7526 final keys = new List<String>();
7527 $dom_attributes.forEach((String key, String value) {
7528 if (_matches(key)) {
7529 keys.add(_strip(key));
7530 }
7531 });
7532 return keys;
7533 }
7534
7535 Collection<String> get values {
7536 final values = new List<String>();
7537 $dom_attributes.forEach((String key, String value) {
7538 if (_matches(key)) {
7539 values.add(value);
7540 }
7541 });
7542 return values;
7543 }
7544
7545 int get length => keys.length;
7546
7547 // TODO: Use lazy iterator when it is available on Map.
7548 bool get isEmpty => length == 0;
7549
7550 // Helpers.
7551 String _attr(String key) => 'data-$key';
7552 bool _matches(String key) => key.startsWith('data-');
7553 String _strip(String key) => key.substring(5);
7554 }
7555
7556 class _ElementCssClassSet extends CssClassSet { 7391 class _ElementCssClassSet extends CssClassSet {
7557 7392
7558 final Element _element; 7393 final Element _element;
7559 7394
7560 _ElementCssClassSet(this._element); 7395 _ElementCssClassSet(this._element);
7561 7396
7562 Set<String> readClasses() { 7397 Set<String> readClasses() {
7563 var s = new Set<String>(); 7398 var s = new Set<String>();
7564 var classname = _element.$dom_className; 7399 var classname = _element.$dom_className;
7565 7400
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
7647 new _DataAttributeMap(attributes); 7482 new _DataAttributeMap(attributes);
7648 7483
7649 void set dataAttributes(Map<String, String> value) { 7484 void set dataAttributes(Map<String, String> value) {
7650 final dataAttributes = this.dataAttributes; 7485 final dataAttributes = this.dataAttributes;
7651 dataAttributes.clear(); 7486 dataAttributes.clear();
7652 for (String key in value.keys) { 7487 for (String key in value.keys) {
7653 dataAttributes[key] = value[key]; 7488 dataAttributes[key] = value[key];
7654 } 7489 }
7655 } 7490 }
7656 7491
7492 /**
7493 * Gets a map for manipulating the attributes of a particular namespace.
7494 * This is primarily useful for SVG attributes such as xref:link.
7495 */
7496 Map<String, String> getNamespacedAttributes(String namespace) {
7497 return new _NamespacedAttributeMap(this, namespace);
7498 }
7499
7657 /** @domName Window.getComputedStyle */ 7500 /** @domName Window.getComputedStyle */
7658 Future<CSSStyleDeclaration> get computedStyle { 7501 Future<CSSStyleDeclaration> get computedStyle {
7659 // TODO(jacobr): last param should be null, see b/5045788 7502 // TODO(jacobr): last param should be null, see b/5045788
7660 return getComputedStyle(''); 7503 return getComputedStyle('');
7661 } 7504 }
7662 7505
7663 /** @domName Window.getComputedStyle */ 7506 /** @domName Window.getComputedStyle */
7664 Future<CSSStyleDeclaration> getComputedStyle(String pseudoElement) { 7507 Future<CSSStyleDeclaration> getComputedStyle(String pseudoElement) {
7665 return _createMeasurementFuture( 7508 return _createMeasurementFuture(
7666 () => window.$dom_getComputedStyle(this, pseudoElement), 7509 () => window.$dom_getComputedStyle(this, pseudoElement),
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
7884 7727
7885 /** @domName Element.blur */ 7728 /** @domName Element.blur */
7886 void blur() native; 7729 void blur() native;
7887 7730
7888 /** @domName Element.focus */ 7731 /** @domName Element.focus */
7889 void focus() native; 7732 void focus() native;
7890 7733
7891 /** @domName Element.getAttribute */ 7734 /** @domName Element.getAttribute */
7892 String $dom_getAttribute(String name) native "getAttribute"; 7735 String $dom_getAttribute(String name) native "getAttribute";
7893 7736
7737 /** @domName Element.getAttributeNS */
7738 String $dom_getAttributeNS(String namespaceURI, String localName) native "getA ttributeNS";
7739
7894 /** @domName Element.getBoundingClientRect */ 7740 /** @domName Element.getBoundingClientRect */
7895 ClientRect getBoundingClientRect() native; 7741 ClientRect getBoundingClientRect() native;
7896 7742
7897 /** @domName Element.getClientRects */ 7743 /** @domName Element.getClientRects */
7898 List<ClientRect> getClientRects() native; 7744 List<ClientRect> getClientRects() native;
7899 7745
7900 /** @domName Element.getElementsByClassName */ 7746 /** @domName Element.getElementsByClassName */
7901 List<Node> $dom_getElementsByClassName(String name) native "getElementsByClass Name"; 7747 List<Node> $dom_getElementsByClassName(String name) native "getElementsByClass Name";
7902 7748
7903 /** @domName Element.getElementsByTagName */ 7749 /** @domName Element.getElementsByTagName */
7904 List<Node> $dom_getElementsByTagName(String name) native "getElementsByTagName "; 7750 List<Node> $dom_getElementsByTagName(String name) native "getElementsByTagName ";
7905 7751
7906 /** @domName Element.hasAttribute */ 7752 /** @domName Element.hasAttribute */
7907 bool $dom_hasAttribute(String name) native "hasAttribute"; 7753 bool $dom_hasAttribute(String name) native "hasAttribute";
7908 7754
7755 /** @domName Element.hasAttributeNS */
7756 bool $dom_hasAttributeNS(String namespaceURI, String localName) native "hasAtt ributeNS";
7757
7909 /** @domName Element.querySelector */ 7758 /** @domName Element.querySelector */
7910 Element $dom_querySelector(String selectors) native "querySelector"; 7759 Element $dom_querySelector(String selectors) native "querySelector";
7911 7760
7912 /** @domName Element.querySelectorAll */ 7761 /** @domName Element.querySelectorAll */
7913 List<Node> $dom_querySelectorAll(String selectors) native "querySelectorAll"; 7762 List<Node> $dom_querySelectorAll(String selectors) native "querySelectorAll";
7914 7763
7915 /** @domName Element.removeAttribute */ 7764 /** @domName Element.removeAttribute */
7916 void $dom_removeAttribute(String name) native "removeAttribute"; 7765 void $dom_removeAttribute(String name) native "removeAttribute";
7917 7766
7767 /** @domName Element.removeAttributeNS */
7768 void $dom_removeAttributeNS(String namespaceURI, String localName) native "rem oveAttributeNS";
7769
7918 /** @domName Element.scrollByLines */ 7770 /** @domName Element.scrollByLines */
7919 void scrollByLines(int lines) native; 7771 void scrollByLines(int lines) native;
7920 7772
7921 /** @domName Element.scrollByPages */ 7773 /** @domName Element.scrollByPages */
7922 void scrollByPages(int pages) native; 7774 void scrollByPages(int pages) native;
7923 7775
7924 /** @domName Element.scrollIntoViewIfNeeded */ 7776 /** @domName Element.scrollIntoViewIfNeeded */
7925 void scrollIntoView([bool centerIfNeeded]) native "scrollIntoViewIfNeeded"; 7777 void scrollIntoView([bool centerIfNeeded]) native "scrollIntoViewIfNeeded";
7926 7778
7927 /** @domName Element.setAttribute */ 7779 /** @domName Element.setAttribute */
7928 void $dom_setAttribute(String name, String value) native "setAttribute"; 7780 void $dom_setAttribute(String name, String value) native "setAttribute";
7929 7781
7782 /** @domName Element.setAttributeNS */
7783 void $dom_setAttributeNS(String namespaceURI, String qualifiedName, String val ue) native "setAttributeNS";
7784
7930 /** @domName Element.webkitMatchesSelector */ 7785 /** @domName Element.webkitMatchesSelector */
7931 bool matchesSelector(String selectors) native "webkitMatchesSelector"; 7786 bool matchesSelector(String selectors) native "webkitMatchesSelector";
7932 7787
7933 /** @domName Element.webkitRequestFullScreen */ 7788 /** @domName Element.webkitRequestFullScreen */
7934 void webkitRequestFullScreen(int flags) native; 7789 void webkitRequestFullScreen(int flags) native;
7935 7790
7936 /** @domName Element.webkitRequestFullscreen */ 7791 /** @domName Element.webkitRequestFullscreen */
7937 void webkitRequestFullscreen() native; 7792 void webkitRequestFullscreen() native;
7938 7793
7939 /** @domName Element.webkitRequestPointerLock */ 7794 /** @domName Element.webkitRequestPointerLock */
(...skipping 6011 matching lines...) Expand 10 before | Expand all | Expand 10 after
13951 13806
13952 /** @domName Node.childNodes */ 13807 /** @domName Node.childNodes */
13953 List<Node> get $dom_childNodes => JS("List<Node>", "#.childNodes", this); 13808 List<Node> get $dom_childNodes => JS("List<Node>", "#.childNodes", this);
13954 13809
13955 /** @domName Node.firstChild */ 13810 /** @domName Node.firstChild */
13956 Node get $dom_firstChild => JS("Node", "#.firstChild", this); 13811 Node get $dom_firstChild => JS("Node", "#.firstChild", this);
13957 13812
13958 /** @domName Node.lastChild */ 13813 /** @domName Node.lastChild */
13959 Node get $dom_lastChild => JS("Node", "#.lastChild", this); 13814 Node get $dom_lastChild => JS("Node", "#.lastChild", this);
13960 13815
13816 /** @domName Node.localName */
13817 String get $dom_localName => JS("String", "#.localName", this);
13818
13819 /** @domName Node.namespaceURI */
13820 String get $dom_namespaceURI => JS("String", "#.namespaceURI", this);
13821
13961 /** @domName Node.nextSibling */ 13822 /** @domName Node.nextSibling */
13962 Node get nextNode => JS("Node", "#.nextSibling", this); 13823 Node get nextNode => JS("Node", "#.nextSibling", this);
13963 13824
13964 /** @domName Node.nodeType */ 13825 /** @domName Node.nodeType */
13965 final int nodeType; 13826 final int nodeType;
13966 13827
13967 /** @domName Node.ownerDocument */ 13828 /** @domName Node.ownerDocument */
13968 Document get document => JS("Document", "#.ownerDocument", this); 13829 Document get document => JS("Document", "#.ownerDocument", this);
13969 13830
13970 /** @domName Node.parentNode */ 13831 /** @domName Node.parentNode */
(...skipping 8491 matching lines...) Expand 10 before | Expand all | Expand 10 after
22462 22323
22463 class _XSLTProcessorFactoryProvider { 22324 class _XSLTProcessorFactoryProvider {
22464 static XSLTProcessor createXSLTProcessor() => 22325 static XSLTProcessor createXSLTProcessor() =>
22465 JS('XSLTProcessor', 'new XSLTProcessor()' ); 22326 JS('XSLTProcessor', 'new XSLTProcessor()' );
22466 } 22327 }
22467 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 22328 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
22468 // for details. All rights reserved. Use of this source code is governed by a 22329 // for details. All rights reserved. Use of this source code is governed by a
22469 // BSD-style license that can be found in the LICENSE file. 22330 // BSD-style license that can be found in the LICENSE file.
22470 22331
22471 22332
22333 abstract class _AttributeMap implements Map<String, String> {
22334
22335 bool containsValue(String value) {
22336 for (var v in this.values) {
22337 if (value == v) {
22338 return true;
22339 }
22340 }
22341 return false;
22342 }
22343
22344 String putIfAbsent(String key, String ifAbsent()) {
22345 if (!containsKey(key)) {
22346 this[key] = ifAbsent();
22347 }
22348 return this[key];
22349 }
22350
22351 void clear() {
22352 for (var key in keys) {
22353 remove(key);
22354 }
22355 }
22356
22357 void forEach(void f(String key, String value)) {
22358 for (var key in keys) {
22359 var value = this[key];
22360 f(key, value);
22361 }
22362 }
22363
22364 Collection<String> get keys {
22365 // TODO: generate a lazy collection instead.
22366 var attributes = _element.$dom_attributes;
22367 var keys = new List<String>();
22368 for (int i = 0, len = attributes.length; i < len; i++) {
22369 if (_matches(attributes[i])) {
22370 keys.add(attributes[i].$dom_localName);
22371 }
22372 }
22373 return keys;
22374 }
22375
22376 Collection<String> get values {
22377 // TODO: generate a lazy collection instead.
22378 var attributes = _element.$dom_attributes;
22379 var values = new List<String>();
22380 for (int i = 0, len = attributes.length; i < len; i++) {
22381 if (_matches(attributes[i])) {
22382 values.add(attributes[i].value);
22383 }
22384 }
22385 return values;
22386 }
22387
22388 /**
22389 * Returns true if there is no {key, value} pair in the map.
22390 */
22391 bool get isEmpty {
22392 return length == 0;
22393 }
22394
22395 /**
22396 * Checks to see if the node should be included in this map.
22397 */
22398 bool _matches(Node node);
22399 }
22400
22401 /**
22402 * Wrapper to expose Element.attributes as a typed map.
22403 */
22404 class _ElementAttributeMap extends _AttributeMap {
22405
22406 final Element _element;
22407
22408 _ElementAttributeMap(this._element);
22409
22410 bool containsKey(String key) {
22411 return _element.$dom_hasAttribute(key);
22412 }
22413
22414 String operator [](String key) {
22415 return _element.$dom_getAttribute(key);
22416 }
22417
22418 void operator []=(String key, value) {
22419 _element.$dom_setAttribute(key, '$value');
22420 }
22421
22422 String remove(String key) {
22423 String value = _element.$dom_getAttribute(key);
22424 _element.$dom_removeAttribute(key);
22425 return value;
22426 }
22427
22428 /**
22429 * The number of {key, value} pairs in the map.
22430 */
22431 int get length {
22432 return keys.length;
22433 }
22434
22435 bool _matches(Node node) => node.$dom_namespaceURI == null;
22436 }
22437
22438 /**
22439 * Wrapper to expose namespaced attributes as a typed map.
22440 */
22441 class _NamespacedAttributeMap extends _AttributeMap {
22442
22443 final Element _element;
22444 final String _namespace;
22445
22446 _NamespacedAttributeMap(this._element, this._namespace);
22447
22448 bool containsKey(String key) {
22449 return _element.$dom_hasAttributeNS(_namespace, key);
22450 }
22451
22452 String operator [](String key) {
22453 return _element.$dom_getAttributeNS(_namespace, key);
22454 }
22455
22456 void operator []=(String key, value) {
22457 _element.$dom_setAttributeNS(_namespace, key, '$value');
22458 }
22459
22460 String remove(String key) {
22461 String value = this[key];
22462 _element.$dom_removeAttributeNS(_namespace, key);
22463 return value;
22464 }
22465
22466 /**
22467 * The number of {key, value} pairs in the map.
22468 */
22469 int get length {
22470 return keys.length;
22471 }
22472
22473 bool _matches(Node node) => node.$dom_namespaceURI == _namespace;
22474 }
22475
22476
22477 /**
22478 * Provides a Map abstraction on top of data-* attributes, similar to the
22479 * dataSet in the old DOM.
22480 */
22481 class _DataAttributeMap implements Map<String, String> {
22482
22483 final Map<String, String> $dom_attributes;
22484
22485 _DataAttributeMap(this.$dom_attributes);
22486
22487 // interface Map
22488
22489 // TODO: Use lazy iterator when it is available on Map.
22490 bool containsValue(String value) => values.some((v) => v == value);
22491
22492 bool containsKey(String key) => $dom_attributes.containsKey(_attr(key));
22493
22494 String operator [](String key) => $dom_attributes[_attr(key)];
22495
22496 void operator []=(String key, value) {
22497 $dom_attributes[_attr(key)] = '$value';
22498 }
22499
22500 String putIfAbsent(String key, String ifAbsent()) =>
22501 $dom_attributes.putIfAbsent(_attr(key), ifAbsent);
22502
22503 String remove(String key) => $dom_attributes.remove(_attr(key));
22504
22505 void clear() {
22506 // Needs to operate on a snapshot since we are mutating the collection.
22507 for (String key in keys) {
22508 remove(key);
22509 }
22510 }
22511
22512 void forEach(void f(String key, String value)) {
22513 $dom_attributes.forEach((String key, String value) {
22514 if (_matches(key)) {
22515 f(_strip(key), value);
22516 }
22517 });
22518 }
22519
22520 Collection<String> get keys {
22521 final keys = new List<String>();
22522 $dom_attributes.forEach((String key, String value) {
22523 if (_matches(key)) {
22524 keys.add(_strip(key));
22525 }
22526 });
22527 return keys;
22528 }
22529
22530 Collection<String> get values {
22531 final values = new List<String>();
22532 $dom_attributes.forEach((String key, String value) {
22533 if (_matches(key)) {
22534 values.add(value);
22535 }
22536 });
22537 return values;
22538 }
22539
22540 int get length => keys.length;
22541
22542 // TODO: Use lazy iterator when it is available on Map.
22543 bool get isEmpty => length == 0;
22544
22545 // Helpers.
22546 String _attr(String key) => 'data-$key';
22547 bool _matches(String key) => key.startsWith('data-');
22548 String _strip(String key) => key.substring(5);
22549 }
22550 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
22551 // for details. All rights reserved. Use of this source code is governed by a
22552 // BSD-style license that can be found in the LICENSE file.
22553
22554
22472 /** 22555 /**
22473 * An object representing the top-level context object for web scripting. 22556 * An object representing the top-level context object for web scripting.
22474 * 22557 *
22475 * In a web browser, a [Window] object represents the actual browser window. 22558 * In a web browser, a [Window] object represents the actual browser window.
22476 * In a multi-tabbed browser, each tab has its own [Window] object. A [Window] 22559 * In a multi-tabbed browser, each tab has its own [Window] object. A [Window]
22477 * is the container that displays a [Document]'s content. All web scripting 22560 * is the container that displays a [Document]'s content. All web scripting
22478 * happens within the context of a [Window] object. 22561 * happens within the context of a [Window] object.
22479 * 22562 *
22480 * **Note:** This class represents any window, whereas [LocalWindow] is 22563 * **Note:** This class represents any window, whereas [LocalWindow] is
22481 * used to access the properties and content of the current window. 22564 * used to access the properties and content of the current window.
(...skipping 2850 matching lines...) Expand 10 before | Expand all | Expand 10 after
25332 if (length < 0) throw new ArgumentError('length'); 25415 if (length < 0) throw new ArgumentError('length');
25333 if (start < 0) throw new RangeError.value(start); 25416 if (start < 0) throw new RangeError.value(start);
25334 int end = start + length; 25417 int end = start + length;
25335 if (end > a.length) throw new RangeError.value(end); 25418 if (end > a.length) throw new RangeError.value(end);
25336 for (int i = start; i < end; i++) { 25419 for (int i = start; i < end; i++) {
25337 accumulator.add(a[i]); 25420 accumulator.add(a[i]);
25338 } 25421 }
25339 return accumulator; 25422 return accumulator;
25340 } 25423 }
25341 } 25424 }
OLDNEW
« no previous file with comments | « no previous file | sdk/lib/html/dartium/html_dartium.dart » ('j') | sdk/lib/html/src/AttributeMap.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698