- Revision
- 261705
- Author
- andresg...@apple.com
- Date
- 2020-05-14 12:44:20 -0700 (Thu, 14 May 2020)
Log Message
AXCoreObject font comparison methods should take another AXCoreObject instead of a RenderObject.
https://bugs.webkit.org/show_bug.cgi?id=211909
Reviewed by Chris Fleizach.
Covered by existing tests.
- In order for font comparison methods to be implementted for both
AXObjects and AXIsolatedObjects, they should take another AXCoreObject
to compare against, instead of a RenderObject.
- The AXIsolatedObject implementation of these methods is forwarded to
the associated AXObject and dispatched to the main thread.
- Implemented AXIsolatedObject::accessibilityDescription, hasUnderline and isUnvisited.
* accessibility/AccessibilityObject.cpp:
(WebCore::Accessibility::isAccessibilityObjectSearchMatchAtIndex):
* accessibility/AccessibilityObject.h:
* accessibility/AccessibilityObjectInterface.h:
(WebCore::AXCoreObject::isNativeListBox const):
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::hasSameFont const):
(WebCore::AccessibilityRenderObject::hasSameFontColor const):
(WebCore::AccessibilityRenderObject::hasSameStyle const):
* accessibility/AccessibilityRenderObject.h:
* accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::initializeAttributeData):
(WebCore::AXIsolatedObject::hasSameFont const):
(WebCore::AXIsolatedObject::hasSameFontColor const):
(WebCore::AXIsolatedObject::hasSameStyle const):
(WebCore::AXIsolatedObject::isNativeListBox const): Deleted, implemented in base class.
(WebCore::AXIsolatedObject::isUnvisited const): Deleted, inlined in header.
(WebCore::AXIsolatedObject::hasUnderline const): Deleted, inlined in header.
(WebCore::AXIsolatedObject::accessibilityDescription const): Deleted, inlined in header.
* accessibility/isolatedtree/AXIsolatedObject.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (261704 => 261705)
--- trunk/Source/WebCore/ChangeLog 2020-05-14 19:35:30 UTC (rev 261704)
+++ trunk/Source/WebCore/ChangeLog 2020-05-14 19:44:20 UTC (rev 261705)
@@ -1,3 +1,40 @@
+2020-05-14 Andres Gonzalez <andresg...@apple.com>
+
+ AXCoreObject font comparison methods should take another AXCoreObject instead of a RenderObject.
+ https://bugs.webkit.org/show_bug.cgi?id=211909
+
+ Reviewed by Chris Fleizach.
+
+ Covered by existing tests.
+
+ - In order for font comparison methods to be implementted for both
+ AXObjects and AXIsolatedObjects, they should take another AXCoreObject
+ to compare against, instead of a RenderObject.
+ - The AXIsolatedObject implementation of these methods is forwarded to
+ the associated AXObject and dispatched to the main thread.
+ - Implemented AXIsolatedObject::accessibilityDescription, hasUnderline and isUnvisited.
+
+ * accessibility/AccessibilityObject.cpp:
+ (WebCore::Accessibility::isAccessibilityObjectSearchMatchAtIndex):
+ * accessibility/AccessibilityObject.h:
+ * accessibility/AccessibilityObjectInterface.h:
+ (WebCore::AXCoreObject::isNativeListBox const):
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::hasSameFont const):
+ (WebCore::AccessibilityRenderObject::hasSameFontColor const):
+ (WebCore::AccessibilityRenderObject::hasSameStyle const):
+ * accessibility/AccessibilityRenderObject.h:
+ * accessibility/isolatedtree/AXIsolatedObject.cpp:
+ (WebCore::AXIsolatedObject::initializeAttributeData):
+ (WebCore::AXIsolatedObject::hasSameFont const):
+ (WebCore::AXIsolatedObject::hasSameFontColor const):
+ (WebCore::AXIsolatedObject::hasSameStyle const):
+ (WebCore::AXIsolatedObject::isNativeListBox const): Deleted, implemented in base class.
+ (WebCore::AXIsolatedObject::isUnvisited const): Deleted, inlined in header.
+ (WebCore::AXIsolatedObject::hasUnderline const): Deleted, inlined in header.
+ (WebCore::AXIsolatedObject::accessibilityDescription const): Deleted, inlined in header.
+ * accessibility/isolatedtree/AXIsolatedObject.h:
+
2020-05-14 Nikita Vasilyev <nvasil...@apple.com>
Web Inspector: front-end shouldn't change the order of User Style Sheet rules
Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (261704 => 261705)
--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp 2020-05-14 19:35:30 UTC (rev 261704)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp 2020-05-14 19:44:20 UTC (rev 261705)
@@ -3629,10 +3629,10 @@
&& axObject->roleValue() != criteria.startObject->roleValue();
case AccessibilitySearchKey::FontChange:
return criteria.startObject
- && !axObject->hasSameFont(criteria.startObject->renderer());
+ && !axObject->hasSameFont(*criteria.startObject);
case AccessibilitySearchKey::FontColorChange:
return criteria.startObject
- && !axObject->hasSameFontColor(criteria.startObject->renderer());
+ && !axObject->hasSameFontColor(*criteria.startObject);
case AccessibilitySearchKey::Frame:
return axObject->isWebArea();
case AccessibilitySearchKey::Graphic:
@@ -3690,7 +3690,7 @@
return axObject->isStaticText();
case AccessibilitySearchKey::StyleChange:
return criteria.startObject
- && !axObject->hasSameStyle(criteria.startObject->renderer());
+ && !axObject->hasSameStyle(*criteria.startObject);
case AccessibilitySearchKey::TableSameLevel:
return criteria.startObject
&& axObject->isTable() && axObject->isExposable()
Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.h (261704 => 261705)
--- trunk/Source/WebCore/accessibility/AccessibilityObject.h 2020-05-14 19:35:30 UTC (rev 261704)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.h 2020-05-14 19:44:20 UTC (rev 261705)
@@ -233,9 +233,9 @@
bool hasMisspelling() const override;
RefPtr<Range> getMisspellingRange(RefPtr<Range> const& start, AccessibilitySearchDirection) const override;
bool hasPlainText() const override { return false; }
- bool hasSameFont(RenderObject*) const override { return false; }
- bool hasSameFontColor(RenderObject*) const override { return false; }
- bool hasSameStyle(RenderObject*) const override { return false; }
+ bool hasSameFont(const AXCoreObject&) const override { return false; }
+ bool hasSameFontColor(const AXCoreObject&) const override { return false; }
+ bool hasSameStyle(const AXCoreObject&) const override { return false; }
bool hasUnderline() const override { return false; }
bool hasHighlighting() const override;
Modified: trunk/Source/WebCore/accessibility/AccessibilityObjectInterface.h (261704 => 261705)
--- trunk/Source/WebCore/accessibility/AccessibilityObjectInterface.h 2020-05-14 19:35:30 UTC (rev 261704)
+++ trunk/Source/WebCore/accessibility/AccessibilityObjectInterface.h 2020-05-14 19:44:20 UTC (rev 261705)
@@ -513,7 +513,7 @@
bool isCheckbox() const { return roleValue() == AccessibilityRole::CheckBox; }
bool isRadioButton() const { return roleValue() == AccessibilityRole::RadioButton; }
bool isListBox() const { return roleValue() == AccessibilityRole::ListBox; }
- virtual bool isNativeListBox() const = 0;
+ virtual bool isNativeListBox() const { return false; };
virtual bool isListBoxOption() const = 0;
virtual bool isAttachment() const = 0;
virtual bool isMediaTimeline() const = 0;
@@ -663,9 +663,9 @@
virtual bool hasMisspelling() const = 0;
virtual RefPtr<Range> getMisspellingRange(RefPtr<Range> const& start, AccessibilitySearchDirection) const = 0;
virtual bool hasPlainText() const = 0;
- virtual bool hasSameFont(RenderObject*) const = 0;
- virtual bool hasSameFontColor(RenderObject*) const = 0;
- virtual bool hasSameStyle(RenderObject*) const = 0;
+ virtual bool hasSameFont(const AXCoreObject&) const = 0;
+ virtual bool hasSameFontColor(const AXCoreObject&) const = 0;
+ virtual bool hasSameStyle(const AXCoreObject&) const = 0;
bool isStaticText() const { return roleValue() == AccessibilityRole::StaticText; }
virtual bool hasUnderline() const = 0;
virtual bool hasHighlighting() const = 0;
Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (261704 => 261705)
--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp 2020-05-14 19:35:30 UTC (rev 261704)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp 2020-05-14 19:44:20 UTC (rev 261705)
@@ -3712,8 +3712,9 @@
&& style.textDecorationsInEffect().isEmpty();
}
-bool AccessibilityRenderObject::hasSameFont(RenderObject* renderer) const
+bool AccessibilityRenderObject::hasSameFont(const AXCoreObject& object) const
{
+ auto* renderer = object.renderer();
if (!m_renderer || !renderer)
return false;
@@ -3736,8 +3737,9 @@
}
#endif
-bool AccessibilityRenderObject::hasSameFontColor(RenderObject* renderer) const
+bool AccessibilityRenderObject::hasSameFontColor(const AXCoreObject& object) const
{
+ auto* renderer = object.renderer();
if (!m_renderer || !renderer)
return false;
@@ -3744,8 +3746,9 @@
return m_renderer->style().visitedDependentColor(CSSPropertyColor) == renderer->style().visitedDependentColor(CSSPropertyColor);
}
-bool AccessibilityRenderObject::hasSameStyle(RenderObject* renderer) const
+bool AccessibilityRenderObject::hasSameStyle(const AXCoreObject& object) const
{
+ auto* renderer = object.renderer();
if (!m_renderer || !renderer)
return false;
Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h (261704 => 261705)
--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h 2020-05-14 19:35:30 UTC (rev 261704)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h 2020-05-14 19:44:20 UTC (rev 261705)
@@ -72,9 +72,9 @@
bool hasBoldFont() const override;
bool hasItalicFont() const override;
bool hasPlainText() const override;
- bool hasSameFont(RenderObject*) const override;
- bool hasSameFontColor(RenderObject*) const override;
- bool hasSameStyle(RenderObject*) const override;
+ bool hasSameFont(const AXCoreObject&) const override;
+ bool hasSameFontColor(const AXCoreObject&) const override;
+ bool hasSameStyle(const AXCoreObject&) const override;
bool hasUnderline() const override;
bool canSetTextRangeAttributes() const override;
Modified: trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp (261704 => 261705)
--- trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp 2020-05-14 19:35:30 UTC (rev 261704)
+++ trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp 2020-05-14 19:44:20 UTC (rev 261705)
@@ -60,6 +60,7 @@
void AXIsolatedObject::initializeAttributeData(AXCoreObject& object, bool isRoot)
{
setProperty(AXPropertyName::ARIALandmarkRoleDescription, object.ariaLandmarkRoleDescription().isolatedCopy());
+ setProperty(AXPropertyName::AccessibilityDescription, object.accessibilityDescription());
setProperty(AXPropertyName::BoundingBoxRect, object.boundingBoxRect());
setProperty(AXPropertyName::Description, object.descriptionAttributeValue().isolatedCopy());
setProperty(AXPropertyName::ElementRect, object.elementRect());
@@ -221,6 +222,7 @@
setProperty(AXPropertyName::HasBoldFont, object.hasBoldFont());
setProperty(AXPropertyName::HasItalicFont, object.hasItalicFont());
setProperty(AXPropertyName::HasPlainText, object.hasPlainText());
+ setProperty(AXPropertyName::HasUnderline, object.hasUnderline());
setProperty(AXPropertyName::IsKeyboardFocusable, object.isKeyboardFocusable());
if (object.isTable()) {
@@ -1056,12 +1058,6 @@
return false;
}
-bool AXIsolatedObject::isNativeListBox() const
-{
- ASSERT_NOT_REACHED();
- return false;
-}
-
bool AXIsolatedObject::isListBoxOption() const
{
ASSERT_NOT_REACHED();
@@ -1167,12 +1163,6 @@
return false;
}
-bool AXIsolatedObject::isUnvisited() const
-{
- ASSERT_NOT_REACHED();
- return false;
-}
-
bool AXIsolatedObject::isLinked() const
{
ASSERT_NOT_REACHED();
@@ -1203,28 +1193,46 @@
return false;
}
-bool AXIsolatedObject::hasSameFont(RenderObject*) const
+bool AXIsolatedObject::hasSameFont(const AXCoreObject& otherObject) const
{
- ASSERT_NOT_REACHED();
- return false;
+ if (!is<AXIsolatedObject>(otherObject))
+ return false;
+
+ return Accessibility::retrieveValueFromMainThread<bool>([&otherObject, this] () -> bool {
+ if (auto* axObject = associatedAXObject()) {
+ if (auto* axOtherObject = downcast<AXIsolatedObject>(otherObject).associatedAXObject())
+ return axObject->hasSameFont(*axOtherObject);
+ }
+ return false;
+ });
}
-bool AXIsolatedObject::hasSameFontColor(RenderObject*) const
+bool AXIsolatedObject::hasSameFontColor(const AXCoreObject& otherObject) const
{
- ASSERT_NOT_REACHED();
- return false;
+ if (!is<AXIsolatedObject>(otherObject))
+ return false;
+
+ return Accessibility::retrieveValueFromMainThread<bool>([&otherObject, this] () -> bool {
+ if (auto* axObject = associatedAXObject()) {
+ if (auto* axOtherObject = downcast<AXIsolatedObject>(otherObject).associatedAXObject())
+ return axObject->hasSameFontColor(*axOtherObject);
+ }
+ return false;
+ });
}
-bool AXIsolatedObject::hasSameStyle(RenderObject*) const
+bool AXIsolatedObject::hasSameStyle(const AXCoreObject& otherObject) const
{
- ASSERT_NOT_REACHED();
- return false;
-}
+ if (!is<AXIsolatedObject>(otherObject))
+ return false;
-bool AXIsolatedObject::hasUnderline() const
-{
- ASSERT_NOT_REACHED();
- return false;
+ return Accessibility::retrieveValueFromMainThread<bool>([&otherObject, this] () -> bool {
+ if (auto* axObject = associatedAXObject()) {
+ if (auto* axOtherObject = downcast<AXIsolatedObject>(otherObject).associatedAXObject())
+ return axObject->hasSameStyle(*axOtherObject);
+ }
+ return false;
+ });
}
Element* AXIsolatedObject::element() const
@@ -1468,12 +1476,6 @@
return false;
}
-String AXIsolatedObject::accessibilityDescription() const
-{
- ASSERT_NOT_REACHED();
- return String();
-}
-
String AXIsolatedObject::helpText() const
{
ASSERT_NOT_REACHED();
Modified: trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h (261704 => 261705)
--- trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h 2020-05-14 19:35:30 UTC (rev 261704)
+++ trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h 2020-05-14 19:44:20 UTC (rev 261705)
@@ -80,13 +80,8 @@
return axObjectCache()->objectFromAXID(objectID());
}
- enum class AXPropertyName : uint8_t {
+ enum class AXPropertyName : uint16_t {
None = 0,
- AccessKey,
- ActionVerb,
- AccessibilityButtonState,
- AccessibilityText,
- AutoCompleteValue,
ARIAControlsElements,
ARIADetailsElements,
DropEffects,
@@ -102,6 +97,12 @@
AXColumnIndex,
AXRowCount,
AXRowIndex,
+ AccessKey,
+ AccessibilityButtonState,
+ AccessibilityDescription,
+ AccessibilityText,
+ ActionVerb,
+ AutoCompleteValue,
BlockquoteLevel,
BoundingBoxRect,
CanHaveSelectedChildren,
@@ -153,6 +154,7 @@
HasItalicFont,
HasPlainText,
HasPopup,
+ HasUnderline,
HeaderContainer,
HeadingLevel,
HelpText,
@@ -337,7 +339,7 @@
VisibleRows,
WebArea,
};
-
+
typedef std::pair<AXID, AXID> AccessibilityIsolatedTreeMathMultiscriptPair;
struct AccessibilityIsolatedTreeText {
String text;
@@ -737,7 +739,6 @@
bool isContainedByPasswordField() const override;
AXCoreObject* passwordFieldOrContainingPasswordField() override;
bool isNativeTextControl() const override;
- bool isNativeListBox() const override;
bool isListBoxOption() const override;
bool isSliderThumb() const override;
bool isInputSlider() const override;
@@ -756,7 +757,7 @@
bool isOnScreen() const override;
bool isOffScreen() const override;
bool isPressed() const override;
- bool isUnvisited() const override;
+ bool isUnvisited() const override { return boolAttributeValue(AXPropertyName::IsUnvisited); }
bool isLinked() const override;
bool isVisible() const override;
bool isCollapsed() const override;
@@ -765,10 +766,10 @@
bool hasItalicFont() const override { return boolAttributeValue(AXPropertyName::HasItalicFont); }
bool hasMisspelling() const override;
bool hasPlainText() const override { return boolAttributeValue(AXPropertyName::HasPlainText); }
- bool hasSameFont(RenderObject*) const override;
- bool hasSameFontColor(RenderObject*) const override;
- bool hasSameStyle(RenderObject*) const override;
- bool hasUnderline() const override;
+ bool hasSameFont(const AXCoreObject&) const override;
+ bool hasSameFontColor(const AXCoreObject&) const override;
+ bool hasSameStyle(const AXCoreObject&) const override;
+ bool hasUnderline() const override { return boolAttributeValue(AXPropertyName::HasUnderline); }
bool hasHighlighting() const override { return boolAttributeValue(AXPropertyName::HasHighlighting); }
Element* element() const override;
Node* node() const override;
@@ -812,7 +813,7 @@
bool inheritsPresentationalRole() const override;
void setAccessibleName(const AtomString&) override;
bool hasAttributesRequiredForInclusion() const override;
- String accessibilityDescription() const override;
+ String accessibilityDescription() const override { return stringAttributeValue(AXPropertyName::AccessibilityDescription); }
String title() const override { return stringAttributeValue(AXPropertyName::Title); }
String helpText() const override;
bool isARIAStaticText() const override;