Chromium Code Reviews| Index: third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp |
| diff --git a/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp b/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp |
| index faab5b80b36baf91a898e3ad3611b7d8baeee640..6debcedc5d0822e3b7f6a1e7af1a2e07d54d53cf 100644 |
| --- a/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp |
| +++ b/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp |
| @@ -231,13 +231,17 @@ AXObject* AXObjectCacheImpl::get(Node* node) |
| if (!node) |
| return 0; |
| - AXID layoutID = node->layoutObject() ? m_layoutObjectMapping.get(node->layoutObject()) : 0; |
| + LayoutObject* layoutObject = node->layoutObject(); |
| + if (isMenuListOption(node) || isHTMLAreaElement(node)) |
|
aboxhall
2015/11/05 17:49:21
Add a comment to explain this?
dmazzoni
2015/11/06 00:21:17
Done.
|
| + layoutObject = nullptr; |
| + |
| + AXID layoutID = layoutObject ? m_layoutObjectMapping.get(layoutObject) : 0; |
| ASSERT(!HashTraits<AXID>::isDeletedValue(layoutID)); |
| AXID nodeID = m_nodeObjectMapping.get(node); |
| ASSERT(!HashTraits<AXID>::isDeletedValue(nodeID)); |
| - if (node->layoutObject() && nodeID && !layoutID && !isMenuListOption(node)) { |
| + if (layoutObject && nodeID && !layoutID) { |
| // This can happen if an AXNodeObject is created for a node that's not |
| // laid out, but later something changes and it gets a layoutObject (like if it's |
| // reparented). |
| @@ -338,6 +342,9 @@ AXObject* AXObjectCacheImpl::createFromNode(Node* node) |
| if (isMenuListOption(node)) |
| return AXMenuListOption::create(toHTMLOptionElement(node), *this); |
| + if (isHTMLAreaElement(node)) |
| + return AXImageMapLink::create(toHTMLAreaElement(node), *this); |
| + |
| return AXNodeObject::create(node, *this); |
| } |
| @@ -392,7 +399,7 @@ AXObject* AXObjectCacheImpl::getOrCreate(Node* node) |
| if (AXObject* obj = get(node)) |
| return obj; |
| - if (node->layoutObject()) |
| + if (node->layoutObject() && !isHTMLAreaElement(node)) |
|
aboxhall
2015/11/05 17:49:21
And a comment for this too?
dmazzoni
2015/11/06 00:21:17
Done.
|
| return getOrCreate(node->layoutObject()); |
| if (!node->parentElement()) |
| @@ -479,9 +486,6 @@ AXObject* AXObjectCacheImpl::getOrCreate(AccessibilityRole role) |
| // will be filled in... |
| switch (role) { |
| - case ImageMapLinkRole: |
| - obj = AXImageMapLink::create(*this); |
| - break; |
| case ColumnRole: |
| obj = AXTableColumn::create(*this); |
| break; |