| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 // TODO(jacobr): use _Lists.dart to remove some of the duplicated | 5 // TODO(jacobr): use _Lists.dart to remove some of the duplicated |
| 6 // functionality. | 6 // functionality. |
| 7 class _ChildrenElementList implements List { | 7 class _ChildrenElementList implements List { |
| 8 // Raw Element. | 8 // Raw Element. |
| 9 final _ElementImpl _element; | 9 final _ElementImpl _element; |
| 10 final _HTMLCollectionImpl _childElements; | 10 final _HTMLCollectionImpl _childElements; |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 345 } | 345 } |
| 346 | 346 |
| 347 void forEach(void f(String key, String value)) { | 347 void forEach(void f(String key, String value)) { |
| 348 final attributes = _element.$dom_attributes; | 348 final attributes = _element.$dom_attributes; |
| 349 for (int i = 0, len = attributes.length; i < len; i++) { | 349 for (int i = 0, len = attributes.length; i < len; i++) { |
| 350 final item = attributes[i]; | 350 final item = attributes[i]; |
| 351 f(item.name, item.value); | 351 f(item.name, item.value); |
| 352 } | 352 } |
| 353 } | 353 } |
| 354 | 354 |
| 355 Collection<String> getKeys() { | 355 Collection<String> get keys { |
| 356 // TODO(jacobr): generate a lazy collection instead. | 356 // TODO(jacobr): generate a lazy collection instead. |
| 357 final attributes = _element.$dom_attributes; | 357 final attributes = _element.$dom_attributes; |
| 358 final keys = new List<String>(attributes.length); | 358 final keys = new List<String>(attributes.length); |
| 359 for (int i = 0, len = attributes.length; i < len; i++) { | 359 for (int i = 0, len = attributes.length; i < len; i++) { |
| 360 keys[i] = attributes[i].name; | 360 keys[i] = attributes[i].name; |
| 361 } | 361 } |
| 362 return keys; | 362 return keys; |
| 363 } | 363 } |
| 364 | 364 |
| 365 Collection<String> getValues() { | 365 Collection<String> get values { |
| 366 // TODO(jacobr): generate a lazy collection instead. | 366 // TODO(jacobr): generate a lazy collection instead. |
| 367 final attributes = _element.$dom_attributes; | 367 final attributes = _element.$dom_attributes; |
| 368 final values = new List<String>(attributes.length); | 368 final values = new List<String>(attributes.length); |
| 369 for (int i = 0, len = attributes.length; i < len; i++) { | 369 for (int i = 0, len = attributes.length; i < len; i++) { |
| 370 values[i] = attributes[i].value; | 370 values[i] = attributes[i].value; |
| 371 } | 371 } |
| 372 return values; | 372 return values; |
| 373 } | 373 } |
| 374 | 374 |
| 375 /** | 375 /** |
| (...skipping 17 matching lines...) Expand all Loading... |
| 393 */ | 393 */ |
| 394 class _DataAttributeMap implements AttributeMap { | 394 class _DataAttributeMap implements AttributeMap { |
| 395 | 395 |
| 396 final Map<String, String> $dom_attributes; | 396 final Map<String, String> $dom_attributes; |
| 397 | 397 |
| 398 _DataAttributeMap(this.$dom_attributes); | 398 _DataAttributeMap(this.$dom_attributes); |
| 399 | 399 |
| 400 // interface Map | 400 // interface Map |
| 401 | 401 |
| 402 // TODO: Use lazy iterator when it is available on Map. | 402 // TODO: Use lazy iterator when it is available on Map. |
| 403 bool containsValue(String value) => getValues().some((v) => v == value); | 403 bool containsValue(String value) => values.some((v) => v == value); |
| 404 | 404 |
| 405 bool containsKey(String key) => $dom_attributes.containsKey(_attr(key)); | 405 bool containsKey(String key) => $dom_attributes.containsKey(_attr(key)); |
| 406 | 406 |
| 407 String operator [](String key) => $dom_attributes[_attr(key)]; | 407 String operator [](String key) => $dom_attributes[_attr(key)]; |
| 408 | 408 |
| 409 void operator []=(String key, value) { | 409 void operator []=(String key, value) { |
| 410 $dom_attributes[_attr(key)] = '$value'; | 410 $dom_attributes[_attr(key)] = '$value'; |
| 411 } | 411 } |
| 412 | 412 |
| 413 String putIfAbsent(String key, String ifAbsent()) => | 413 String putIfAbsent(String key, String ifAbsent()) => |
| 414 $dom_attributes.putIfAbsent(_attr(key), ifAbsent); | 414 $dom_attributes.putIfAbsent(_attr(key), ifAbsent); |
| 415 | 415 |
| 416 String remove(String key) => $dom_attributes.remove(_attr(key)); | 416 String remove(String key) => $dom_attributes.remove(_attr(key)); |
| 417 | 417 |
| 418 void clear() { | 418 void clear() { |
| 419 // Needs to operate on a snapshot since we are mutating the collection. | 419 // Needs to operate on a snapshot since we are mutating the collection. |
| 420 for (String key in getKeys()) { | 420 for (String key in keys) { |
| 421 remove(key); | 421 remove(key); |
| 422 } | 422 } |
| 423 } | 423 } |
| 424 | 424 |
| 425 void forEach(void f(String key, String value)) { | 425 void forEach(void f(String key, String value)) { |
| 426 $dom_attributes.forEach((String key, String value) { | 426 $dom_attributes.forEach((String key, String value) { |
| 427 if (_matches(key)) { | 427 if (_matches(key)) { |
| 428 f(_strip(key), value); | 428 f(_strip(key), value); |
| 429 } | 429 } |
| 430 }); | 430 }); |
| 431 } | 431 } |
| 432 | 432 |
| 433 Collection<String> getKeys() { | 433 Collection<String> get keys { |
| 434 final keys = new List<String>(); | 434 final keys = new List<String>(); |
| 435 $dom_attributes.forEach((String key, String value) { | 435 $dom_attributes.forEach((String key, String value) { |
| 436 if (_matches(key)) { | 436 if (_matches(key)) { |
| 437 keys.add(_strip(key)); | 437 keys.add(_strip(key)); |
| 438 } | 438 } |
| 439 }); | 439 }); |
| 440 return keys; | 440 return keys; |
| 441 } | 441 } |
| 442 | 442 |
| 443 Collection<String> getValues() { | 443 Collection<String> get values { |
| 444 final values = new List<String>(); | 444 final values = new List<String>(); |
| 445 $dom_attributes.forEach((String key, String value) { | 445 $dom_attributes.forEach((String key, String value) { |
| 446 if (_matches(key)) { | 446 if (_matches(key)) { |
| 447 values.add(value); | 447 values.add(value); |
| 448 } | 448 } |
| 449 }); | 449 }); |
| 450 return values; | 450 return values; |
| 451 } | 451 } |
| 452 | 452 |
| 453 int get length => getKeys().length; | 453 int get length => keys.length; |
| 454 | 454 |
| 455 // TODO: Use lazy iterator when it is available on Map. | 455 // TODO: Use lazy iterator when it is available on Map. |
| 456 bool get isEmpty => length == 0; | 456 bool get isEmpty => length == 0; |
| 457 | 457 |
| 458 // Helpers. | 458 // Helpers. |
| 459 String _attr(String key) => 'data-$key'; | 459 String _attr(String key) => 'data-$key'; |
| 460 bool _matches(String key) => key.startsWith('data-'); | 460 bool _matches(String key) => key.startsWith('data-'); |
| 461 String _strip(String key) => key.substring(5); | 461 String _strip(String key) => key.substring(5); |
| 462 } | 462 } |
| 463 | 463 |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 665 | 665 |
| 666 /** | 666 /** |
| 667 * @domName Element.hasAttribute, Element.getAttribute, Element.setAttribute, | 667 * @domName Element.hasAttribute, Element.getAttribute, Element.setAttribute, |
| 668 * Element.removeAttribute | 668 * Element.removeAttribute |
| 669 */ | 669 */ |
| 670 _ElementAttributeMap get attributes => new _ElementAttributeMap(this); | 670 _ElementAttributeMap get attributes => new _ElementAttributeMap(this); |
| 671 | 671 |
| 672 void set attributes(Map<String, String> value) { | 672 void set attributes(Map<String, String> value) { |
| 673 Map<String, String> attributes = this.attributes; | 673 Map<String, String> attributes = this.attributes; |
| 674 attributes.clear(); | 674 attributes.clear(); |
| 675 for (String key in value.getKeys()) { | 675 for (String key in value.keys) { |
| 676 attributes[key] = value[key]; | 676 attributes[key] = value[key]; |
| 677 } | 677 } |
| 678 } | 678 } |
| 679 | 679 |
| 680 void set elements(Collection<Element> value) { | 680 void set elements(Collection<Element> value) { |
| 681 final elements = this.elements; | 681 final elements = this.elements; |
| 682 elements.clear(); | 682 elements.clear(); |
| 683 elements.addAll(value); | 683 elements.addAll(value); |
| 684 } | 684 } |
| 685 | 685 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 697 classSet.clear(); | 697 classSet.clear(); |
| 698 classSet.addAll(value); | 698 classSet.addAll(value); |
| 699 } | 699 } |
| 700 | 700 |
| 701 Map<String, String> get dataAttributes => | 701 Map<String, String> get dataAttributes => |
| 702 new _DataAttributeMap(attributes); | 702 new _DataAttributeMap(attributes); |
| 703 | 703 |
| 704 void set dataAttributes(Map<String, String> value) { | 704 void set dataAttributes(Map<String, String> value) { |
| 705 final dataAttributes = this.dataAttributes; | 705 final dataAttributes = this.dataAttributes; |
| 706 dataAttributes.clear(); | 706 dataAttributes.clear(); |
| 707 for (String key in value.getKeys()) { | 707 for (String key in value.keys) { |
| 708 dataAttributes[key] = value[key]; | 708 dataAttributes[key] = value[key]; |
| 709 } | 709 } |
| 710 } | 710 } |
| 711 | 711 |
| 712 Future<ElementRect> get rect { | 712 Future<ElementRect> get rect { |
| 713 return _createMeasurementFuture( | 713 return _createMeasurementFuture( |
| 714 () => new _ElementRectImpl(this), | 714 () => new _ElementRectImpl(this), |
| 715 new Completer<ElementRect>()); | 715 new Completer<ElementRect>()); |
| 716 } | 716 } |
| 717 | 717 |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 871 $if DART2JS | 871 $if DART2JS |
| 872 // Optimization to improve performance until the dart2js compiler inlines this | 872 // Optimization to improve performance until the dart2js compiler inlines this |
| 873 // method. | 873 // method. |
| 874 static Element createElement_tag(String tag) => | 874 static Element createElement_tag(String tag) => |
| 875 JS('Element', 'document.createElement(#)', tag); | 875 JS('Element', 'document.createElement(#)', tag); |
| 876 $else | 876 $else |
| 877 static Element createElement_tag(String tag) => | 877 static Element createElement_tag(String tag) => |
| 878 _document.$dom_createElement(tag); | 878 _document.$dom_createElement(tag); |
| 879 $endif | 879 $endif |
| 880 } | 880 } |
| OLD | NEW |