Chromium Code Reviews| 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 part of $LIBRARYNAME; | 5 part of $LIBRARYNAME; |
| 6 | 6 |
| 7 class _ChildrenElementList extends ListBase<Element> | 7 class _ChildrenElementList extends ListBase<Element> |
| 8 implements NodeListWrapper { | 8 implements NodeListWrapper { |
| 9 // Raw Element. | 9 // Raw Element. |
| 10 final Element _element; | 10 final Element _element; |
| (...skipping 1466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1477 static bool _hasCorruptedAttributesAdditionalCheck(Element element) { | 1477 static bool _hasCorruptedAttributesAdditionalCheck(Element element) { |
| 1478 return JS('bool', r'!(#.attributes instanceof NamedNodeMap)', element); | 1478 return JS('bool', r'!(#.attributes instanceof NamedNodeMap)', element); |
| 1479 } | 1479 } |
| 1480 $else | 1480 $else |
| 1481 | 1481 |
| 1482 static var _namedNodeMap = js.context["NamedNodeMap"]; | 1482 static var _namedNodeMap = js.context["NamedNodeMap"]; |
| 1483 static var _htmlCollection = js.context["HTMLCollection"]; | 1483 static var _htmlCollection = js.context["HTMLCollection"]; |
| 1484 static var _nodeList = js.context["NodeList"]; | 1484 static var _nodeList = js.context["NodeList"]; |
| 1485 | 1485 |
| 1486 static bool _hasCorruptedAttributes(Element element) { | 1486 static bool _hasCorruptedAttributes(Element element) { |
| 1487 var attributes = unwrap_jso(element)["attributes"]; | 1487 // We could support this method on Dartium but it does not seem worthwhile |
|
Alan Knight
2016/03/25 21:39:09
They can be corrupted in a way that doesn't show u
Jacob
2016/03/30 00:19:00
I switched to a version of the cleaned up version
| |
| 1488 if (!attributes.instanceof(_namedNodeMap)) { | 1488 // given Dartium is a development platform and the checked method are |
| 1489 return true; | 1489 // implemented with C++ natives that cannot be corrupted. |
| 1490 } | |
| 1491 var childNodes = unwrap_jso(element.childNodes); | |
| 1492 var length = childNodes["length"]; | |
| 1493 var lastChild = unwrap_jso(element.lastChild); | |
| 1494 if (null != lastChild && | |
| 1495 lastChild != childNodes[length - 1]) { | |
| 1496 return true; | |
| 1497 } | |
| 1498 var children = unwrap_jso(element._children); | |
| 1499 if (null != children) { // On Safari, children can apparently be null. | |
| 1500 if (!children.instanceof(_htmlCollection) || | |
| 1501 children.instanceof(_nodeList)) { | |
| 1502 » return true; | |
| 1503 } | |
| 1504 } | |
| 1505 return false; | 1490 return false; |
| 1506 } | 1491 } |
| 1507 | 1492 |
| 1508 /// A secondary check for corruption, needed on IE | 1493 /// A secondary check for corruption, needed on IE |
| 1509 static bool _hasCorruptedAttributesAdditionalCheck(Element element) => false; | 1494 static bool _hasCorruptedAttributesAdditionalCheck(Element element) => false; |
| 1510 $endif | 1495 $endif |
| 1511 | 1496 |
| 1497 $if DART2JS | |
| 1512 static String _safeTagName(element) { | 1498 static String _safeTagName(element) { |
| 1513 String result = 'element tag unavailable'; | 1499 String result = 'element tag unavailable'; |
| 1514 try { | 1500 try { |
| 1515 if (element.tagName is String) { | 1501 if (element.tagName is String) { |
| 1516 result = element.tagName; | 1502 result = element.tagName; |
| 1517 } | 1503 } |
| 1518 } catch (e) {} | 1504 } catch (e) {} |
| 1519 return result; | 1505 return result; |
| 1520 } | 1506 } |
| 1507 $else | |
| 1508 static String _safeTagName(element) { | |
| 1509 try { | |
|
Alan Knight
2016/03/25 21:39:09
Don't we need an implementation of this for Dartiu
Jacob
2016/03/30 00:19:00
not sure I understand. this is an implementation f
| |
| 1510 // Safe as we plumb directly to a C++ native method. | |
| 1511 return element.tagName; | |
| 1512 } catch (e) {} | |
| 1513 return 'element tag unavailable'; | |
| 1514 } | |
| 1515 $endif | |
| 1521 | 1516 |
| 1522 $if DART2JS | 1517 $if DART2JS |
| 1523 @DomName('Element.offsetParent') | 1518 @DomName('Element.offsetParent') |
| 1524 @DocsEditable() | 1519 @DocsEditable() |
| 1525 final Element offsetParent; | 1520 final Element offsetParent; |
| 1526 | 1521 |
| 1527 @DomName('Element.offsetHeight') | 1522 @DomName('Element.offsetHeight') |
| 1528 @DocsEditable() | 1523 @DocsEditable() |
| 1529 int get offsetHeight => JS('num', '#.offsetHeight', this).round(); | 1524 int get offsetHeight => JS('num', '#.offsetHeight', this).round(); |
| 1530 | 1525 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1563 set scrollTop(int value) { | 1558 set scrollTop(int value) { |
| 1564 JS("void", "#.scrollTop = #", this, value.round()); | 1559 JS("void", "#.scrollTop = #", this, value.round()); |
| 1565 } | 1560 } |
| 1566 | 1561 |
| 1567 @DomName('Element.scrollWidth') | 1562 @DomName('Element.scrollWidth') |
| 1568 @DocsEditable() | 1563 @DocsEditable() |
| 1569 int get scrollWidth => JS('num', '#.scrollWidth', this).round(); | 1564 int get scrollWidth => JS('num', '#.scrollWidth', this).round(); |
| 1570 | 1565 |
| 1571 $else | 1566 $else |
| 1572 // Need to explicitly delegate because Element is no longer abstract for Darti um. | 1567 // Need to explicitly delegate because Element is no longer abstract for Darti um. |
| 1573 bool get isContentEditable => _blink.BlinkHTMLElement.instance.isContentEditab le_Getter_(unwrap_jso(this)); | 1568 bool get isContentEditable => _blink.BlinkHTMLElement.instance.isContentEditab le_Getter_(this); |
| 1574 void click() => _blink.BlinkHTMLElement.instance.click_Callback_0_(unwrap_jso( this)); | 1569 void click() => _blink.BlinkHTMLElement.instance.click_Callback_0_(this); |
| 1575 | 1570 |
| 1576 @DomName('Element.offsetParent') | 1571 @DomName('Element.offsetParent') |
| 1577 @DocsEditable() | 1572 @DocsEditable() |
| 1578 Element get offsetParent => wrap_jso(_blink.BlinkElement.instance.offsetParent _Getter_(unwrap_jso(this))); | 1573 Element get offsetParent => _blink.BlinkElement.instance.offsetParent_Getter_( this); |
| 1579 | 1574 |
| 1580 @DomName('Element.offsetHeight') | 1575 @DomName('Element.offsetHeight') |
| 1581 @DocsEditable() | 1576 @DocsEditable() |
| 1582 int get offsetHeight => _blink.BlinkElement.instance.offsetHeight_Getter_(unwr ap_jso(this)); | 1577 int get offsetHeight => _blink.BlinkElement.instance.offsetHeight_Getter_(this ); |
| 1583 | 1578 |
| 1584 @DomName('Element.offsetLeft') | 1579 @DomName('Element.offsetLeft') |
| 1585 @DocsEditable() | 1580 @DocsEditable() |
| 1586 int get offsetLeft => _blink.BlinkElement.instance.offsetLeft_Getter_(unwrap_j so(this)); | 1581 int get offsetLeft => _blink.BlinkElement.instance.offsetLeft_Getter_(this); |
| 1587 | 1582 |
| 1588 @DomName('Element.offsetTop') | 1583 @DomName('Element.offsetTop') |
| 1589 @DocsEditable() | 1584 @DocsEditable() |
| 1590 int get offsetTop => _blink.BlinkElement.instance.offsetTop_Getter_(unwrap_jso (this)); | 1585 int get offsetTop => _blink.BlinkElement.instance.offsetTop_Getter_(this); |
| 1591 | 1586 |
| 1592 @DomName('Element.offsetWidth') | 1587 @DomName('Element.offsetWidth') |
| 1593 @DocsEditable() | 1588 @DocsEditable() |
| 1594 int get offsetWidth => _blink.BlinkElement.instance.offsetWidth_Getter_(unwrap _jso(this)); | 1589 int get offsetWidth => _blink.BlinkElement.instance.offsetWidth_Getter_(this); |
| 1595 | 1590 |
| 1596 @DomName('Element.scrollHeight') | 1591 @DomName('Element.scrollHeight') |
| 1597 @DocsEditable() | 1592 @DocsEditable() |
| 1598 int get scrollHeight => _blink.BlinkElement.instance.scrollHeight_Getter_(unwr ap_jso(this)).round(); | 1593 int get scrollHeight => _blink.BlinkElement.instance.scrollHeight_Getter_(this ).round(); |
| 1599 | 1594 |
| 1600 @DomName('Element.scrollLeft') | 1595 @DomName('Element.scrollLeft') |
| 1601 @DocsEditable() | 1596 @DocsEditable() |
| 1602 int get scrollLeft => _blink.BlinkElement.instance.scrollLeft_Getter_(unwrap_j so(this)).round(); | 1597 int get scrollLeft => _blink.BlinkElement.instance.scrollLeft_Getter_(this).ro und(); |
| 1603 | 1598 |
| 1604 @DomName('Element.scrollLeft') | 1599 @DomName('Element.scrollLeft') |
| 1605 @DocsEditable() | 1600 @DocsEditable() |
| 1606 set scrollLeft(int value) => _blink.BlinkElement.instance.scrollLeft_Setter_(u nwrap_jso(this), value.round()); | 1601 set scrollLeft(int value) => _blink.BlinkElement.instance.scrollLeft_Setter_(t his, value.round()); |
| 1607 | 1602 |
| 1608 @DomName('Element.scrollTop') | 1603 @DomName('Element.scrollTop') |
| 1609 @DocsEditable() | 1604 @DocsEditable() |
| 1610 int get scrollTop => _blink.BlinkElement.instance.scrollTop_Getter_(unwrap_jso (this)).round(); | 1605 int get scrollTop => _blink.BlinkElement.instance.scrollTop_Getter_(this).roun d(); |
| 1611 | 1606 |
| 1612 @DomName('Element.scrollTop') | 1607 @DomName('Element.scrollTop') |
| 1613 @DocsEditable() | 1608 @DocsEditable() |
| 1614 set scrollTop(int value) => _blink.BlinkElement.instance.scrollTop_Setter_(unw rap_jso(this), value.round()); | 1609 set scrollTop(int value) => _blink.BlinkElement.instance.scrollTop_Setter_(thi s, value.round()); |
| 1615 | 1610 |
| 1616 @DomName('Element.scrollWidth') | 1611 @DomName('Element.scrollWidth') |
| 1617 @DocsEditable() | 1612 @DocsEditable() |
| 1618 int get scrollWidth => _blink.BlinkElement.instance.scrollWidth_Getter_(unwrap _jso(this)).round(); | 1613 int get scrollWidth => _blink.BlinkElement.instance.scrollWidth_Getter_(this). round(); |
| 1619 $endif | 1614 $endif |
| 1620 | 1615 |
| 1621 $!MEMBERS | 1616 $!MEMBERS |
| 1622 } | 1617 } |
| 1623 | 1618 |
| 1624 | 1619 |
| 1625 class _ElementFactoryProvider { | 1620 class _ElementFactoryProvider { |
| 1626 | 1621 |
| 1627 @DomName('Document.createElement') | 1622 @DomName('Document.createElement') |
| 1628 $if DART2JS | 1623 $if DART2JS |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 1656 const ScrollAlignment._internal(this._value); | 1651 const ScrollAlignment._internal(this._value); |
| 1657 toString() => 'ScrollAlignment.$_value'; | 1652 toString() => 'ScrollAlignment.$_value'; |
| 1658 | 1653 |
| 1659 /// Attempt to align the element to the top of the scrollable area. | 1654 /// Attempt to align the element to the top of the scrollable area. |
| 1660 static const TOP = const ScrollAlignment._internal('TOP'); | 1655 static const TOP = const ScrollAlignment._internal('TOP'); |
| 1661 /// Attempt to center the element in the scrollable area. | 1656 /// Attempt to center the element in the scrollable area. |
| 1662 static const CENTER = const ScrollAlignment._internal('CENTER'); | 1657 static const CENTER = const ScrollAlignment._internal('CENTER'); |
| 1663 /// Attempt to align the element to the bottom of the scrollable area. | 1658 /// Attempt to align the element to the bottom of the scrollable area. |
| 1664 static const BOTTOM = const ScrollAlignment._internal('BOTTOM'); | 1659 static const BOTTOM = const ScrollAlignment._internal('BOTTOM'); |
| 1665 } | 1660 } |
| OLD | NEW |