Modified: trunk/Source/WebCore/ChangeLog (266166 => 266167)
--- trunk/Source/WebCore/ChangeLog 2020-08-26 11:16:03 UTC (rev 266166)
+++ trunk/Source/WebCore/ChangeLog 2020-08-26 12:08:22 UTC (rev 266167)
@@ -1,3 +1,26 @@
+2020-08-26 Andres Gonzalez <[email protected]>
+
+ When caching the AccessibilityText property in AXIsolatedObject, the Strings need to be isolatedCopied.
+ https://bugs.webkit.org/show_bug.cgi?id=215834
+
+ Reviewed by Chris Fleizach.
+
+ The initialization of the AccessibilityText property in AXIsolatedObject::initializeAttributeData
+ wasn't isolatedCopying the Strings contained in the AccessibilityText structure.
+ Instead it was copying the String into a different structure. This patch
+ straightlines the caching of the AccessibilityText property by isolatedCopying
+ the original Strings. This simplifies the retrieval of this property
+ since there is no conversion to make in the AXIsolatedObject::accessibilityText
+ method.
+
+ * accessibility/isolatedtree/AXIsolatedObject.cpp:
+ (WebCore::AXIsolatedObject::initializeAttributeData): isolatedCopies the
+ String in AccessibilityText.
+ (WebCore::AXIsolatedObject::accessibilityText const): No conversion
+ needed to retrieve the property.
+ * accessibility/isolatedtree/AXIsolatedTree.h:
+ Removed the AccessibilityIsolatedTreeText structure since it is not needed.
+
2020-08-26 Youenn Fablet <[email protected]>
enumerateDevices should expose audiooutput devices that are tied to an audio input device
Modified: trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp (266166 => 266167)
--- trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp 2020-08-26 11:16:03 UTC (rev 266166)
+++ trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp 2020-08-26 12:08:22 UTC (rev 266167)
@@ -328,12 +328,10 @@
Vector<AccessibilityText> texts;
object.accessibilityText(texts);
- Vector<AccessibilityIsolatedTreeText> isolatedTexts;
+ Vector<AccessibilityText> isolatedTexts;
isolatedTexts.reserveCapacity(texts.size());
- for (auto text : texts) {
- AccessibilityIsolatedTreeText isolatedText;
- isolatedText.text = text.text;
- isolatedText.textSource = text.textSource;
+ for (const auto& text : texts) {
+ AccessibilityText isolatedText(text.text.isolatedCopy(), text.textSource);
isolatedTexts.uncheckedAppend(isolatedText);
}
setProperty(AXPropertyName::AccessibilityText, isolatedTexts);
@@ -524,11 +522,7 @@
void AXIsolatedObject::accessibilityText(Vector<AccessibilityText>& texts) const
{
- auto isolatedTexts = vectorAttributeValue<AccessibilityIsolatedTreeText>(AXPropertyName::AccessibilityText);
- for (const auto& isolatedText : isolatedTexts) {
- AccessibilityText text(isolatedText.text, isolatedText.textSource);
- texts.append(text);
- }
+ texts = vectorAttributeValue<AccessibilityText>(AXPropertyName::AccessibilityText);
}
void AXIsolatedObject::classList(Vector<String>& list) const
Modified: trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h (266166 => 266167)
--- trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h 2020-08-26 11:16:03 UTC (rev 266166)
+++ trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h 2020-08-26 12:08:22 UTC (rev 266167)
@@ -309,12 +309,7 @@
typedef std::pair<AXID, AXID> AccessibilityIsolatedTreeMathMultiscriptPair;
-struct AccessibilityIsolatedTreeText {
- String text;
- AccessibilityTextSource textSource;
-};
-
-using AXPropertyValueVariant = Variant<std::nullptr_t, String, bool, int, unsigned, double, float, uint64_t, Color, URL, LayoutRect, FloatRect, AXID, IntPoint, OptionSet<SpeakAs>, std::pair<unsigned, unsigned>, Vector<AccessibilityIsolatedTreeText>, Vector<AXID>, Vector<AccessibilityIsolatedTreeMathMultiscriptPair>, Vector<String>, Path>;
+using AXPropertyValueVariant = Variant<std::nullptr_t, String, bool, int, unsigned, double, float, uint64_t, Color, URL, LayoutRect, FloatRect, AXID, IntPoint, OptionSet<SpeakAs>, std::pair<unsigned, unsigned>, Vector<AccessibilityText>, Vector<AXID>, Vector<std::pair<AXID, AXID>>, Vector<String>, Path>;
typedef HashMap<AXPropertyName, AXPropertyValueVariant, WTF::IntHash<AXPropertyName>, WTF::StrongEnumHashTraits<AXPropertyName>> AXPropertyMap;
struct AXPropertyChange {