| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012, Google Inc. All rights reserved. | 2 * Copyright (C) 2012, Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 1309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1320 continue; | 1320 continue; |
| 1321 } | 1321 } |
| 1322 } | 1322 } |
| 1323 | 1323 |
| 1324 // If we're going between two layoutObjects that are in separate LayoutB
oxes, add | 1324 // If we're going between two layoutObjects that are in separate LayoutB
oxes, add |
| 1325 // whitespace if it wasn't there already. Intuitively if you have | 1325 // whitespace if it wasn't there already. Intuitively if you have |
| 1326 // <span>Hello</span><span>World</span>, those are part of the same Layo
utBox | 1326 // <span>Hello</span><span>World</span>, those are part of the same Layo
utBox |
| 1327 // so we should return "HelloWorld", but given <div>Hello</div><div>Worl
d</div> the | 1327 // so we should return "HelloWorld", but given <div>Hello</div><div>Worl
d</div> the |
| 1328 // strings are in separate boxes so we should return "Hello World". | 1328 // strings are in separate boxes so we should return "Hello World". |
| 1329 if (previous && builder.length() && !isHTMLSpace(builder[builder.length(
) - 1])) { | 1329 if (previous && builder.length() && !isHTMLSpace(builder[builder.length(
) - 1])) { |
| 1330 if (!isSameLayoutBox(child->renderer(), previous->renderer())) | 1330 if (!isSameLayoutBox(child->layoutObject(), previous->layoutObject()
)) |
| 1331 builder.append(' '); | 1331 builder.append(' '); |
| 1332 } | 1332 } |
| 1333 | 1333 |
| 1334 builder.append(child->textUnderElement(mode)); | 1334 builder.append(child->textUnderElement(mode)); |
| 1335 previous = child; | 1335 previous = child; |
| 1336 | 1336 |
| 1337 if (mode == TextUnderElementAny && !builder.isEmpty()) | 1337 if (mode == TextUnderElementAny && !builder.isEmpty()) |
| 1338 break; | 1338 break; |
| 1339 } | 1339 } |
| 1340 | 1340 |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1620 // If the need to add more children in addition to existing children arises, | 1620 // If the need to add more children in addition to existing children arises, |
| 1621 // childrenChanged should have been called, leaving the object with no child
ren. | 1621 // childrenChanged should have been called, leaving the object with no child
ren. |
| 1622 ASSERT(!m_haveChildren); | 1622 ASSERT(!m_haveChildren); |
| 1623 | 1623 |
| 1624 if (!m_node) | 1624 if (!m_node) |
| 1625 return; | 1625 return; |
| 1626 | 1626 |
| 1627 m_haveChildren = true; | 1627 m_haveChildren = true; |
| 1628 | 1628 |
| 1629 // The only time we add children from the DOM tree to a node with a layoutOb
ject is when it's a canvas. | 1629 // The only time we add children from the DOM tree to a node with a layoutOb
ject is when it's a canvas. |
| 1630 if (renderer() && !isHTMLCanvasElement(*m_node)) | 1630 if (layoutObject() && !isHTMLCanvasElement(*m_node)) |
| 1631 return; | 1631 return; |
| 1632 | 1632 |
| 1633 for (Node* child = m_node->firstChild(); child; child = child->nextSibling()
) | 1633 for (Node* child = m_node->firstChild(); child; child = child->nextSibling()
) |
| 1634 addChild(axObjectCache()->getOrCreate(child)); | 1634 addChild(axObjectCache()->getOrCreate(child)); |
| 1635 | 1635 |
| 1636 for (unsigned i = 0; i < m_children.size(); ++i) | 1636 for (unsigned i = 0; i < m_children.size(); ++i) |
| 1637 m_children[i].get()->setParent(this); | 1637 m_children[i].get()->setParent(this); |
| 1638 } | 1638 } |
| 1639 | 1639 |
| 1640 void AXNodeObject::addChild(AXObject* child) | 1640 void AXNodeObject::addChild(AXObject* child) |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1739 { | 1739 { |
| 1740 Node* node = this->node(); | 1740 Node* node = this->node(); |
| 1741 if (!node) | 1741 if (!node) |
| 1742 return 0; | 1742 return 0; |
| 1743 | 1743 |
| 1744 AXObjectCacheImpl* cache = axObjectCache(); | 1744 AXObjectCacheImpl* cache = axObjectCache(); |
| 1745 | 1745 |
| 1746 // search up the DOM tree for an anchor element | 1746 // search up the DOM tree for an anchor element |
| 1747 // NOTE: this assumes that any non-image with an anchor is an HTMLAnchorElem
ent | 1747 // NOTE: this assumes that any non-image with an anchor is an HTMLAnchorElem
ent |
| 1748 for ( ; node; node = node->parentNode()) { | 1748 for ( ; node; node = node->parentNode()) { |
| 1749 if (isHTMLAnchorElement(*node) || (node->renderer() && cache->getOrCreat
e(node->renderer())->isAnchor())) | 1749 if (isHTMLAnchorElement(*node) || (node->layoutObject() && cache->getOrC
reate(node->layoutObject())->isAnchor())) |
| 1750 return toElement(node); | 1750 return toElement(node); |
| 1751 } | 1751 } |
| 1752 | 1752 |
| 1753 return 0; | 1753 return 0; |
| 1754 } | 1754 } |
| 1755 | 1755 |
| 1756 Document* AXNodeObject::document() const | 1756 Document* AXNodeObject::document() const |
| 1757 { | 1757 { |
| 1758 if (!node()) | 1758 if (!node()) |
| 1759 return 0; | 1759 return 0; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1770 HTMLLabelElement* labelElement = labelElementContainer(); | 1770 HTMLLabelElement* labelElement = labelElementContainer(); |
| 1771 if (!labelElement) | 1771 if (!labelElement) |
| 1772 return 0; | 1772 return 0; |
| 1773 | 1773 |
| 1774 HTMLElement* correspondingControl = labelElement->control(); | 1774 HTMLElement* correspondingControl = labelElement->control(); |
| 1775 if (!correspondingControl) | 1775 if (!correspondingControl) |
| 1776 return 0; | 1776 return 0; |
| 1777 | 1777 |
| 1778 // Make sure the corresponding control isn't a descendant of this label | 1778 // Make sure the corresponding control isn't a descendant of this label |
| 1779 // that's in the middle of being destroyed. | 1779 // that's in the middle of being destroyed. |
| 1780 if (correspondingControl->renderer() && !correspondingControl->renderer()->p
arent()) | 1780 if (correspondingControl->layoutObject() && !correspondingControl->layoutObj
ect()->parent()) |
| 1781 return 0; | 1781 return 0; |
| 1782 | 1782 |
| 1783 return axObjectCache()->getOrCreate(correspondingControl); | 1783 return axObjectCache()->getOrCreate(correspondingControl); |
| 1784 } | 1784 } |
| 1785 | 1785 |
| 1786 HTMLLabelElement* AXNodeObject::labelElementContainer() const | 1786 HTMLLabelElement* AXNodeObject::labelElementContainer() const |
| 1787 { | 1787 { |
| 1788 if (!node()) | 1788 if (!node()) |
| 1789 return 0; | 1789 return 0; |
| 1790 | 1790 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1832 | 1832 |
| 1833 void AXNodeObject::decrement() | 1833 void AXNodeObject::decrement() |
| 1834 { | 1834 { |
| 1835 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture); | 1835 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture); |
| 1836 alterSliderValue(false); | 1836 alterSliderValue(false); |
| 1837 } | 1837 } |
| 1838 | 1838 |
| 1839 void AXNodeObject::childrenChanged() | 1839 void AXNodeObject::childrenChanged() |
| 1840 { | 1840 { |
| 1841 // This method is meant as a quick way of marking a portion of the accessibi
lity tree dirty. | 1841 // This method is meant as a quick way of marking a portion of the accessibi
lity tree dirty. |
| 1842 if (!node() && !renderer()) | 1842 if (!node() && !layoutObject()) |
| 1843 return; | 1843 return; |
| 1844 | 1844 |
| 1845 axObjectCache()->postNotification(this, document(), AXObjectCacheImpl::AXChi
ldrenChanged, true); | 1845 axObjectCache()->postNotification(this, document(), AXObjectCacheImpl::AXChi
ldrenChanged, true); |
| 1846 | 1846 |
| 1847 // Go up the accessibility parent chain, but only if the element already exi
sts. This method is | 1847 // Go up the accessibility parent chain, but only if the element already exi
sts. This method is |
| 1848 // called during layout, minimal work should be done. | 1848 // called during layout, minimal work should be done. |
| 1849 // If AX elements are created now, they could interrogate the layout tree wh
ile it's in a funky state. | 1849 // If AX elements are created now, they could interrogate the layout tree wh
ile it's in a funky state. |
| 1850 // At the same time, process ARIA live region changes. | 1850 // At the same time, process ARIA live region changes. |
| 1851 for (AXObject* parent = this; parent; parent = parent->parentObjectIfExists(
)) { | 1851 for (AXObject* parent = this; parent; parent = parent->parentObjectIfExists(
)) { |
| 1852 parent->setNeedsToUpdateChildren(); | 1852 parent->setNeedsToUpdateChildren(); |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1992 float range = maxValueForRange() - minValueForRange(); | 1992 float range = maxValueForRange() - minValueForRange(); |
| 1993 float value = valueForRange(); | 1993 float value = valueForRange(); |
| 1994 | 1994 |
| 1995 value += range * (percentChange / 100); | 1995 value += range * (percentChange / 100); |
| 1996 setValue(String::number(value)); | 1996 setValue(String::number(value)); |
| 1997 | 1997 |
| 1998 axObjectCache()->postNotification(node(), AXObjectCacheImpl::AXValueChanged,
true); | 1998 axObjectCache()->postNotification(node(), AXObjectCacheImpl::AXValueChanged,
true); |
| 1999 } | 1999 } |
| 2000 | 2000 |
| 2001 } // namespace blink | 2001 } // namespace blink |
| OLD | NEW |