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

Unified Diff: Source/core/accessibility/AccessibilityObject.cpp

Issue 14740025: Simplify and add caching for accessible bounding box calculation. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Update comment Created 7 years, 8 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
Index: Source/core/accessibility/AccessibilityObject.cpp
diff --git a/Source/core/accessibility/AccessibilityObject.cpp b/Source/core/accessibility/AccessibilityObject.cpp
index 89f493bcabf888e4dce21bd512383207f5322f1c..f6e32ba9b7104b5c5467a6218b5613549d676396 100644
--- a/Source/core/accessibility/AccessibilityObject.cpp
+++ b/Source/core/accessibility/AccessibilityObject.cpp
@@ -353,7 +353,7 @@ int AccessibilityObject::blockquoteLevel() const
}
// Lacking concrete evidence of orientation, horizontal means width > height. vertical is height > width;
-AccessibilityOrientation AccessibilityObject::orientation() const
+AccessibilityOrientation AccessibilityObject::orientation()
{
LayoutRect bounds = elementRect();
if (bounds.size().width() > bounds.size().height())
@@ -570,6 +570,14 @@ bool AccessibilityObject::isInsideARIALiveRegion() const
return false;
}
+void AccessibilityObject::markCachedElementRectDirty()
+{
+ AccessibilityChildrenVector axChildren = children();
+ for (unsigned i = 0; i < axChildren.size(); ++i) {
+ axChildren[i].get()->markCachedElementRectDirty();
+ }
+}
+
IntPoint AccessibilityObject::clickPoint()
{
LayoutRect rect = elementRect();
@@ -598,7 +606,7 @@ IntRect AccessibilityObject::boundingBoxForQuads(RenderObject* obj, const Vector
return result;
}
-AccessibilityObject* AccessibilityObject::elementAccessibilityHitTest(const IntPoint& point) const
+AccessibilityObject* AccessibilityObject::elementAccessibilityHitTest(const IntPoint& point)
{
// Send the hit test back into the sub-frame if necessary.
if (isAttachment()) {
@@ -785,9 +793,9 @@ bool AccessibilityObject::press() const
return true;
}
-void AccessibilityObject::scrollToMakeVisible() const
+void AccessibilityObject::scrollToMakeVisible()
{
- IntRect objectRect = pixelSnappedIntRect(boundingBoxRect());
+ IntRect objectRect = pixelSnappedIntRect(elementRect());
objectRect.setLocation(IntPoint());
scrollToMakeVisibleWithSubFocus(objectRect);
}
@@ -864,7 +872,7 @@ static int computeBestScrollOffset(int currentScrollOffset,
return currentScrollOffset;
}
-void AccessibilityObject::scrollToMakeVisibleWithSubFocus(const IntRect& subfocus) const
+void AccessibilityObject::scrollToMakeVisibleWithSubFocus(const IntRect& subfocus)
{
// Search up the parent chain until we find the first one that's scrollable.
AccessibilityObject* scrollParent = parentObject();
@@ -875,7 +883,7 @@ void AccessibilityObject::scrollToMakeVisibleWithSubFocus(const IntRect& subfocu
if (!scrollableArea)
return;
- LayoutRect objectRect = boundingBoxRect();
+ LayoutRect objectRect = elementRect();
IntPoint scrollPosition = scrollableArea->scrollPosition();
IntRect scrollVisibleRect = scrollableArea->visibleContentRect();
@@ -897,11 +905,11 @@ void AccessibilityObject::scrollToMakeVisibleWithSubFocus(const IntRect& subfocu
scrollParent->scrollToMakeVisible();
}
-void AccessibilityObject::scrollToGlobalPoint(const IntPoint& globalPoint) const
+void AccessibilityObject::scrollToGlobalPoint(const IntPoint& globalPoint)
{
// Search up the parent chain and create a vector of all scrollable parent objects
// and ending with this object itself.
- Vector<const AccessibilityObject*> objects;
+ Vector<AccessibilityObject*> objects;
AccessibilityObject* parentObject;
for (parentObject = this->parentObject(); parentObject; parentObject = parentObject->parentObject()) {
if (parentObject->getScrollableAreaIfScrollable())
@@ -915,12 +923,12 @@ void AccessibilityObject::scrollToGlobalPoint(const IntPoint& globalPoint) const
IntPoint point = globalPoint;
size_t levels = objects.size() - 1;
for (size_t i = 0; i < levels; i++) {
- const AccessibilityObject* outer = objects[i];
- const AccessibilityObject* inner = objects[i + 1];
+ AccessibilityObject* outer = objects[i];
+ AccessibilityObject* inner = objects[i + 1];
ScrollableArea* scrollableArea = outer->getScrollableAreaIfScrollable();
- LayoutRect innerRect = inner->isAccessibilityScrollView() ? inner->parentObject()->boundingBoxRect() : inner->boundingBoxRect();
+ LayoutRect innerRect = inner->isAccessibilityScrollView() ? inner->parentObject()->elementRect() : inner->elementRect();
LayoutRect objectRect = innerRect;
IntPoint scrollPosition = scrollableArea->scrollPosition();

Powered by Google App Engine
This is Rietveld 408576698