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; |