| Index: Source/core/accessibility/AXObject.cpp
|
| diff --git a/Source/core/accessibility/AXObject.cpp b/Source/core/accessibility/AXObject.cpp
|
| index dd3f7b0ac1def71d5c2b562020589227d16ef36a..55bdba6394da246fe386f4784da922bf69156604 100644
|
| --- a/Source/core/accessibility/AXObject.cpp
|
| +++ b/Source/core/accessibility/AXObject.cpp
|
| @@ -134,6 +134,8 @@ AXObject::AXObject()
|
| , m_role(UnknownRole)
|
| , m_lastKnownIsIgnoredValue(DefaultBehavior)
|
| , m_detached(false)
|
| + , m_lastModificationCount(-1)
|
| + , m_cachedIsIgnored(false)
|
| {
|
| }
|
|
|
| @@ -248,29 +250,21 @@ bool AXObject::isClickable() const
|
|
|
| bool AXObject::accessibilityIsIgnored() const
|
| {
|
| + updateCachedAttributeValuesIfNeeded();
|
| + return m_cachedIsIgnored;
|
| +}
|
| +
|
| +void AXObject::updateCachedAttributeValuesIfNeeded() const
|
| +{
|
| AXObjectCacheImpl* cache = axObjectCache();
|
| if (!cache)
|
| - return true;
|
| -
|
| - AXComputedObjectAttributeCache* attributeCache = cache->computedObjectAttributeCache();
|
| - if (attributeCache) {
|
| - AXObjectInclusion ignored = attributeCache->getIgnored(axObjectID());
|
| - switch (ignored) {
|
| - case IgnoreObject:
|
| - return true;
|
| - case IncludeObject:
|
| - return false;
|
| - case DefaultBehavior:
|
| - break;
|
| - }
|
| - }
|
| -
|
| - bool result = computeAccessibilityIsIgnored();
|
| + return;
|
|
|
| - if (attributeCache)
|
| - attributeCache->setIgnored(axObjectID(), result ? IgnoreObject : IncludeObject);
|
| + if (cache->modificationCount() == m_lastModificationCount)
|
| + return;
|
|
|
| - return result;
|
| + m_cachedIsIgnored = computeAccessibilityIsIgnored();
|
| + m_lastModificationCount = cache->modificationCount();
|
| }
|
|
|
| bool AXObject::accessibilityIsIgnoredByDefault() const
|
|
|