| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 functionality. | 5 // TODO(jacobr): use Lists.dart to remove some of the duplicated functionality. |
| 6 class _ChildrenElementList implements ElementList { | 6 class _ChildrenElementList implements ElementList { |
| 7 // Raw Element. | 7 // Raw Element. |
| 8 final _element; | 8 final _element; |
| 9 final _childElements; | 9 final _childElements; |
| 10 | 10 |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 bool containsValue(String value) { | 285 bool containsValue(String value) { |
| 286 final attributes = _element.attributes; | 286 final attributes = _element.attributes; |
| 287 for (int i = 0, len = attributes.length; i < len; i++) { | 287 for (int i = 0, len = attributes.length; i < len; i++) { |
| 288 if(value == attributes.item(i).value) { | 288 if(value == attributes.item(i).value) { |
| 289 return true; | 289 return true; |
| 290 } | 290 } |
| 291 } | 291 } |
| 292 return false; | 292 return false; |
| 293 } | 293 } |
| 294 | 294 |
| 295 /** @domName Element.hasAttribute */ |
| 295 bool containsKey(String key) { | 296 bool containsKey(String key) { |
| 296 return _element.hasAttribute(key); | 297 return _element.hasAttribute(key); |
| 297 } | 298 } |
| 298 | 299 |
| 300 /** @domName Element.getAttribute */ |
| 299 String operator [](String key) { | 301 String operator [](String key) { |
| 300 return _element.getAttribute(key); | 302 return _element.getAttribute(key); |
| 301 } | 303 } |
| 302 | 304 |
| 305 /** @domName Element.setAttribute */ |
| 303 void operator []=(String key, String value) { | 306 void operator []=(String key, String value) { |
| 304 _element.setAttribute(key, value); | 307 _element.setAttribute(key, value); |
| 305 } | 308 } |
| 306 | 309 |
| 307 String putIfAbsent(String key, String ifAbsent()) { | 310 String putIfAbsent(String key, String ifAbsent()) { |
| 308 if (!containsKey(key)) { | 311 if (!containsKey(key)) { |
| 309 this[key] = ifAbsent(); | 312 this[key] = ifAbsent(); |
| 310 } | 313 } |
| 311 } | 314 } |
| 312 | 315 |
| 316 /** @domName Element.removeAttribute */ |
| 313 String remove(String key) { | 317 String remove(String key) { |
| 314 _element.removeAttribute(key); | 318 _element.removeAttribute(key); |
| 315 } | 319 } |
| 316 | 320 |
| 317 void clear() { | 321 void clear() { |
| 318 final attributes = _element.attributes; | 322 final attributes = _element.attributes; |
| 319 for (int i = attributes.length - 1; i >= 0; i--) { | 323 for (int i = attributes.length - 1; i >= 0; i--) { |
| 320 _element.removeAttribute(attributes.item(i).name); | 324 _element.removeAttribute(attributes.item(i).name); |
| 321 } | 325 } |
| 322 } | 326 } |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 431 } | 435 } |
| 432 | 436 |
| 433 String toString() => "($left, $top, $width, $height)"; | 437 String toString() => "($left, $top, $width, $height)"; |
| 434 } | 438 } |
| 435 | 439 |
| 436 // TODO(jacobr): we cannot currently be lazy about calculating the client | 440 // TODO(jacobr): we cannot currently be lazy about calculating the client |
| 437 // rects as we must perform all measurement queries at a safe point to avoid | 441 // rects as we must perform all measurement queries at a safe point to avoid |
| 438 // triggering unneeded layouts. | 442 // triggering unneeded layouts. |
| 439 /** | 443 /** |
| 440 * All your element measurement needs in one place | 444 * All your element measurement needs in one place |
| 445 * @domName none |
| 441 */ | 446 */ |
| 442 class ElementRectWrappingImplementation implements ElementRect { | 447 class ElementRectWrappingImplementation implements ElementRect { |
| 443 final ClientRect client; | 448 final ClientRect client; |
| 444 final ClientRect offset; | 449 final ClientRect offset; |
| 445 final ClientRect scroll; | 450 final ClientRect scroll; |
| 446 | 451 |
| 447 // TODO(jacobr): should we move these outside of ElementRect to avoid the | 452 // TODO(jacobr): should we move these outside of ElementRect to avoid the |
| 448 // overhead of computing them every time even though they are rarely used. | 453 // overhead of computing them every time even though they are rarely used. |
| 449 // This should be type dom.ClientRect but that fails on dartium. b/5522629 | 454 // This should be type dom.ClientRect but that fails on dartium. b/5522629 |
| 450 final _boundingClientRect; | 455 final _boundingClientRect; |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 664 } | 669 } |
| 665 | 670 |
| 666 bool contains(Node element) { | 671 bool contains(Node element) { |
| 667 return _ptr.contains(LevelDom.unwrap(element)); | 672 return _ptr.contains(LevelDom.unwrap(element)); |
| 668 } | 673 } |
| 669 | 674 |
| 670 void focus() { | 675 void focus() { |
| 671 _ptr.focus(); | 676 _ptr.focus(); |
| 672 } | 677 } |
| 673 | 678 |
| 679 /** @domName HTMLElement.insertAdjacentElement */ |
| 674 Element insertAdjacentElement([String where = null, Element element = null]) { | 680 Element insertAdjacentElement([String where = null, Element element = null]) { |
| 675 return LevelDom.wrapElement(_ptr.insertAdjacentElement(where, LevelDom.unwra
p(element))); | 681 return LevelDom.wrapElement(_ptr.insertAdjacentElement(where, LevelDom.unwra
p(element))); |
| 676 } | 682 } |
| 677 | 683 |
| 684 /** @domName HTMLElement.insertAdjacentHTML */ |
| 678 void insertAdjacentHTML([String position_OR_where = null, String text = null])
{ | 685 void insertAdjacentHTML([String position_OR_where = null, String text = null])
{ |
| 679 _ptr.insertAdjacentHTML(position_OR_where, text); | 686 _ptr.insertAdjacentHTML(position_OR_where, text); |
| 680 } | 687 } |
| 681 | 688 |
| 689 /** @domName HTMLElement.insertAdjacentText */ |
| 682 void insertAdjacentText([String where = null, String text = null]) { | 690 void insertAdjacentText([String where = null, String text = null]) { |
| 683 _ptr.insertAdjacentText(where, text); | 691 _ptr.insertAdjacentText(where, text); |
| 684 } | 692 } |
| 685 | 693 |
| 686 Element query(String selectors) { | 694 Element query(String selectors) { |
| 687 // TODO(jacobr): scope fix. | 695 // TODO(jacobr): scope fix. |
| 688 return LevelDom.wrapElement(_ptr.querySelector(selectors)); | 696 return LevelDom.wrapElement(_ptr.querySelector(selectors)); |
| 689 } | 697 } |
| 690 | 698 |
| 691 ElementList queryAll(String selectors) { | 699 ElementList queryAll(String selectors) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 706 } | 714 } |
| 707 | 715 |
| 708 bool matchesSelector([String selectors = null]) { | 716 bool matchesSelector([String selectors = null]) { |
| 709 return _ptr.webkitMatchesSelector(selectors); | 717 return _ptr.webkitMatchesSelector(selectors); |
| 710 } | 718 } |
| 711 | 719 |
| 712 void set scrollLeft(int value) { _ptr.scrollLeft = value; } | 720 void set scrollLeft(int value) { _ptr.scrollLeft = value; } |
| 713 | 721 |
| 714 void set scrollTop(int value) { _ptr.scrollTop = value; } | 722 void set scrollTop(int value) { _ptr.scrollTop = value; } |
| 715 | 723 |
| 724 /** @domName getClientRects */ |
| 716 Future<ElementRect> get rect() { | 725 Future<ElementRect> get rect() { |
| 717 return _createMeasurementFuture( | 726 return _createMeasurementFuture( |
| 718 () => new ElementRectWrappingImplementation(_ptr), | 727 () => new ElementRectWrappingImplementation(_ptr), |
| 719 new Completer<ElementRect>()); | 728 new Completer<ElementRect>()); |
| 720 } | 729 } |
| 721 | 730 |
| 722 Future<CSSStyleDeclaration> get computedStyle() { | 731 Future<CSSStyleDeclaration> get computedStyle() { |
| 723 // TODO(jacobr): last param should be null, see b/5045788 | 732 // TODO(jacobr): last param should be null, see b/5045788 |
| 724 return getComputedStyle(''); | 733 return getComputedStyle(''); |
| 725 } | 734 } |
| 726 | 735 |
| 736 /** @domName DOMWindow.getComputedStyle */ |
| 727 Future<CSSStyleDeclaration> getComputedStyle(String pseudoElement) { | 737 Future<CSSStyleDeclaration> getComputedStyle(String pseudoElement) { |
| 728 return _createMeasurementFuture(() => | 738 return _createMeasurementFuture(() => |
| 729 LevelDom.wrapCSSStyleDeclaration( | 739 LevelDom.wrapCSSStyleDeclaration( |
| 730 dom.window.getComputedStyle(_ptr, pseudoElement)), | 740 dom.window.getComputedStyle(_ptr, pseudoElement)), |
| 731 new Completer<CSSStyleDeclaration>()); | 741 new Completer<CSSStyleDeclaration>()); |
| 732 } | 742 } |
| 733 | 743 |
| 734 ElementEvents get on() { | 744 ElementEvents get on() { |
| 735 if (_on === null) { | 745 if (_on === null) { |
| 736 _on = new ElementEventsImplementation._wrap(_ptr); | 746 _on = new ElementEventsImplementation._wrap(_ptr); |
| 737 } | 747 } |
| 738 return _on; | 748 return _on; |
| 739 } | 749 } |
| 740 } | 750 } |
| OLD | NEW |