| Index: third_party/WebKit/Source/modules/accessibility/AXImageMapLink.cpp
|
| diff --git a/third_party/WebKit/Source/modules/accessibility/AXImageMapLink.cpp b/third_party/WebKit/Source/modules/accessibility/AXImageMapLink.cpp
|
| index 4ad21ce2d013329931b6669fad3a90eb8833309b..f222e23ff8b7892781ed1cc360d6536a6cb97599 100644
|
| --- a/third_party/WebKit/Source/modules/accessibility/AXImageMapLink.cpp
|
| +++ b/third_party/WebKit/Source/modules/accessibility/AXImageMapLink.cpp
|
| @@ -29,6 +29,7 @@
|
| #include "config.h"
|
| #include "modules/accessibility/AXImageMapLink.h"
|
|
|
| +#include "core/dom/ElementTraversal.h"
|
| #include "modules/accessibility/AXLayoutObject.h"
|
| #include "modules/accessibility/AXObjectCacheImpl.h"
|
|
|
| @@ -36,36 +37,26 @@ namespace blink {
|
|
|
| using namespace HTMLNames;
|
|
|
| -AXImageMapLink::AXImageMapLink(AXObjectCacheImpl& axObjectCache)
|
| - : AXMockObject(axObjectCache)
|
| - , m_areaElement(nullptr)
|
| - , m_mapElement(nullptr)
|
| +AXImageMapLink::AXImageMapLink(HTMLAreaElement* area, AXObjectCacheImpl& axObjectCache)
|
| + : AXNodeObject(area, axObjectCache)
|
| {
|
| }
|
|
|
| AXImageMapLink::~AXImageMapLink()
|
| {
|
| - ASSERT(!m_areaElement);
|
| - ASSERT(!m_mapElement);
|
| }
|
|
|
| -void AXImageMapLink::detach()
|
| +AXImageMapLink* AXImageMapLink::create(HTMLAreaElement* area, AXObjectCacheImpl& axObjectCache)
|
| {
|
| - AXMockObject::detach();
|
| - m_areaElement = nullptr;
|
| - m_mapElement = nullptr;
|
| + return new AXImageMapLink(area, axObjectCache);
|
| }
|
|
|
| -void AXImageMapLink::detachFromParent()
|
| +HTMLMapElement* AXImageMapLink::mapElement() const
|
| {
|
| - AXMockObject::detachFromParent();
|
| - m_areaElement = nullptr;
|
| - m_mapElement = nullptr;
|
| -}
|
| -
|
| -AXImageMapLink* AXImageMapLink::create(AXObjectCacheImpl& axObjectCache)
|
| -{
|
| - return new AXImageMapLink(axObjectCache);
|
| + HTMLAreaElement* area = areaElement();
|
| + if (!area)
|
| + return nullptr;
|
| + return Traversal<HTMLMapElement>::firstAncestor(*area);
|
| }
|
|
|
| AXObject* AXImageMapLink::computeParent() const
|
| @@ -73,17 +64,14 @@ AXObject* AXImageMapLink::computeParent() const
|
| if (m_parent)
|
| return m_parent;
|
|
|
| - if (!m_mapElement.get() || !m_mapElement->layoutObject())
|
| - return 0;
|
| + if (!mapElement())
|
| + return nullptr;
|
|
|
| - return axObjectCache().getOrCreate(m_mapElement->layoutObject());
|
| + return axObjectCache().getOrCreate(mapElement()->layoutObject());
|
| }
|
|
|
| AccessibilityRole AXImageMapLink::roleValue() const
|
| {
|
| - if (!m_areaElement)
|
| - return LinkRole;
|
| -
|
| const AtomicString& ariaRole = getAttribute(roleAttr);
|
| if (!ariaRole.isEmpty())
|
| return AXObject::ariaRoleToWebCoreRole(ariaRole);
|
| @@ -91,6 +79,11 @@ AccessibilityRole AXImageMapLink::roleValue() const
|
| return LinkRole;
|
| }
|
|
|
| +bool AXImageMapLink::computeAccessibilityIsIgnored(IgnoredReasons* ignoredReasons) const
|
| +{
|
| + return accessibilityIsIgnoredByDefault(ignoredReasons);
|
| +}
|
| +
|
| Element* AXImageMapLink::actionElement() const
|
| {
|
| return anchorElement();
|
| @@ -98,15 +91,15 @@ Element* AXImageMapLink::actionElement() const
|
|
|
| Element* AXImageMapLink::anchorElement() const
|
| {
|
| - return m_areaElement.get();
|
| + return node() ? toElement(node()) : nullptr;
|
| }
|
|
|
| KURL AXImageMapLink::url() const
|
| {
|
| - if (!m_areaElement.get())
|
| + if (!areaElement())
|
| return KURL();
|
|
|
| - return m_areaElement->href();
|
| + return areaElement()->href();
|
| }
|
|
|
| String AXImageMapLink::deprecatedAccessibilityDescription() const
|
| @@ -135,26 +128,26 @@ String AXImageMapLink::deprecatedTitle(TextUnderElementMode mode) const
|
|
|
| LayoutRect AXImageMapLink::elementRect() const
|
| {
|
| - if (!m_mapElement.get() || !m_areaElement.get())
|
| + HTMLAreaElement* area = areaElement();
|
| + HTMLMapElement* map = mapElement();
|
| + if (!area || !map)
|
| return LayoutRect();
|
|
|
| LayoutObject* layoutObject;
|
| if (m_parent && m_parent->isAXLayoutObject())
|
| layoutObject = toAXLayoutObject(m_parent)->layoutObject();
|
| else
|
| - layoutObject = m_mapElement->layoutObject();
|
| + layoutObject = map->layoutObject();
|
|
|
| if (!layoutObject)
|
| return LayoutRect();
|
|
|
| - return m_areaElement->computeRect(layoutObject);
|
| + return area->computeRect(layoutObject);
|
| }
|
|
|
| DEFINE_TRACE(AXImageMapLink)
|
| {
|
| - visitor->trace(m_areaElement);
|
| - visitor->trace(m_mapElement);
|
| - AXMockObject::trace(visitor);
|
| + AXNodeObject::trace(visitor);
|
| }
|
|
|
| } // namespace blink
|
|
|