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

Unified Diff: third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp

Issue 2393003002: reflow comments in modules/accessiblity (Closed)
Patch Set: Created 4 years, 2 months 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp
diff --git a/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp b/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp
index c35bf0be55d16d4866fa71d7a356313a270647f1..2f8dca035ab5ffd22c1beb5d1ff11142b7dd9dea 100644
--- a/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp
+++ b/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp
@@ -247,7 +247,8 @@ AccessibilityRole AXLayoutObject::nativeAccessibilityRoleIgnoringAria() const {
return SVGRootRole;
return ImageRole;
}
- // Note: if JavaScript is disabled, the layoutObject won't be a LayoutHTMLCanvas.
+ // Note: if JavaScript is disabled, the layoutObject won't be a
+ // LayoutHTMLCanvas.
if (isHTMLCanvasElement(node) && m_layoutObject->isCanvas())
return CanvasRole;
@@ -283,7 +284,8 @@ AccessibilityRole AXLayoutObject::determineAccessibilityRole() {
if (m_layoutObject->isLayoutBlockFlow())
return GroupRole;
- // If the element does not have role, but it has ARIA attributes, accessibility should fallback to exposing it as a group.
+ // If the element does not have role, but it has ARIA attributes,
+ // accessibility should fallback to exposing it as a group.
if (supportsARIAAttributes())
return GroupRole;
@@ -402,7 +404,8 @@ bool AXLayoutObject::isReadOnly() const {
}
bool AXLayoutObject::isVisited() const {
- // FIXME: Is it a privacy violation to expose visited information to accessibility APIs?
+ // FIXME: Is it a privacy violation to expose visited information to
+ // accessibility APIs?
return m_layoutObject->style()->isLink() &&
m_layoutObject->style()->insideLink() == InsideVisitedLink;
}
@@ -422,8 +425,8 @@ bool AXLayoutObject::isFocused() const {
if (!focusedObject || !focusedObject->isAXLayoutObject())
return false;
- // A web area is represented by the Document node in the DOM tree, which isn't focusable.
- // Check instead if the frame's selection controller is focused
+ // A web area is represented by the Document node in the DOM tree, which isn't
+ // focusable. Check instead if the frame's selection controller is focused
if (focusedObject == this ||
(roleValue() == WebAreaRole &&
getDocument()->frame()->selection().isFocusedAndActive()))
@@ -458,7 +461,8 @@ bool AXLayoutObject::isSelected() const {
AXObjectInclusion AXLayoutObject::defaultObjectInclusion(
IgnoredReasons* ignoredReasons) const {
- // The following cases can apply to any element that's a subclass of AXLayoutObject.
+ // The following cases can apply to any element that's a subclass of
+ // AXLayoutObject.
if (!m_layoutObject) {
if (ignoredReasons)
@@ -467,7 +471,8 @@ AXObjectInclusion AXLayoutObject::defaultObjectInclusion(
}
if (m_layoutObject->style()->visibility() != EVisibility::Visible) {
- // aria-hidden is meant to override visibility as the determinant in AX hierarchy inclusion.
+ // aria-hidden is meant to override visibility as the determinant in AX
+ // hierarchy inclusion.
if (equalIgnoringCase(getAttribute(aria_hiddenAttr), "false"))
return DefaultBehavior;
@@ -489,15 +494,16 @@ bool AXLayoutObject::computeAccessibilityIsIgnored(
return true;
// Check first if any of the common reasons cause this element to be ignored.
- // Then process other use cases that need to be applied to all the various roles
- // that AXLayoutObjects take on.
+ // Then process other use cases that need to be applied to all the various
+ // roles that AXLayoutObjects take on.
AXObjectInclusion decision = defaultObjectInclusion(ignoredReasons);
if (decision == IncludeObject)
return false;
if (decision == IgnoreObject)
return true;
- // If this element is within a parent that cannot have children, it should not be exposed
+ // If this element is within a parent that cannot have children, it should not
+ // be exposed.
if (isDescendantOfLeafNode()) {
if (ignoredReasons)
ignoredReasons->append(
@@ -531,8 +537,8 @@ bool AXLayoutObject::computeAccessibilityIsIgnored(
return true;
}
- // A LayoutPart is an iframe element or embedded object element or something like
- // that. We don't want to ignore those.
+ // A LayoutPart is an iframe element or embedded object element or something
+ // like that. We don't want to ignore those.
if (m_layoutObject->isLayoutPart())
return false;
@@ -541,8 +547,8 @@ bool AXLayoutObject::computeAccessibilityIsIgnored(
getNode()->hasChildren())
return false;
- // find out if this element is inside of a label element.
- // if so, it may be ignored because it's the label for a checkbox or radio button
+ // Find out if this element is inside of a label element. If so, it may be
+ // ignored because it's the label for a checkbox or radio button.
AXObject* controlObject = correspondingControlForLabelElement();
if (controlObject && controlObject->isCheckboxOrRadio() &&
controlObject->nameFromLabelElement()) {
@@ -562,7 +568,8 @@ bool AXLayoutObject::computeAccessibilityIsIgnored(
return false;
if (m_layoutObject->isText()) {
- // static text beneath MenuItems and MenuButtons are just reported along with the menu item, so it's ignored on an individual level
+ // Static text beneath MenuItems and MenuButtons are just reported along
+ // with the menu item, so it's ignored on an individual level.
AXObject* parent = parentObjectUnignored();
if (parent && (parent->ariaRoleAttribute() == MenuItemRole ||
parent->ariaRoleAttribute() == MenuButtonRole)) {
@@ -585,8 +592,9 @@ bool AXLayoutObject::computeAccessibilityIsIgnored(
return false;
}
- // text elements that are just empty whitespace should not be returned
- // FIXME(dmazzoni): we probably shouldn't ignore this if the style is 'pre', or similar...
+ // Text elements that are just empty whitespace should not be returned.
+ // FIXME(dmazzoni): we probably shouldn't ignore this if the style is 'pre',
+ // or similar...
if (layoutText->text().impl()->containsOnlyWhitespace()) {
if (ignoredReasons)
ignoredReasons->append(IgnoredReason(AXEmptyText));
@@ -601,7 +609,8 @@ bool AXLayoutObject::computeAccessibilityIsIgnored(
if (isLandmarkRelated())
return false;
- // Header and footer tags may also be exposed as landmark roles but not always.
+ // Header and footer tags may also be exposed as landmark roles but not
+ // always.
if (getNode() &&
(getNode()->hasTagName(headerTag) || getNode()->hasTagName(footerTag)))
return false;
@@ -622,15 +631,17 @@ bool AXLayoutObject::computeAccessibilityIsIgnored(
return false;
// Anything that is content editable should not be ignored.
- // However, one cannot just call node->hasEditableStyle() since that will ask if its parents
- // are also editable. Only the top level content editable region should be exposed.
+ // However, one cannot just call node->hasEditableStyle() since that will ask
+ // if its parents are also editable. Only the top level content editable
+ // region should be exposed.
if (hasContentEditableAttributeSet())
return false;
if (roleValue() == AbbrRole)
return false;
- // List items play an important role in defining the structure of lists. They should not be ignored.
+ // List items play an important role in defining the structure of lists. They
+ // should not be ignored.
if (roleValue() == ListItemRole)
return false;
@@ -671,12 +682,14 @@ bool AXLayoutObject::computeAccessibilityIsIgnored(
if (supportsARIAAttributes())
return false;
- // <span> tags are inline tags and not meant to convey information if they have no other aria
- // information on them. If we don't ignore them, they may emit signals expected to come from
- // their parent. In addition, because included spans are GroupRole objects, and GroupRole
- // objects are often containers with meaningful information, the inclusion of a span can have
- // the side effect of causing the immediate parent accessible to be ignored. This is especially
- // problematic for platforms which have distinct roles for textual block elements.
+ // <span> tags are inline tags and not meant to convey information if they
+ // have no other aria information on them. If we don't ignore them, they may
+ // emit signals expected to come from their parent. In addition, because
+ // included spans are GroupRole objects, and GroupRole objects are often
+ // containers with meaningful information, the inclusion of a span can have
+ // the side effect of causing the immediate parent accessible to be ignored.
+ // This is especially problematic for platforms which have distinct roles for
+ // textual block elements.
if (isHTMLSpanElement(node)) {
if (ignoredReasons)
ignoredReasons->append(IgnoredReason(AXUninteresting));
@@ -685,7 +698,8 @@ bool AXLayoutObject::computeAccessibilityIsIgnored(
// ignore images seemingly used as spacers
if (isImage()) {
- // If the image can take focus, it should not be ignored, lest the user not be able to interact with something important.
+ // If the image can take focus, it should not be ignored, lest the user not
+ // be able to interact with something important.
if (canSetFocusAttribute())
return false;
@@ -712,7 +726,8 @@ bool AXLayoutObject::computeAccessibilityIsIgnored(
return true;
}
- // check whether laid out image was stretched from one-dimensional file image
+ // Check whether laid out image was stretched from one-dimensional file
+ // image.
if (image->cachedImage()) {
LayoutSize imageSize = image->cachedImage()->imageSize(
LayoutObject::shouldRespectImageOrientation(m_layoutObject),
@@ -737,7 +752,8 @@ bool AXLayoutObject::computeAccessibilityIsIgnored(
ignoredReasons->append(IgnoredReason(AXProbablyPresentational));
return true;
}
- // Otherwise fall through; use presence of help text, title, or description to decide.
+ // Otherwise fall through; use presence of help text, title, or description
+ // to decide.
}
if (isWebArea() || m_layoutObject->isListMarker())
@@ -1031,8 +1047,8 @@ AXObject* AXLayoutObject::nextOnLine() const {
break;
}
- // A static text node might span multiple lines. Try to return the first inline
- // text box within that static text if possible.
+ // A static text node might span multiple lines. Try to return the first
+ // inline text box within that static text if possible.
if (result && result->roleValue() == StaticTextRole &&
result->children().size())
result = result->children()[0].get();
@@ -1084,7 +1100,8 @@ String AXLayoutObject::stringValue() const {
if (cssBox && cssBox->isMenuList()) {
// LayoutMenuList will go straight to the text() of its selected item.
- // This has to be overridden in the case where the selected item has an ARIA label.
+ // This has to be overridden in the case where the selected item has an ARIA
+ // label.
HTMLSelectElement* selectElement =
toHTMLSelectElement(m_layoutObject->node());
int selectedIndex = selectElement->selectedIndex();
@@ -1101,7 +1118,8 @@ String AXLayoutObject::stringValue() const {
}
if (isWebArea()) {
- // FIXME: Why would a layoutObject exist when the Document isn't attached to a frame?
+ // FIXME: Why would a layoutObject exist when the Document isn't attached to
+ // a frame?
if (m_layoutObject->frame())
return String();
@@ -1114,9 +1132,9 @@ String AXLayoutObject::stringValue() const {
if (m_layoutObject->isFileUploadControl())
return toLayoutFileUploadControl(m_layoutObject)->fileTextValue();
- // Handle other HTML input elements that aren't text controls, like date and time
- // controls, by returning the string value, with the exception of checkboxes
- // and radio buttons (which would return "on").
+ // Handle other HTML input elements that aren't text controls, like date and
+ // time controls, by returning the string value, with the exception of
+ // checkboxes and radio buttons (which would return "on").
if (getNode() && isHTMLInputElement(getNode())) {
HTMLInputElement* input = toHTMLInputElement(getNode());
if (input->type() != InputTypeNames::checkbox &&
@@ -1125,9 +1143,10 @@ String AXLayoutObject::stringValue() const {
}
// FIXME: We might need to implement a value here for more types
- // FIXME: It would be better not to advertise a value at all for the types for which we don't implement one;
- // this would require subclassing or making accessibilityAttributeNames do something other than return a
- // single static array.
+ // FIXME: It would be better not to advertise a value at all for the types for
+ // which we don't implement one; this would require subclassing or making
+ // accessibilityAttributeNames do something other than return a single static
+ // array.
return String();
}
@@ -1303,7 +1322,8 @@ const AtomicString& AXLayoutObject::liveRegionRelevant() const {
}
bool AXLayoutObject::liveRegionAtomic() const {
- // ARIA roles "alert" and "status" should have an implicit aria-atomic value of true.
+ // ARIA roles "alert" and "status" should have an implicit aria-atomic value
+ // of true.
if (getAttribute(aria_atomicAttr).isEmpty() &&
(roleValue() == AlertRole || roleValue() == StatusRole)) {
return true;
@@ -1349,10 +1369,12 @@ AXObject* AXLayoutObject::accessibilityHitTest(const IntPoint& point) const {
AXObject* result = axObjectCache().getOrCreate(obj);
result->updateChildrenIfNecessary();
- // Allow the element to perform any hit-testing it might need to do to reach non-layout children.
+ // Allow the element to perform any hit-testing it might need to do to reach
+ // non-layout children.
result = result->elementAccessibilityHitTest(point);
if (result && result->accessibilityIsIgnored()) {
- // If this element is the label of a control, a hit test should return the control.
+ // If this element is the label of a control, a hit test should return the
+ // control.
if (result->isAXLayoutObject()) {
AXObject* controlObject =
toAXLayoutObject(result)->correspondingControlForLabelElement();
@@ -1386,7 +1408,8 @@ AXObject* AXLayoutObject::computeParent() const {
if (ariaRoleAttribute() == MenuBarRole)
return axObjectCache().getOrCreate(m_layoutObject->parent());
- // menuButton and its corresponding menu are DOM siblings, but Accessibility needs them to be parent/child
+ // menuButton and its corresponding menu are DOM siblings, but Accessibility
+ // needs them to be parent/child.
if (ariaRoleAttribute() == MenuRole) {
AXObject* parent = menuButtonForMenu();
if (parent)
@@ -1413,7 +1436,8 @@ AXObject* AXLayoutObject::computeParentIfExists() const {
if (ariaRoleAttribute() == MenuBarRole)
return axObjectCache().get(m_layoutObject->parent());
- // menuButton and its corresponding menu are DOM siblings, but Accessibility needs them to be parent/child
+ // menuButton and its corresponding menu are DOM siblings, but Accessibility
+ // needs them to be parent/child.
if (ariaRoleAttribute() == MenuRole) {
AXObject* parent = menuButtonForMenu();
if (parent)
@@ -1434,7 +1458,8 @@ AXObject* AXLayoutObject::computeParentIfExists() const {
}
//
-// Low-level accessibility tree exploration, only for use within the accessibility module.
+// Low-level accessibility tree exploration, only for use within the
+// accessibility module.
//
AXObject* AXLayoutObject::rawFirstChild() const {
@@ -1460,12 +1485,14 @@ AXObject* AXLayoutObject::rawNextSibling() const {
? toLayoutBlockFlow(m_layoutObject)->inlineElementContinuation()
: nullptr;
if (inlineContinuation) {
- // Case 1: node is a block and has an inline continuation. Next sibling is the inline continuation's first child.
+ // Case 1: node is a block and has an inline continuation. Next sibling is
+ // the inline continuation's first child.
nextSibling = firstChildConsideringContinuation(inlineContinuation);
} else if (m_layoutObject->isAnonymousBlock() &&
lastChildHasContinuation(m_layoutObject)) {
- // Case 2: Anonymous block parent of the start of a continuation - skip all the way to
- // after the parent of the end, since everything in between will be linked up via the continuation.
+ // Case 2: Anonymous block parent of the start of a continuation - skip all
+ // the way to after the parent of the end, since everything in between will
+ // be linked up via the continuation.
LayoutObject* lastParent =
endOfContinuations(toLayoutBlock(m_layoutObject)->lastChild())
->parent();
@@ -1476,20 +1503,23 @@ AXObject* AXLayoutObject::rawNextSibling() const {
// Case 3: node has an actual next sibling
nextSibling = ns;
} else if (isInlineWithContinuation(m_layoutObject)) {
- // Case 4: node is an inline with a continuation. Next sibling is the next sibling of the end
- // of the continuation chain.
+ // Case 4: node is an inline with a continuation. Next sibling is the next
+ // sibling of the end of the continuation chain.
nextSibling = endOfContinuations(m_layoutObject)->nextSibling();
} else if (m_layoutObject->parent() &&
isInlineWithContinuation(m_layoutObject->parent())) {
- // Case 5: node has no next sibling, and its parent is an inline with a continuation.
+ // Case 5: node has no next sibling, and its parent is an inline with a
+ // continuation.
LayoutObject* continuation =
toLayoutInline(m_layoutObject->parent())->continuation();
if (continuation->isLayoutBlock()) {
- // Case 5a: continuation is a block - in this case the block itself is the next sibling.
+ // Case 5a: continuation is a block - in this case the block itself is the
+ // next sibling.
nextSibling = continuation;
} else {
- // Case 5b: continuation is an inline - in this case the inline's first child is the next sibling.
+ // Case 5b: continuation is an inline - in this case the inline's first
+ // child is the next sibling.
nextSibling = firstChildConsideringContinuation(continuation);
}
}
@@ -1503,7 +1533,8 @@ AXObject* AXLayoutObject::rawNextSibling() const {
void AXLayoutObject::addChildren() {
ASSERT(!isDetached());
// If the need to add more children in addition to existing children arises,
- // childrenChanged should have been called, leaving the object with no children.
+ // childrenChanged should have been called, leaving the object with no
+ // children.
ASSERT(!m_haveChildren);
m_haveChildren = true;
@@ -1602,7 +1633,8 @@ Element* AXLayoutObject::anchorElement() const {
AXObjectCacheImpl& cache = axObjectCache();
LayoutObject* currLayoutObject;
- // Search up the layout tree for a LayoutObject with a DOM node. Defer to an earlier continuation, though.
+ // Search up the layout tree for a LayoutObject with a DOM node. Defer to an
+ // earlier continuation, though.
for (currLayoutObject = m_layoutObject;
currLayoutObject && !currLayoutObject->node();
currLayoutObject = currLayoutObject->parent()) {
@@ -1619,8 +1651,9 @@ Element* AXLayoutObject::anchorElement() const {
if (!currLayoutObject)
return 0;
- // search up the DOM tree for an anchor element
- // NOTE: this assumes that any non-image with an anchor is an HTMLAnchorElement
+ // Search up the DOM tree for an anchor element.
+ // NOTE: this assumes that any non-image with an anchor is an
+ // HTMLAnchorElement
Node* node = currLayoutObject->node();
if (!node)
return nullptr;
@@ -1819,7 +1852,8 @@ static VisiblePosition toVisiblePosition(AXObject* obj, int offset) {
if (!node->isTextNode()) {
int childCount = obj->children().size();
- // Place position immediately before the container node, if there was no children.
+ // Place position immediately before the container node, if there was no
+ // children.
if (childCount == 0) {
if (!obj->parentObject())
return VisiblePosition();
@@ -1853,9 +1887,9 @@ static VisiblePosition toVisiblePosition(AXObject* obj, int offset) {
Position::editingPositionOf(childNode->parentNode(), adjustedOffset));
}
- // If it is a text node, we need to call some utility functions that use a TextIterator
- // to walk the characters of the node and figure out the position corresponding to the
- // visible character at position |offset|.
+ // If it is a text node, we need to call some utility functions that use a
+ // TextIterator to walk the characters of the node and figure out the position
+ // corresponding to the visible character at position |offset|.
ContainerNode* parent = node->parentNode();
if (!parent)
return VisiblePosition();
@@ -1901,13 +1935,14 @@ void AXLayoutObject::setSelection(const AXRange& selection) {
if (!frame)
return;
- // TODO(dglazkov): The use of updateStyleAndLayoutIgnorePendingStylesheets needs to be audited.
- // see http://crbug.com/590369 for more details.
+ // TODO(dglazkov): The use of updateStyleAndLayoutIgnorePendingStylesheets
+ // needs to be audited. see http://crbug.com/590369 for more details.
// This callsite should probably move up the stack.
frame->document()->updateStyleAndLayoutIgnorePendingStylesheets();
- // Set the selection based on visible positions, because the offsets in accessibility nodes
- // are based on visible indexes, which often skips redundant whitespace, for example.
+ // Set the selection based on visible positions, because the offsets in
+ // accessibility nodes are based on visible indexes, which often skips
+ // redundant whitespace, for example.
VisiblePosition anchorVisiblePosition =
toVisiblePosition(anchorObject, selection.anchorOffset);
VisiblePosition focusVisiblePosition =
@@ -2110,7 +2145,8 @@ void AXLayoutObject::lineBreaks(Vector<int>& lineBreaks) const {
//
AXObject* AXLayoutObject::treeAncestorDisallowingChild() const {
- // Determine if this is in a tree. If so, we apply special behavior to make it work like an AXOutline.
+ // Determine if this is in a tree. If so, we apply special behavior to make it
+ // work like an AXOutline.
AXObject* axObj = parentObject();
AXObject* treeAncestor = 0;
while (axObj) {
@@ -2121,7 +2157,8 @@ AXObject* AXLayoutObject::treeAncestorDisallowingChild() const {
axObj = axObj->parentObject();
}
- // If the object is in a tree, only tree items should be exposed (and the children of tree items).
+ // If the object is in a tree, only tree items should be exposed (and the
+ // children of tree items).
if (treeAncestor) {
AccessibilityRole role = roleValue();
if (role != TreeItemRole && role != StaticTextRole)
@@ -2138,9 +2175,9 @@ bool AXLayoutObject::isTabItemSelected() const {
if (!node || !node->isElementNode())
return false;
- // The ARIA spec says a tab item can also be selected if it is aria-labeled by a tabpanel
- // that has keyboard focus inside of it, or if a tabpanel in its aria-controls list has KB
- // focus inside of it.
+ // The ARIA spec says a tab item can also be selected if it is aria-labeled by
+ // a tabpanel that has keyboard focus inside of it, or if a tabpanel in its
+ // aria-controls list has KB focus inside of it.
AXObject* focusedElement = axObjectCache().focusedObject();
if (!focusedElement)
return false;
@@ -2156,7 +2193,8 @@ bool AXLayoutObject::isTabItemSelected() const {
continue;
AXObject* checkFocusElement = focusedElement;
- // Check if the focused element is a descendant of the element controlled by the tab item.
+ // Check if the focused element is a descendant of the element controlled by
+ // the tab item.
while (checkFocusElement) {
if (tabPanel == checkFocusElement)
return true;
@@ -2202,15 +2240,16 @@ LayoutObject* AXLayoutObject::layoutParentObject() const {
startOfConts =
parent && parent->isLayoutInline() ? startOfContinuations(parent) : 0;
if (startOfConts) {
- // Case 2: node's parent is an inline which is some node's continuation; parent is
- // the earliest node in the continuation chain.
+ // Case 2: node's parent is an inline which is some node's continuation;
+ // parent is the earliest node in the continuation chain.
return startOfConts;
}
LayoutObject* firstChild = parent ? parent->slowFirstChild() : 0;
if (firstChild && firstChild->node()) {
- // Case 3: The first sibling is the beginning of a continuation chain. Find the origin of that continuation.
- // Get the node's layoutObject and follow that continuation chain until the first child is found.
+ // Case 3: The first sibling is the beginning of a continuation chain. Find
+ // the origin of that continuation. Get the node's layoutObject and follow
+ // that continuation chain until the first child is found.
for (LayoutObject* nodeLayoutFirstChild =
firstChild->node()->layoutObject();
nodeLayoutFirstChild != firstChild;
@@ -2244,8 +2283,9 @@ void AXLayoutObject::detachRemoteSVGRoot() {
}
AXSVGRoot* AXLayoutObject::remoteSVGRootElement() const {
- // FIXME(dmazzoni): none of this code properly handled multiple references to the same
- // remote SVG document. I'm disabling this support until it can be fixed properly.
+ // FIXME(dmazzoni): none of this code properly handled multiple references to
+ // the same remote SVG document. I'm disabling this support until it can be
+ // fixed properly.
return 0;
}
@@ -2259,8 +2299,9 @@ AXObject* AXLayoutObject::remoteSVGElementHitTest(const IntPoint& point) const {
return remote->accessibilityHitTest(IntPoint(offset));
}
-// The boundingBox for elements within the remote SVG element needs to be offset by its position
-// within the parent page, otherwise they are in relative coordinates only.
+// The boundingBox for elements within the remote SVG element needs to be offset
+// by its position within the parent page, otherwise they are in relative
+// coordinates only.
void AXLayoutObject::offsetBoundingBoxForRemoteSVGElement(
LayoutRect& rect) const {
for (AXObject* parent = parentObject(); parent;
@@ -2273,15 +2314,17 @@ void AXLayoutObject::offsetBoundingBoxForRemoteSVGElement(
}
}
-// Hidden children are those that are not laid out or visible, but are specifically marked as aria-hidden=false,
+// Hidden children are those that are not laid out or visible, but are
+// specifically marked as aria-hidden=false,
// meaning that they should be exposed to the AX hierarchy.
void AXLayoutObject::addHiddenChildren() {
Node* node = this->getNode();
if (!node)
return;
- // First do a quick run through to determine if we have any hidden nodes (most often we will not).
- // If we do have hidden nodes, we need to determine where to insert them so they match DOM order as close as possible.
+ // First do a quick run through to determine if we have any hidden nodes (most
+ // often we will not). If we do have hidden nodes, we need to determine where
+ // to insert them so they match DOM order as close as possible.
bool shouldInsertHiddenNodes = false;
for (Node& child : NodeTraversal::childrenOf(*node)) {
if (!child.layoutObject() && isNodeAriaVisible(&child)) {
@@ -2293,8 +2336,9 @@ void AXLayoutObject::addHiddenChildren() {
if (!shouldInsertHiddenNodes)
return;
- // Iterate through all of the children, including those that may have already been added, and
- // try to insert hidden nodes in the correct place in the DOM order.
+ // Iterate through all of the children, including those that may have already
+ // been added, and try to insert hidden nodes in the correct place in the DOM
+ // order.
unsigned insertionIndex = 0;
for (Node& child : NodeTraversal::childrenOf(*node)) {
if (child.layoutObject()) {
@@ -2369,8 +2413,9 @@ void AXLayoutObject::addCanvasChildren() {
if (!isHTMLCanvasElement(getNode()))
return;
- // If it's a canvas, it won't have laid out children, but it might have accessible fallback content.
- // Clear m_haveChildren because AXNodeObject::addChildren will expect it to be false.
+ // If it's a canvas, it won't have laid out children, but it might have
+ // accessible fallback content. Clear m_haveChildren because
+ // AXNodeObject::addChildren will expect it to be false.
ASSERT(!m_children.size());
m_haveChildren = false;
AXNodeObject::addChildren();

Powered by Google App Engine
This is Rietveld 408576698