Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1410)

Unified Diff: Source/modules/accessibility/AXObjectCacheImpl.cpp

Issue 1032183003: AXObjectCacheImpl::postNotification shouldn't post on an ancestor. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/modules/accessibility/AXObjectCacheImpl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/accessibility/AXObjectCacheImpl.cpp
diff --git a/Source/modules/accessibility/AXObjectCacheImpl.cpp b/Source/modules/accessibility/AXObjectCacheImpl.cpp
index 47e682327e3cefda1c7c49d26d45ac68e9ec2e56..d2a0609cbe4395aa500b8858868b33eae8ee4c38 100644
--- a/Source/modules/accessibility/AXObjectCacheImpl.cpp
+++ b/Source/modules/accessibility/AXObjectCacheImpl.cpp
@@ -647,7 +647,7 @@ void AXObjectCacheImpl::textChanged(AXObject* obj)
bool parentAlreadyExists = obj->parentObjectIfExists();
obj->textChanged();
- postNotification(obj, obj->document(), AXObjectCacheImpl::AXTextChanged, true);
+ postNotification(obj, AXObjectCacheImpl::AXTextChanged, true);
if (parentAlreadyExists)
obj->notifyIfIgnoredValueChanged();
}
@@ -719,19 +719,7 @@ void AXObjectCacheImpl::postNotification(LayoutObject* layoutObject, AXNotificat
return;
m_modificationCount++;
-
- // Get an accessibility object that already exists. One should not be created here
- // because a layout update may be in progress and creating an AX object can re-trigger a layout
- RefPtr<AXObject> object = get(layoutObject);
- while (!object && layoutObject) {
- layoutObject = layoutObject->parent();
- object = get(layoutObject);
- }
-
- if (!layoutObject)
- return;
-
- postNotification(object.get(), &layoutObject->document(), notification, postToElement);
+ postNotification(get(layoutObject), notification, postToElement);
}
void AXObjectCacheImpl::postNotification(Node* node, AXNotification notification, bool postToElement)
@@ -740,31 +728,16 @@ void AXObjectCacheImpl::postNotification(Node* node, AXNotification notification
return;
m_modificationCount++;
-
- // Get an accessibility object that already exists. One should not be created here
- // because a layout update may be in progress and creating an AX object can re-trigger a layout
- RefPtr<AXObject> object = get(node);
- while (!object && node) {
- node = node->parentNode();
- object = get(node);
- }
-
- if (!node)
- return;
-
- postNotification(object.get(), &node->document(), notification, postToElement);
+ postNotification(get(node), notification, postToElement);
}
-void AXObjectCacheImpl::postNotification(AXObject* object, Document* document, AXNotification notification, bool postToElement)
+void AXObjectCacheImpl::postNotification(AXObject* object, AXNotification notification, bool postToElement)
{
m_modificationCount++;
if (object && !postToElement)
object = object->observableObject();
- if (!object && document)
- object = get(document->layoutView());
-
if (!object)
return;
@@ -815,7 +788,7 @@ void AXObjectCacheImpl::handleLayoutComplete(LayoutObject* layoutObject)
// allows an AX notification to be sent when a page has its first layout, rather than when the
// document first loads.
if (AXObject* obj = getOrCreate(layoutObject))
- postNotification(obj, obj->document(), AXLayoutComplete, true);
+ postNotification(obj, AXLayoutComplete, true);
}
void AXObjectCacheImpl::handleAriaExpandedChange(Node* node)
@@ -1045,12 +1018,12 @@ void AXObjectCacheImpl::handleUpdateActiveMenuOption(LayoutMenuList* menuList, i
void AXObjectCacheImpl::handleLoadComplete(Document* document)
{
- postNotification(getOrCreate(document), document, AXObjectCache::AXLoadComplete, true);
+ postNotification(getOrCreate(document), AXObjectCache::AXLoadComplete, true);
}
void AXObjectCacheImpl::handleLayoutComplete(Document* document)
{
- postNotification(getOrCreate(document), document, AXObjectCache::AXLayoutComplete, true);
+ postNotification(getOrCreate(document), AXObjectCache::AXLayoutComplete, true);
}
void AXObjectCacheImpl::handleScrolledToAnchor(const Node* anchorNode)
« no previous file with comments | « Source/modules/accessibility/AXObjectCacheImpl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698