Title: [262403] trunk/Source/WebCore
Revision
262403
Author
andresg...@apple.com
Date
2020-06-01 18:09:08 -0700 (Mon, 01 Jun 2020)

Log Message

[WebAccessibilityObjectWrapper subrole] should check for the nullity of the underlying AXCoreObject before dereferencing.
https://bugs.webkit.org/show_bug.cgi?id=212607

Reviewed by Chris Fleizach.

Covered by existing tests.

- Check for nullity of the backingObject before dereferencing.
- self.axBackingObject is now called only once, instead of many times unnecessarily.

* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper subrole]):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (262402 => 262403)


--- trunk/Source/WebCore/ChangeLog	2020-06-02 00:51:53 UTC (rev 262402)
+++ trunk/Source/WebCore/ChangeLog	2020-06-02 01:09:08 UTC (rev 262403)
@@ -1,3 +1,18 @@
+2020-06-01  Andres Gonzalez  <andresg...@apple.com>
+
+        [WebAccessibilityObjectWrapper subrole] should check for the nullity of the underlying AXCoreObject before dereferencing.
+        https://bugs.webkit.org/show_bug.cgi?id=212607
+
+        Reviewed by Chris Fleizach.
+
+        Covered by existing tests.
+
+        - Check for nullity of the backingObject before dereferencing.
+        - self.axBackingObject is now called only once, instead of many times unnecessarily.
+
+        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+        (-[WebAccessibilityObjectWrapper subrole]):
+
 2020-06-01  Sihui Liu  <sihui_...@apple.com>
 
         TextManipulationController should put one Node in only one paragraph

Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (262402 => 262403)


--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm	2020-06-02 00:51:53 UTC (rev 262402)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm	2020-06-02 01:09:08 UTC (rev 262403)
@@ -1996,21 +1996,25 @@
 ALLOW_DEPRECATED_DECLARATIONS_BEGIN
 - (NSString*)subrole
 {
-    if (self.axBackingObject->isPasswordField())
+    auto* backingObject = self.axBackingObject;
+    if (!backingObject)
+        return nil;
+
+    if (backingObject->isPasswordField())
         return NSAccessibilitySecureTextFieldSubrole;
-    if (self.axBackingObject->isSearchField())
+    if (backingObject->isSearchField())
         return NSAccessibilitySearchFieldSubrole;
-    
-    if (self.axBackingObject->isAttachment()) {
+
+    if (backingObject->isAttachment()) {
         NSView* attachView = [self attachmentView];
         if ([[attachView accessibilityAttributeNames] containsObject:NSAccessibilitySubroleAttribute])
             return [attachView accessibilityAttributeValue:NSAccessibilitySubroleAttribute];
     }
-    
-    if (self.axBackingObject->isMeter())
+
+    if (backingObject->isMeter())
         return @"AXMeter";
-    
-    AccessibilityRole role = self.axBackingObject->roleValue();
+
+    AccessibilityRole role = backingObject->roleValue();
     if (role == AccessibilityRole::HorizontalRule)
         return NSAccessibilityContentSeparatorSubrole;
     if (role == AccessibilityRole::ToggleButton)
@@ -2017,26 +2021,25 @@
         return NSAccessibilityToggleSubrole;
     if (role == AccessibilityRole::Footer)
         return @"AXFooter";
-
-    if (self.axBackingObject->roleValue() == AccessibilityRole::SpinButtonPart) {
-        if (self.axBackingObject->isIncrementor())
+    if (role == AccessibilityRole::SpinButtonPart) {
+        if (backingObject->isIncrementor())
             return NSAccessibilityIncrementArrowSubrole;
         return NSAccessibilityDecrementArrowSubrole;
     }
-    
-    if (self.axBackingObject->isFileUploadButton())
+
+    if (backingObject->isFileUploadButton())
         return @"AXFileUploadButton";
-    
-    if (self.axBackingObject->isTreeItem())
+
+    if (backingObject->isTreeItem())
         return NSAccessibilityOutlineRowSubrole;
-    
-    if (self.axBackingObject->isFieldset())
+
+    if (backingObject->isFieldset())
         return @"AXFieldset";
 
-    if (self.axBackingObject->isList()) {
-        if (self.axBackingObject->isUnorderedList() || self.axBackingObject->isOrderedList())
+    if (backingObject->isList()) {
+        if (backingObject->isUnorderedList() || backingObject->isOrderedList())
             return NSAccessibilityContentListSubrole;
-        if (self.axBackingObject->isDescriptionList()) {
+        if (backingObject->isDescriptionList()) {
             return NSAccessibilityDescriptionListSubrole;
         }
     }
@@ -2103,44 +2106,44 @@
     default:
         break;
     }
-    
+
     if (role == AccessibilityRole::MathElement) {
-        if (self.axBackingObject->isMathFraction())
+        if (backingObject->isMathFraction())
             return @"AXMathFraction";
-        if (self.axBackingObject->isMathFenced())
+        if (backingObject->isMathFenced())
             return @"AXMathFenced";
-        if (self.axBackingObject->isMathSubscriptSuperscript())
+        if (backingObject->isMathSubscriptSuperscript())
             return @"AXMathSubscriptSuperscript";
-        if (self.axBackingObject->isMathRow())
+        if (backingObject->isMathRow())
             return @"AXMathRow";
-        if (self.axBackingObject->isMathUnderOver())
+        if (backingObject->isMathUnderOver())
             return @"AXMathUnderOver";
-        if (self.axBackingObject->isMathSquareRoot())
+        if (backingObject->isMathSquareRoot())
             return @"AXMathSquareRoot";
-        if (self.axBackingObject->isMathRoot())
+        if (backingObject->isMathRoot())
             return @"AXMathRoot";
-        if (self.axBackingObject->isMathText())
+        if (backingObject->isMathText())
             return @"AXMathText";
-        if (self.axBackingObject->isMathNumber())
+        if (backingObject->isMathNumber())
             return @"AXMathNumber";
-        if (self.axBackingObject->isMathIdentifier())
+        if (backingObject->isMathIdentifier())
             return @"AXMathIdentifier";
-        if (self.axBackingObject->isMathTable())
+        if (backingObject->isMathTable())
             return @"AXMathTable";
-        if (self.axBackingObject->isMathTableRow())
+        if (backingObject->isMathTableRow())
             return @"AXMathTableRow";
-        if (self.axBackingObject->isMathTableCell())
+        if (backingObject->isMathTableCell())
             return @"AXMathTableCell";
-        if (self.axBackingObject->isMathFenceOperator())
+        if (backingObject->isMathFenceOperator())
             return @"AXMathFenceOperator";
-        if (self.axBackingObject->isMathSeparatorOperator())
+        if (backingObject->isMathSeparatorOperator())
             return @"AXMathSeparatorOperator";
-        if (self.axBackingObject->isMathOperator())
+        if (backingObject->isMathOperator())
             return @"AXMathOperator";
-        if (self.axBackingObject->isMathMultiscript())
+        if (backingObject->isMathMultiscript())
             return @"AXMathMultiscript";
     }
-    
+
     if (role == AccessibilityRole::Video)
         return @"AXVideo";
     if (role == AccessibilityRole::Audio)
@@ -2152,10 +2155,10 @@
     if (role == AccessibilityRole::Time)
         return @"AXTimeGroup";
 
-    if (self.axBackingObject->isMediaTimeline())
+    if (backingObject->isMediaTimeline())
         return NSAccessibilityTimelineSubrole;
 
-    if (self.axBackingObject->isSwitch())
+    if (backingObject->isSwitch())
         return NSAccessibilitySwitchSubrole;
 
     if (role == AccessibilityRole::Insertion)
@@ -2167,9 +2170,9 @@
     if (role == AccessibilityRole::Subscript)
         return @"AXSubscriptStyleGroup";
 
-    if (self.axBackingObject->isStyleFormatGroup()) {
+    if (backingObject->isStyleFormatGroup()) {
         using namespace HTMLNames;
-        auto tagName = self.axBackingObject->tagName();
+        auto tagName = backingObject->tagName();
         if (tagName == kbdTag)
             return @"AXKeyboardInputStyleGroup";
         if (tagName == codeTag)
@@ -2184,7 +2187,7 @@
             return @"AXCiteStyleGroup";
         ASSERT_NOT_REACHED();
     }
-    
+
     // Ruby subroles
     switch (role) {
     case AccessibilityRole::RubyBase:
@@ -2200,7 +2203,7 @@
     default:
         break;
     }
-    
+
     return nil;
 }
 ALLOW_DEPRECATED_DECLARATIONS_END
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to