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