| 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 42cdc55a52f5ab4aa4dad3334dbbf5b6c9762e88..1d124aab0e27085b4698bfe0d321f07fc8ca6a96 100644
|
| --- a/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp
|
| +++ b/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp
|
| @@ -52,6 +52,7 @@
|
| #include "core/html/HTMLOptionElement.h"
|
| #include "core/html/HTMLSelectElement.h"
|
| #include "core/html/HTMLTextAreaElement.h"
|
| +#include "core/html/LabelsNodeList.h"
|
| #include "core/html/shadow/ShadowElementNames.h"
|
| #include "core/layout/HitTestResult.h"
|
| #include "core/layout/LayoutFileUploadControl.h"
|
| @@ -2468,12 +2469,17 @@ LayoutRect AXLayoutObject::computeElementRect() const
|
| if (isWebArea() && obj->frame()->view())
|
| result.setSize(LayoutSize(obj->frame()->view()->contentsSize()));
|
|
|
| - // Checkboxes and radio buttons include their label as part of their rect.
|
| - if (isCheckboxOrRadio()) {
|
| - HTMLLabelElement* label = labelForElement(toElement(m_layoutObject->node()));
|
| - if (label && label->layoutObject()) {
|
| - LayoutRect labelRect = axObjectCache().getOrCreate(label)->elementRect();
|
| - result.unite(labelRect);
|
| + // Checkboxes and radio buttons include their labels as part of their rect.
|
| + if (isCheckboxOrRadio() && isLabelableElement(obj->node())) {
|
| + LabelsNodeList* labels = toLabelableElement(obj->node())->labels();
|
| + if (labels) {
|
| + for (unsigned labelIndex = 0; labelIndex < labels->length(); ++labelIndex) {
|
| + AXObject* labelAXObject = axObjectCache().getOrCreate(labels->item(labelIndex));
|
| + if (labelAXObject) {
|
| + LayoutRect labelRect = labelAXObject->elementRect();
|
| + result.unite(labelRect);
|
| + }
|
| + }
|
| }
|
| }
|
|
|
|
|