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

Side by Side Diff: third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp

Issue 1477043003: Handle aria-owns and presentational children in AX name calc. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@garaventa_visibility_hidden
Patch Set: Rebase Created 5 years 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2008 Apple 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 1410 matching lines...) Expand 10 before | Expand all | Expand 10 after
1421 m_cachedElementRectDirty = false; 1421 m_cachedElementRectDirty = false;
1422 } 1422 }
1423 1423
1424 void AXLayoutObject::markCachedElementRectDirty() const 1424 void AXLayoutObject::markCachedElementRectDirty() const
1425 { 1425 {
1426 if (m_cachedElementRectDirty) 1426 if (m_cachedElementRectDirty)
1427 return; 1427 return;
1428 1428
1429 // Marks children recursively, if this element changed. 1429 // Marks children recursively, if this element changed.
1430 m_cachedElementRectDirty = true; 1430 m_cachedElementRectDirty = true;
1431 for (AXObject* child = rawFirstChild(); child; child = child->rawFirstSiblin g()) 1431 for (AXObject* child = rawFirstChild(); child; child = child->rawNextSibling ())
1432 child->markCachedElementRectDirty(); 1432 child->markCachedElementRectDirty();
1433 } 1433 }
1434 1434
1435 IntPoint AXLayoutObject::clickPoint() 1435 IntPoint AXLayoutObject::clickPoint()
1436 { 1436 {
1437 // Headings are usually much wider than their textual content. If the mid po int is used, often it can be wrong. 1437 // Headings are usually much wider than their textual content. If the mid po int is used, often it can be wrong.
1438 if (isHeading() && children().size() == 1) 1438 if (isHeading() && children().size() == 1)
1439 return children()[0]->clickPoint(); 1439 return children()[0]->clickPoint();
1440 1440
1441 // use the default position unless this is an editable web area, in which ca se we use the selection bounds. 1441 // use the default position unless this is an editable web area, in which ca se we use the selection bounds.
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
1573 return 0; 1573 return 0;
1574 1574
1575 LayoutObject* firstChild = firstChildConsideringContinuation(m_layoutObject) ; 1575 LayoutObject* firstChild = firstChildConsideringContinuation(m_layoutObject) ;
1576 1576
1577 if (!firstChild) 1577 if (!firstChild)
1578 return 0; 1578 return 0;
1579 1579
1580 return axObjectCache().getOrCreate(firstChild); 1580 return axObjectCache().getOrCreate(firstChild);
1581 } 1581 }
1582 1582
1583 AXObject* AXLayoutObject::rawFirstSibling() const 1583 AXObject* AXLayoutObject::rawNextSibling() const
1584 { 1584 {
1585 if (!m_layoutObject) 1585 if (!m_layoutObject)
1586 return 0; 1586 return 0;
1587 1587
1588 LayoutObject* nextSibling = 0; 1588 LayoutObject* nextSibling = 0;
1589 1589
1590 LayoutInline* inlineContinuation = m_layoutObject->isLayoutBlock() ? toLayou tBlock(m_layoutObject)->inlineElementContinuation() : 0; 1590 LayoutInline* inlineContinuation = m_layoutObject->isLayoutBlock() ? toLayou tBlock(m_layoutObject)->inlineElementContinuation() : 0;
1591 if (inlineContinuation) { 1591 if (inlineContinuation) {
1592 // Case 1: node is a block and has an inline continuation. Next sibling is the inline continuation's first child. 1592 // Case 1: node is a block and has an inline continuation. Next sibling is the inline continuation's first child.
1593 nextSibling = firstChildConsideringContinuation(inlineContinuation); 1593 nextSibling = firstChildConsideringContinuation(inlineContinuation);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1632 ASSERT(!m_haveChildren); 1632 ASSERT(!m_haveChildren);
1633 1633
1634 m_haveChildren = true; 1634 m_haveChildren = true;
1635 1635
1636 if (!canHaveChildren()) 1636 if (!canHaveChildren())
1637 return; 1637 return;
1638 1638
1639 HeapVector<Member<AXObject>> ownedChildren; 1639 HeapVector<Member<AXObject>> ownedChildren;
1640 computeAriaOwnsChildren(ownedChildren); 1640 computeAriaOwnsChildren(ownedChildren);
1641 1641
1642 for (AXObject* obj = rawFirstChild(); obj; obj = obj->rawFirstSibling()) { 1642 for (AXObject* obj = rawFirstChild(); obj; obj = obj->rawNextSibling()) {
1643 if (!axObjectCache().isAriaOwned(obj)) 1643 if (!axObjectCache().isAriaOwned(obj))
1644 addChild(obj); 1644 addChild(obj);
1645 } 1645 }
1646 1646
1647 addHiddenChildren(); 1647 addHiddenChildren();
1648 addAttachmentChildren(); 1648 addAttachmentChildren();
1649 addPopupChildren(); 1649 addPopupChildren();
1650 addImageMapChildren(); 1650 addImageMapChildren();
1651 addTextFieldChildren(); 1651 addTextFieldChildren();
1652 addCanvasChildren(); 1652 addCanvasChildren();
(...skipping 875 matching lines...) Expand 10 before | Expand all | Expand 10 after
2528 if (label && label->layoutObject()) { 2528 if (label && label->layoutObject()) {
2529 LayoutRect labelRect = axObjectCache().getOrCreate(label)->elementRe ct(); 2529 LayoutRect labelRect = axObjectCache().getOrCreate(label)->elementRe ct();
2530 result.unite(labelRect); 2530 result.unite(labelRect);
2531 } 2531 }
2532 } 2532 }
2533 2533
2534 return result; 2534 return result;
2535 } 2535 }
2536 2536
2537 } // namespace blink 2537 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698