Changeset 246941 in webkit


Ignore:
Timestamp:
Jun 28, 2019 3:21:35 PM (5 years ago)
Author:
Chris Fleizach
Message:

AX: Both convertToNSArray() functions in WebAccessibilityObjectWrapperBase.mm leak every NSMutableArray returned
https://bugs.webkit.org/show_bug.cgi?id=199306

Reviewed by David Kilzer.

Stop leaking every instance of convertToNSArray and return an autoreleased version.
Remove unneeded casts.

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityFindMatchingObjects:]):

  • accessibility/mac/WebAccessibilityObjectWrapperBase.h:
  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(convertToNSArray):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper childrenVectorArray]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):

Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r246940 r246941  
     12019-06-28  chris fleizach  <cfleizach@apple.com>
     2
     3        AX: Both convertToNSArray() functions in WebAccessibilityObjectWrapperBase.mm leak every NSMutableArray returned
     4        https://bugs.webkit.org/show_bug.cgi?id=199306
     5
     6        Reviewed by David Kilzer.
     7
     8        Stop leaking every instance of convertToNSArray and return an autoreleased version.
     9        Remove unneeded casts.
     10
     11        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
     12        (-[WebAccessibilityObjectWrapper accessibilityFindMatchingObjects:]):
     13        * accessibility/mac/WebAccessibilityObjectWrapperBase.h:
     14        * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
     15        (convertToNSArray):
     16        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
     17        (-[WebAccessibilityObjectWrapper childrenVectorArray]):
     18        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
     19        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
     20
    1212019-06-28  Wenson Hsieh  <wenson_hsieh@apple.com>
    222
  • trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm

    r245912 r246941  
    19811981    AccessibilityObject::AccessibilityChildrenVector results;
    19821982    m_object->findMatchingObjects(&criteria, results);
    1983     return (NSArray *)convertToNSArray(results);
     1983    return convertToNSArray(results);
    19841984}
    19851985
  • trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h

    r244691 r246941  
    101101
    102102#if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
    103 extern RetainPtr<NSArray> convertToNSArray(const Vector<RefPtr<WebCore::AXIsolatedTreeNode>>&);
     103extern NSArray *convertToNSArray(const Vector<RefPtr<WebCore::AXIsolatedTreeNode>>&);
    104104#endif
    105 extern RetainPtr<NSArray> convertToNSArray(const WebCore::AccessibilityObject::AccessibilityChildrenVector&);
     105extern NSArray *convertToNSArray(const WebCore::AccessibilityObject::AccessibilityChildrenVector&);
    106106
    107107#if PLATFORM(IOS_FAMILY)
  • trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm

    r246126 r246941  
    277277
    278278#if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
    279 RetainPtr<NSArray> convertToNSArray(const Vector<RefPtr<WebCore::AXIsolatedTreeNode>>& children)
    280 {
    281     RetainPtr<NSMutableArray> result = [[NSMutableArray alloc] initWithCapacity:children.size()];
     279NSArray *convertToNSArray(const Vector<RefPtr<WebCore::AXIsolatedTreeNode>>& children)
     280{
     281    NSMutableArray *result = [[NSMutableArray alloc] initWithCapacity:children.size()];
    282282    for (auto& child : children)
    283283        addChildToArray(*child, result)
    284     return result;
    285 }
    286 #endif
    287 
    288 RetainPtr<NSArray> convertToNSArray(const WebCore::AccessibilityObject::AccessibilityChildrenVector& children)
    289 {
    290     RetainPtr<NSMutableArray> result = [[NSMutableArray alloc] initWithCapacity:children.size()];
     284    return [result autorelease];
     285}
     286#endif
     287
     288NSArray *convertToNSArray(const WebCore::AccessibilityObject::AccessibilityChildrenVector& children)
     289{
     290    NSMutableArray *result = [[NSMutableArray alloc] initWithCapacity:children.size()];
    291291    for (auto& child : children)
    292292        addChildToArray(*child, result);
    293     return result;
     293    return [result autorelease];
    294294}
    295295
  • trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm

    r246490 r246941  
    20022002        for (auto childID : nodeChildren)
    20032003            children.uncheckedAppend(tree->nodeForID(child));
    2004         return (NSArray *)convertToNSArray(children);
    2005     }
    2006 #endif
    2007     return (NSArray *)convertToNSArray(m_object->children());
     2004        return convertToNSArray(children);
     2005    }
     2006#endif
     2007    return convertToNSArray(m_object->children());
    20082008}
    20092009
     
    26782678            AccessibilityObject::AccessibilityChildrenVector contentCopy;
    26792679            m_object->ariaTreeItemContent(contentCopy);
    2680             return (NSArray *)convertToNSArray(contentCopy);
     2680            return convertToNSArray(contentCopy);
    26812681        }
    26822682       
     
    26882688            AccessibilityObject::AccessibilityChildrenVector selectedChildrenCopy;
    26892689            m_object->selectedChildren(selectedChildrenCopy);
    2690             return (NSArray *)convertToNSArray(selectedChildrenCopy);
     2690            return convertToNSArray(selectedChildrenCopy);
    26912691        }
    26922692        return nil;
     
    26972697            AccessibilityObject::AccessibilityChildrenVector visibleChildrenCopy;
    26982698            m_object->visibleChildren(visibleChildrenCopy);
    2699             return (NSArray *)convertToNSArray(visibleChildrenCopy);
     2699            return convertToNSArray(visibleChildrenCopy);
    27002700        }
    27012701        else if (m_object->isList())
     
    27102710            AccessibilityObject::AccessibilityChildrenVector links;
    27112711            downcast<AccessibilityRenderObject>(*m_object).getDocumentLinks(links);
    2712             return (NSArray *)convertToNSArray(links);
     2712            return convertToNSArray(links);
    27132713        }
    27142714        if ([attributeName isEqualToString:@"AXLoaded"])
     
    29262926            AccessibilityObject::AccessibilityChildrenVector tabsChildren;
    29272927            m_object->tabChildren(tabsChildren);
    2928             return (NSArray *)convertToNSArray(tabsChildren);
     2928            return convertToNSArray(tabsChildren);
    29292929        }
    29302930    }
     
    29362936            AccessibilityObject::AccessibilityChildrenVector tabs;
    29372937            m_object->tabChildren(tabs);
    2938             auto tabsChildren = (NSArray *)convertToNSArray(tabs);
     2938            auto tabsChildren = convertToNSArray(tabs);
    29392939
    29402940            NSMutableArray *contents = [NSMutableArray array];
     
    29622962        auto& table = downcast<AccessibilityTable>(*m_object);
    29632963        if ([attributeName isEqualToString:NSAccessibilityRowsAttribute])
    2964             return (NSArray *)convertToNSArray(table.rows());
     2964            return convertToNSArray(table.rows());
    29652965       
    29662966        if ([attributeName isEqualToString:NSAccessibilityVisibleRowsAttribute]) {
    29672967            AccessibilityObject::AccessibilityChildrenVector visibleRows;
    29682968            table.visibleRows(visibleRows);
    2969             return (NSArray *)convertToNSArray(visibleRows);
     2969            return convertToNSArray(visibleRows);
    29702970        }
    29712971       
     
    29732973        if ([attributeName isEqualToString:NSAccessibilityColumnsAttribute] ||
    29742974            [attributeName isEqualToString:NSAccessibilityVisibleColumnsAttribute]) {
    2975             return (NSArray *)convertToNSArray(table.columns());
     2975            return convertToNSArray(table.columns());
    29762976        }
    29772977       
     
    29792979            AccessibilityObject::AccessibilityChildrenVector selectedChildrenCopy;
    29802980            m_object->selectedChildren(selectedChildrenCopy);
    2981             return (NSArray *)convertToNSArray(selectedChildrenCopy);
     2981            return convertToNSArray(selectedChildrenCopy);
    29822982        }
    29832983       
     
    29902990            AccessibilityObject::AccessibilityChildrenVector columnHeaders;
    29912991            table.columnHeaders(columnHeaders);
    2992             return (NSArray *)convertToNSArray(columnHeaders);
     2992            return convertToNSArray(columnHeaders);
    29932993        }
    29942994       
     
    30033003            AccessibilityObject::AccessibilityChildrenVector rowHeaders;
    30043004            table.rowHeaders(rowHeaders);
    3005             return (NSArray *)convertToNSArray(rowHeaders);
     3005            return convertToNSArray(rowHeaders);
    30063006        }
    30073007       
     
    30093009            AccessibilityObject::AccessibilityChildrenVector cells;
    30103010            table.cells(cells);
    3011             return (NSArray *)convertToNSArray(cells);
     3011            return convertToNSArray(cells);
    30123012        }
    30133013       
     
    30333033        if ([attributeName isEqualToString:NSAccessibilityRowsAttribute] ||
    30343034            [attributeName isEqualToString:NSAccessibilityVisibleRowsAttribute]) {
    3035             return (NSArray *)convertToNSArray(column.children());
     3035            return convertToNSArray(column.children());
    30363036        }
    30373037        if ([attributeName isEqualToString:NSAccessibilityHeaderAttribute]) {
     
    30583058            AccessibilityObject::AccessibilityChildrenVector columnHeaders;
    30593059            cell.columnHeaders(columnHeaders);
    3060             return (NSArray *)convertToNSArray(columnHeaders);
     3060            return convertToNSArray(columnHeaders);
    30613061        }
    30623062        if ([attributeName isEqualToString:NSAccessibilityRowHeaderUIElementsAttribute]) {
    30633063            AccessibilityObject::AccessibilityChildrenVector rowHeaders;
    30643064            cell.rowHeaders(rowHeaders);
    3065             return (NSArray *)convertToNSArray(rowHeaders);
     3065            return convertToNSArray(rowHeaders);
    30663066        }
    30673067        if ([attributeName isEqualToString:NSAccessibilityARIAColumnIndexAttribute])
     
    30763076            AccessibilityObject::AccessibilityChildrenVector selectedChildrenCopy;
    30773077            m_object->selectedChildren(selectedChildrenCopy);
    3078             return (NSArray *)convertToNSArray(selectedChildrenCopy);
     3078            return convertToNSArray(selectedChildrenCopy);
    30793079        }
    30803080        if ([attributeName isEqualToString:NSAccessibilityRowsAttribute]) {
    30813081            AccessibilityObject::AccessibilityChildrenVector rowsCopy;
    30823082            m_object->ariaTreeRows(rowsCopy);
    3083             return (NSArray *)convertToNSArray(rowsCopy);
     3083            return convertToNSArray(rowsCopy);
    30843084        }
    30853085       
     
    31193119            AccessibilityObject::AccessibilityChildrenVector rowsCopy;
    31203120            m_object->ariaTreeItemDisclosedRows(rowsCopy);
    3121             return (NSArray *)convertToNSArray(rowsCopy);
     3121            return convertToNSArray(rowsCopy);
    31223122        } else if (is<AccessibilityARIAGridRow>(*m_object)) {
    31233123            AccessibilityObject::AccessibilityChildrenVector rowsCopy;
    31243124            downcast<AccessibilityARIAGridRow>(*m_object).disclosedRows(rowsCopy);
    3125             return (NSArray *)convertToNSArray(rowsCopy);
     3125            return convertToNSArray(rowsCopy);
    31263126        }
    31273127    }
     
    31793179        AccessibilityObject::AccessibilityChildrenVector linkedUIElements;
    31803180        m_object->linkedUIElements(linkedUIElements);
    3181         return (NSArray *)convertToNSArray(linkedUIElements);
     3181        return convertToNSArray(linkedUIElements);
    31823182    }
    31833183   
     
    32603260        AccessibilityObject::AccessibilityChildrenVector ariaOwns;
    32613261        m_object->ariaOwnsElements(ariaOwns);
    3262         return (NSArray *)convertToNSArray(ariaOwns);
     3262        return convertToNSArray(ariaOwns);
    32633263    }
    32643264   
     
    34023402        AccessibilityObject::AccessibilityChildrenVector details;
    34033403        m_object->ariaDetailsElements(details);
    3404         return (NSArray *)convertToNSArray(details);
     3404        return convertToNSArray(details);
    34053405    }
    34063406
     
    34113411        AccessibilityObject::AccessibilityChildrenVector errorMessages;
    34123412        m_object->ariaErrorMessageElements(errorMessages);
    3413         return (NSArray *)convertToNSArray(errorMessages);
     3413        return convertToNSArray(errorMessages);
    34143414    }
    34153415
     
    34353435        AccessibilityObject::AccessibilityChildrenVector ariaControls;
    34363436        m_object->ariaControlsElements(ariaControls);
    3437         return (NSArray *)convertToNSArray(ariaControls);
     3437        return convertToNSArray(ariaControls);
    34383438    }
    34393439
     
    41884188        AccessibilityObject::AccessibilityChildrenVector results;
    41894189        m_object->findMatchingObjects(&criteria, results);
    4190         return (NSArray *)convertToNSArray(results);
     4190        return convertToNSArray(results);
    41914191    }
    41924192   
Note: See TracChangeset for help on using the changeset viewer.