[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-10851-g50815da
cfleizach at apple.com
cfleizach at apple.com
Wed Dec 22 18:27:10 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 8665fa25a4451d669272c9ac0303e3fb21f0810e
Author: cfleizach at apple.com <cfleizach at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Sat Dec 11 02:00:46 2010 +0000
AX: refactor AccessibilityRenderObject::doAccessibilityHitTest
https://bugs.webkit.org/show_bug.cgi?id=50574
Reviewed by Darin Adler.
WebCore:
Refactors accessibility hit testing to allow for a more flexible model when handling elements
with fake sub-elements (like sliders or list boxes).
Renamed doAccessibilityHitTest -> accessibilityHitTest, which is called on the root
accessibility render object. Then subclassers are able to override
elementAccessibilityHitTest to return their own specific elements.
* accessibility/AccessibilityListBox.cpp:
(WebCore::AccessibilityListBox::elementAccessibilityHitTest):
* accessibility/AccessibilityListBox.h:
* accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::accessibilityHitTest):
(WebCore::AccessibilityObject::elementAccessibilityHitTest):
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::accessibilityHitTest):
* accessibility/AccessibilityRenderObject.h:
* accessibility/AccessibilitySlider.cpp:
(WebCore::AccessibilitySlider::elementAccessibilityHitTest):
* accessibility/AccessibilitySlider.h:
* accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
(webkit_accessible_component_ref_accessible_at_point):
* accessibility/mac/AccessibilityObjectWrapper.mm:
(-[AccessibilityObjectWrapper accessibilityHitTest:]):
WebKit/chromium:
* src/WebAccessibilityObject.cpp:
(WebKit::WebAccessibilityObject::hitTest):
WebKit/win:
* AccessibleBase.cpp:
(AccessibleBase::accHitTest):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@73825 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 59bc6ce..9019ff9 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,34 @@
+2010-12-10 Chris Fleizach <cfleizach at apple.com>
+
+ Reviewed by Darin Adler.
+
+ AX: refactor AccessibilityRenderObject::doAccessibilityHitTest
+ https://bugs.webkit.org/show_bug.cgi?id=50574
+
+ Refactors accessibility hit testing to allow for a more flexible model when handling elements
+ with fake sub-elements (like sliders or list boxes).
+
+ Renamed doAccessibilityHitTest -> accessibilityHitTest, which is called on the root
+ accessibility render object. Then subclassers are able to override
+ elementAccessibilityHitTest to return their own specific elements.
+
+ * accessibility/AccessibilityListBox.cpp:
+ (WebCore::AccessibilityListBox::elementAccessibilityHitTest):
+ * accessibility/AccessibilityListBox.h:
+ * accessibility/AccessibilityObject.h:
+ (WebCore::AccessibilityObject::accessibilityHitTest):
+ (WebCore::AccessibilityObject::elementAccessibilityHitTest):
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::accessibilityHitTest):
+ * accessibility/AccessibilityRenderObject.h:
+ * accessibility/AccessibilitySlider.cpp:
+ (WebCore::AccessibilitySlider::elementAccessibilityHitTest):
+ * accessibility/AccessibilitySlider.h:
+ * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
+ (webkit_accessible_component_ref_accessible_at_point):
+ * accessibility/mac/AccessibilityObjectWrapper.mm:
+ (-[AccessibilityObjectWrapper accessibilityHitTest:]):
+
2010-12-10 Kenneth Russell <kbr at google.com>
Reviewed by Darin Adler.
diff --git a/WebCore/accessibility/AccessibilityListBox.cpp b/WebCore/accessibility/AccessibilityListBox.cpp
index 8a9e062..191a041 100644
--- a/WebCore/accessibility/AccessibilityListBox.cpp
+++ b/WebCore/accessibility/AccessibilityListBox.cpp
@@ -163,7 +163,7 @@ bool AccessibilityListBox::accessibilityIsIgnored() const
return false;
}
-AccessibilityObject* AccessibilityListBox::doAccessibilityHitTest(const IntPoint& point) const
+AccessibilityObject* AccessibilityListBox::elementAccessibilityHitTest(const IntPoint& point) const
{
// the internal HTMLSelectElement methods for returning a listbox option at a point
// ignore optgroup elements.
diff --git a/WebCore/accessibility/AccessibilityListBox.h b/WebCore/accessibility/AccessibilityListBox.h
index dcfdd6f..cfccb52 100644
--- a/WebCore/accessibility/AccessibilityListBox.h
+++ b/WebCore/accessibility/AccessibilityListBox.h
@@ -41,7 +41,6 @@ public:
static PassRefPtr<AccessibilityListBox> create(RenderObject*);
virtual ~AccessibilityListBox();
- virtual AccessibilityObject* doAccessibilityHitTest(const IntPoint&) const;
virtual bool isListBox() const { return true; }
virtual bool canSetFocusAttribute() const { return true; }
@@ -57,6 +56,7 @@ public:
private:
AccessibilityObject* listBoxOptionAccessibilityObject(HTMLElement*) const;
virtual bool accessibilityIsIgnored() const;
+ virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) const;
};
} // namespace WebCore
diff --git a/WebCore/accessibility/AccessibilityObject.h b/WebCore/accessibility/AccessibilityObject.h
index 77b6a1f..c1ea04f 100644
--- a/WebCore/accessibility/AccessibilityObject.h
+++ b/WebCore/accessibility/AccessibilityObject.h
@@ -368,7 +368,11 @@ public:
virtual void setARIAGrabbed(bool) { }
virtual void determineARIADropEffects(Vector<String>&) { }
- virtual AccessibilityObject* doAccessibilityHitTest(const IntPoint&) const { return 0; }
+ // Called on the root AX object to return the deepest available element.
+ virtual AccessibilityObject* accessibilityHitTest(const IntPoint&) const { return 0; }
+ // Called on the AX object after the render tree determines which is the right AccessibilityRenderObject.
+ virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) const { return const_cast<AccessibilityObject*>(this); }
+
virtual AccessibilityObject* focusedUIElement() const { return 0; }
virtual AccessibilityObject* firstChild() const { return 0; }
diff --git a/WebCore/accessibility/AccessibilityRenderObject.cpp b/WebCore/accessibility/AccessibilityRenderObject.cpp
index c3f9920..9206094 100644
--- a/WebCore/accessibility/AccessibilityRenderObject.cpp
+++ b/WebCore/accessibility/AccessibilityRenderObject.cpp
@@ -2733,7 +2733,7 @@ AccessibilityObject* AccessibilityRenderObject::accessibilityImageMapHitTest(HTM
return 0;
}
-AccessibilityObject* AccessibilityRenderObject::doAccessibilityHitTest(const IntPoint& point) const
+AccessibilityObject* AccessibilityRenderObject::accessibilityHitTest(const IntPoint& point) const
{
if (!m_renderer || !m_renderer->hasLayer())
return 0;
@@ -2759,17 +2759,11 @@ AccessibilityObject* AccessibilityRenderObject::doAccessibilityHitTest(const Int
return 0;
AccessibilityObject* result = obj->document()->axObjectCache()->getOrCreate(obj);
+ result->updateChildrenIfNecessary();
- if (obj->isBoxModelObject() && toRenderBoxModelObject(obj)->isListBox()) {
- // Make sure the children are initialized so that hit testing finds the right element.
- AccessibilityListBox* listBox = static_cast<AccessibilityListBox*>(result);
- listBox->updateChildrenIfNecessary();
- return listBox->doAccessibilityHitTest(point);
- }
+ // Allow the element to perform any hit-testing it might need to do to reach non-render children.
+ result = result->elementAccessibilityHitTest(point);
- if (result->isInputSlider())
- return result->doAccessibilityHitTest(point);
-
if (result->accessibilityIsIgnored()) {
// If this element is the label of a control, a hit test should return the control.
AccessibilityObject* controlObject = result->correspondingControlForLabelElement();
diff --git a/WebCore/accessibility/AccessibilityRenderObject.h b/WebCore/accessibility/AccessibilityRenderObject.h
index a01008a..9660d5f 100644
--- a/WebCore/accessibility/AccessibilityRenderObject.h
+++ b/WebCore/accessibility/AccessibilityRenderObject.h
@@ -127,7 +127,6 @@ public:
virtual int layoutCount() const;
virtual double estimatedLoadingProgress() const;
- virtual AccessibilityObject* doAccessibilityHitTest(const IntPoint&) const;
virtual AccessibilityObject* focusedUIElement() const;
virtual AccessibilityObject* firstChild() const;
virtual AccessibilityObject* lastChild() const;
@@ -150,7 +149,10 @@ public:
void updateAccessibilityRole();
virtual AXObjectCache* axObjectCache() const;
-
+
+ // Should be called on the root accessibility object to kick off a hit test.
+ virtual AccessibilityObject* accessibilityHitTest(const IntPoint&) const;
+
virtual Element* actionElement() const;
Element* mouseButtonListener() const;
FrameView* frameViewIfRenderView() const;
diff --git a/WebCore/accessibility/AccessibilitySlider.cpp b/WebCore/accessibility/AccessibilitySlider.cpp
index f53db80..d4433a2 100644
--- a/WebCore/accessibility/AccessibilitySlider.cpp
+++ b/WebCore/accessibility/AccessibilitySlider.cpp
@@ -99,7 +99,7 @@ const AtomicString& AccessibilitySlider::getAttribute(const QualifiedName& attri
return element()->getAttribute(attribute);
}
-AccessibilityObject* AccessibilitySlider::doAccessibilityHitTest(const IntPoint& point) const
+AccessibilityObject* AccessibilitySlider::elementAccessibilityHitTest(const IntPoint& point) const
{
if (m_children.size()) {
ASSERT(m_children.size() == 1);
diff --git a/WebCore/accessibility/AccessibilitySlider.h b/WebCore/accessibility/AccessibilitySlider.h
index e5728d3..406c3ab 100644
--- a/WebCore/accessibility/AccessibilitySlider.h
+++ b/WebCore/accessibility/AccessibilitySlider.h
@@ -47,7 +47,7 @@ protected:
private:
HTMLInputElement* element() const;
virtual bool accessibilityIsIgnored() const;
- virtual AccessibilityObject* doAccessibilityHitTest(const IntPoint&) const;
+ virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) const;
virtual AccessibilityRole roleValue() const { return SliderRole; }
virtual bool isSlider() const { return true; }
diff --git a/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp b/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp
index ca0d80b..5a55bb1 100644
--- a/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp
+++ b/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp
@@ -1789,7 +1789,8 @@ static IntPoint atkToContents(AccessibilityObject* coreObject, AtkCoordType coor
static AtkObject* webkit_accessible_component_ref_accessible_at_point(AtkComponent* component, gint x, gint y, AtkCoordType coordType)
{
IntPoint pos = atkToContents(core(component), coordType, x, y);
- AccessibilityObject* target = core(component)->doAccessibilityHitTest(pos);
+
+ AccessibilityObject* target = core(component)->accessibilityHitTest(pos);
if (!target)
return 0;
g_object_ref(target->wrapper());
diff --git a/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm b/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
index 5100bfc..9a5d133 100644
--- a/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
+++ b/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
@@ -1948,7 +1948,7 @@ static NSString* roleValueToNSString(AccessibilityRole value)
if (![self updateObjectBackingStore])
return nil;
- RefPtr<AccessibilityObject> axObject = m_object->doAccessibilityHitTest(IntPoint(point));
+ RefPtr<AccessibilityObject> axObject = m_object->accessibilityHitTest(IntPoint(point));
if (axObject)
return NSAccessibilityUnignoredAncestor(axObject->wrapper());
return NSAccessibilityUnignoredAncestor(self);
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 94c712a..5ffbfbb 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,13 @@
+2010-12-10 Chris Fleizach <cfleizach at apple.com>
+
+ Reviewed by Darin Adler.
+
+ AX: refactor AccessibilityRenderObject::doAccessibilityHitTest
+ https://bugs.webkit.org/show_bug.cgi?id=50574
+
+ * src/WebAccessibilityObject.cpp:
+ (WebKit::WebAccessibilityObject::hitTest):
+
2010-12-10 Zhenyao Mo <zmo at google.com>
Reviewed by Adam Barth.
diff --git a/WebKit/chromium/src/WebAccessibilityObject.cpp b/WebKit/chromium/src/WebAccessibilityObject.cpp
index 9df69cf..1a425e3 100644
--- a/WebKit/chromium/src/WebAccessibilityObject.cpp
+++ b/WebKit/chromium/src/WebAccessibilityObject.cpp
@@ -379,7 +379,7 @@ WebAccessibilityObject WebAccessibilityObject::hitTest(const WebPoint& point) co
m_private->updateBackingStore();
IntPoint contentsPoint = m_private->documentFrameView()->windowToContents(point);
- RefPtr<AccessibilityObject> hit = m_private->doAccessibilityHitTest(contentsPoint);
+ RefPtr<AccessibilityObject> hit = m_private->accessibilityHitTest(contentsPoint);
if (hit.get())
return WebAccessibilityObject(hit);
diff --git a/WebKit/win/AccessibleBase.cpp b/WebKit/win/AccessibleBase.cpp
index 3e8306f..1ebd45c 100644
--- a/WebKit/win/AccessibleBase.cpp
+++ b/WebKit/win/AccessibleBase.cpp
@@ -574,7 +574,7 @@ HRESULT STDMETHODCALLTYPE AccessibleBase::accHitTest(long x, long y, VARIANT* pv
return E_FAIL;
IntPoint point = m_object->documentFrameView()->screenToContents(IntPoint(x, y));
- AccessibilityObject* childObj = m_object->doAccessibilityHitTest(point);
+ AccessibilityObject* childObj = m_object->accessibilityHitTest(point);
if (!childObj) {
// If we did not hit any child objects, test whether the point hit us, and
diff --git a/WebKit/win/ChangeLog b/WebKit/win/ChangeLog
index e06c64b..c2a111e 100644
--- a/WebKit/win/ChangeLog
+++ b/WebKit/win/ChangeLog
@@ -1,3 +1,13 @@
+2010-12-10 Chris Fleizach <cfleizach at apple.com>
+
+ Reviewed by Darin Adler.
+
+ AX: refactor AccessibilityRenderObject::doAccessibilityHitTest
+ https://bugs.webkit.org/show_bug.cgi?id=50574
+
+ * AccessibleBase.cpp:
+ (AccessibleBase::accHitTest):
+
2010-12-09 Brian Weinstein <bweinstein at apple.com>
Reviewed by Adam Roben.
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list