Changeset 286406 in webkit
- Timestamp:
- Dec 1, 2021 5:11:41 PM (8 months ago)
- Location:
- trunk
- Files:
-
- 4 added
- 26 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/accessibility/model-element-attributes.html (added)
-
LayoutTests/accessibility/resources/heart.usdz (added)
-
LayoutTests/platform/gtk/TestExpectations (modified) (1 diff)
-
LayoutTests/platform/ios/TestExpectations (modified) (1 diff)
-
LayoutTests/platform/ios/accessibility/model-element-attributes-expected.txt (added)
-
LayoutTests/platform/mac-wk1/TestExpectations (modified) (1 diff)
-
LayoutTests/platform/mac/accessibility/model-element-attributes-expected.txt (added)
-
LayoutTests/platform/win/TestExpectations (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/Modules/model-element/HTMLModelElement.cpp (modified) (1 diff)
-
Source/WebCore/Modules/model-element/HTMLModelElement.h (modified) (1 diff)
-
Source/WebCore/Modules/model-element/ModelPlayer.h (modified) (1 diff)
-
Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.cpp (modified) (1 diff)
-
Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.h (modified) (1 diff)
-
Source/WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.h (modified) (1 diff)
-
Source/WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.mm (modified) (2 diffs)
-
Source/WebCore/accessibility/AccessibilityNodeObject.cpp (modified) (2 diffs)
-
Source/WebCore/accessibility/AccessibilityObject.cpp (modified) (2 diffs)
-
Source/WebCore/accessibility/AccessibilityObject.h (modified) (1 diff)
-
Source/WebCore/accessibility/AccessibilityObjectInterface.h (modified) (4 diffs)
-
Source/WebCore/accessibility/AccessibilityRenderObject.cpp (modified) (2 diffs)
-
Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm (modified) (2 diffs)
-
Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp (modified) (1 diff)
-
Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h (modified) (1 diff)
-
Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm (modified) (1 diff)
-
Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (modified) (5 diffs)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/WebProcess/Model/ARKitInlinePreviewModelPlayer.h (modified) (1 diff)
-
Source/WebKit/WebProcess/Model/ARKitInlinePreviewModelPlayer.mm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r286375 r286406 1 2021-12-01 Chris Fleizach <cfleizach@apple.com> 2 3 AX: Support accessibility attributes for <model> 4 https://bugs.webkit.org/show_bug.cgi?id=233620 5 <rdar://problem/85852073> 6 7 Reviewed by Dean Jackson, Andres Gonzalez. 8 9 * accessibility/model-element-attributes.html: Added. 10 * platform/gtk/TestExpectations: 11 * platform/ios/TestExpectations: 12 * platform/mac-wk1/TestExpectations: 13 * platform/ios/accessibility/model-element-attributes-expected.txt: Added. 14 * platform/mac/accessibility/model-element-attributes-expected.txt: Added. 15 * platform/win/TestExpectations: 16 1 17 2021-12-01 Lauro Moura <lmoura@igalia.com> 2 18 -
trunk/LayoutTests/platform/gtk/TestExpectations
r286089 r286406 135 135 webkit.org/b/223862 accessibility/gtk/text-for-range-table-cells.html [ Failure ] 136 136 webkit.org/b/223862 accessibility/gtk/text-for-range-with-link.html [ Failure ] 137 accessibility/model-element-attributes.html [ Skip ] 137 138 138 139 # canvas -
trunk/LayoutTests/platform/ios/TestExpectations
r286146 r286406 2121 2121 accessibility/visible-character-range.html [ Pass ] 2122 2122 accessibility/ancestor-computation.html [ Pass ] 2123 accessibility/model-element-attributes.html [ Pass ] 2123 2124 2124 2125 # Enable "aria-current" tests for iOS. -
trunk/LayoutTests/platform/mac-wk1/TestExpectations
r286328 r286406 603 603 # Skip due to lack of DumpRenderTree `AccessibilityUIElement::stringDescriptionOfAttributeValue` implementation. 604 604 accessibility/visible-character-range.html [ Skip ] 605 accessibility/model-element-attributes.html [ Skip ] 605 606 606 607 # <rdar://problem/26050923> The result is probably still a pass, but we don't have a way -
trunk/LayoutTests/platform/win/TestExpectations
r286165 r286406 280 280 accessibility/img-no-alt-not-ignored-with-title.html [ Skip ] 281 281 accessibility/visible-character-range.html [ Skip ] 282 accessibility/model-element-attributes.html [ Skip ] 282 283 283 284 # Need to implement AccessibilityUIElement::hasDocumentRoleAncestor(), AccessibilityUIElement::hasWebApplicationAncestor(), -
trunk/Source/WebCore/ChangeLog
r286404 r286406 1 2021-12-01 Chris Fleizach <cfleizach@apple.com> 2 3 AX: Support accessibility attributes for <model> 4 https://bugs.webkit.org/show_bug.cgi?id=233620 5 <rdar://problem/85852073> 6 7 Reviewed by Dean Jackson, Andres Gonzalez. 8 9 Support accessible names on <model> tag and plumb through ability for the 10 platform rendered model framework to return accessibility elements. 11 12 Test: accessibility/model-element-attributes.html 13 14 * Modules/model-element/HTMLModelElement.cpp: 15 (WebCore::HTMLModelElement::accessibilityChildren): 16 * Modules/model-element/HTMLModelElement.h: 17 * Modules/model-element/ModelPlayer.h: 18 * Modules/model-element/dummy/DummyModelPlayer.cpp: 19 (WebCore::DummyModelPlayer::accessibilityChildren): 20 * Modules/model-element/dummy/DummyModelPlayer.h: 21 * Modules/model-element/scenekit/SceneKitModelPlayer.h: 22 * Modules/model-element/scenekit/SceneKitModelPlayer.mm: 23 (WebCore::SceneKitModelPlayer::accessibilityChildren): 24 * accessibility/AccessibilityNodeObject.cpp: 25 (WebCore::AccessibilityNodeObject::usesAltTagForTextComputation const): 26 (WebCore::shouldUseAccessibilityObjectInnerText): 27 * accessibility/AccessibilityObject.cpp: 28 (WebCore::AccessibilityObject::modelElementChildren): 29 * accessibility/AccessibilityObject.h: 30 * accessibility/AccessibilityObjectInterface.h: 31 (WebCore::accessibilityRoleToString): 32 (WebCore::AXCoreObject::isModel const): 33 * accessibility/AccessibilityRenderObject.cpp: 34 (WebCore::AccessibilityRenderObject::determineAccessibilityRole): 35 (WebCore::AccessibilityRenderObject::addChildren): 36 * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: 37 (-[WebAccessibilityObjectWrapper accessibilityElements]): 38 (-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]): 39 * accessibility/isolatedtree/AXIsolatedObject.cpp: 40 (WebCore::AXIsolatedObject::modelElementChildren): 41 * accessibility/isolatedtree/AXIsolatedObject.h: 42 * accessibility/mac/AccessibilityObjectMac.mm: 43 (WebCore::Accessibility::createPlatformRoleMap): 44 * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: 45 (-[WebAccessibilityObjectWrapper subrole]): 46 (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): 47 (-[WebAccessibilityObjectWrapper accessibilityIndexOfChild:]): 48 (-[WebAccessibilityObjectWrapper accessibilityArrayAttributeCount:]): 49 (-[WebAccessibilityObjectWrapper accessibilityArrayAttributeValues:index:maxCount:]): 50 1 51 2021-12-01 Myles C. Maxfield <mmaxfield@apple.com> 2 52 -
trunk/Source/WebCore/Modules/model-element/HTMLModelElement.cpp
r286317 r286406 553 553 } 554 554 555 #if PLATFORM(COCOA) 556 Vector<RetainPtr<id>> HTMLModelElement::accessibilityChildren() 557 { 558 if (!m_modelPlayer) 559 return { }; 560 return m_modelPlayer->accessibilityChildren(); 561 } 562 #endif 563 555 564 } 556 565 -
trunk/Source/WebCore/Modules/model-element/HTMLModelElement.h
r286317 r286406 98 98 bool isDraggableIgnoringAttributes() const final { return true; } 99 99 100 #if PLATFORM(COCOA) 101 Vector<RetainPtr<id>> accessibilityChildren(); 102 #endif 103 100 104 private: 101 105 HTMLModelElement(const QualifiedName&, Document&); -
trunk/Source/WebCore/Modules/model-element/ModelPlayer.h
r286317 r286406 63 63 virtual void isMuted(CompletionHandler<void(std::optional<bool>&&)>&&) = 0; 64 64 virtual void setIsMuted(bool, CompletionHandler<void(bool success)>&&) = 0; 65 #if PLATFORM(COCOA) 66 virtual Vector<RetainPtr<id>> accessibilityChildren() = 0; 67 #endif 65 68 }; 66 69 -
trunk/Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.cpp
r286317 r286406 119 119 } 120 120 121 #if PLATFORM(COCOA) 122 Vector<RetainPtr<id>> DummyModelPlayer::accessibilityChildren() 123 { 124 return { }; 121 125 } 126 #endif 127 128 } -
trunk/Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.h
r286317 r286406 60 60 void isMuted(CompletionHandler<void(std::optional<bool>&&)>&&) override; 61 61 void setIsMuted(bool, CompletionHandler<void(bool success)>&&) override; 62 #if PLATFORM(COCOA) 63 Vector<RetainPtr<id>> accessibilityChildren() override; 64 #endif 62 65 63 66 WeakPtr<ModelPlayerClient> m_client; -
trunk/Source/WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.h
r286317 r286406 74 74 void isMuted(CompletionHandler<void(std::optional<bool>&&)>&&) override; 75 75 void setIsMuted(bool, CompletionHandler<void(bool success)>&&) override; 76 Vector<RetainPtr<id>> accessibilityChildren() override; 76 77 77 78 // SceneKitModelLoaderClient overrides. -
trunk/Source/WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.mm
r286317 r286406 33 33 #import "SceneKitModelLoader.h" 34 34 #import <pal/spi/cocoa/SceneKitSPI.h> 35 #import <wtf/cocoa/VectorCocoa.h> 36 37 static std::optional<RetainPtr<id>> makeVectorElement(const RetainPtr<id>*, id arrayElement) 38 { 39 return { retainPtr(arrayElement) }; 40 } 35 41 36 42 namespace WebCore { … … 171 177 } 172 178 179 Vector<RetainPtr<id>> SceneKitModelPlayer::accessibilityChildren() 180 { 181 #if PLATFORM(IOS_FAMILY) 182 NSArray *children = [m_model->defaultScene() accessibilityElements]; 183 #else 184 ALLOW_DEPRECATED_DECLARATIONS_BEGIN 185 NSArray *children = [m_model->defaultScene() accessibilityAttributeValue:NSAccessibilityChildrenAttribute]; 186 ALLOW_DEPRECATED_DECLARATIONS_END 187 #endif 188 return makeVector<RetainPtr<id>>(children); 189 } 190 173 191 } 174 192 -
trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp
r285092 r286406 1277 1277 bool AccessibilityNodeObject::usesAltTagForTextComputation() const 1278 1278 { 1279 return isImage() || isInputImage() || isNativeImage() || isCanvas() || (node() && node()->hasTagName(imgTag)); 1279 bool usesAltTag = isImage() || isInputImage() || isNativeImage() || isCanvas() || (node() && node()->hasTagName(imgTag)); 1280 #if ENABLE(MODEL_ELEMENT) 1281 usesAltTag |= isModel(); 1282 #endif 1283 return usesAltTag; 1280 1284 } 1281 1285 … … 1756 1760 return false; 1757 1761 1762 #if ENABLE(MODEL_ELEMENT) 1763 if (obj->isModel()) 1764 return false; 1765 #endif 1766 1758 1767 return true; 1759 1768 } -
trunk/Source/WebCore/accessibility/AccessibilityObject.cpp
r286116 r286406 57 57 #include "HTMLInputElement.h" 58 58 #include "HTMLMediaElement.h" 59 #include "HTMLModelElement.h" 59 60 #include "HTMLNames.h" 60 61 #include "HTMLParserIdioms.h" … … 1316 1317 return true; 1317 1318 } 1319 1320 #if PLATFORM(COCOA) && ENABLE(MODEL_ELEMENT) 1321 Vector<RetainPtr<id>> AccessibilityObject::modelElementChildren() 1322 { 1323 Node* node = this->node(); 1324 if (!is<HTMLModelElement>(node)) 1325 return { }; 1326 1327 return downcast<HTMLModelElement>(node)->accessibilityChildren(); 1328 } 1329 #endif 1318 1330 1319 1331 // Finds a RenderListItem parent give a node. -
trunk/Source/WebCore/accessibility/AccessibilityObject.h
r286116 r286406 824 824 std::optional<SimpleRange> visibleCharacterRange() const override; 825 825 826 #if PLATFORM(COCOA) && ENABLE(MODEL_ELEMENT) 827 Vector<RetainPtr<id>> modelElementChildren() override; 828 #endif 829 826 830 protected: // FIXME: Make the data members private. 827 831 bool childrenInitialized() const { return m_childrenInitialized; } -
trunk/Source/WebCore/accessibility/AccessibilityObjectInterface.h
r286116 r286406 201 201 MenuListOption, 202 202 Meter, 203 Model, 203 204 Outline, 204 205 Paragraph, … … 448 449 case AccessibilityRole::Meter: 449 450 return "Meter"; 451 case AccessibilityRole::Model: 452 return "Model"; 450 453 case AccessibilityRole::Outline: 451 454 return "Outline"; … … 957 960 bool isSummary() const { return roleValue() == AccessibilityRole::Summary; } 958 961 bool isBlockquote() const { return roleValue() == AccessibilityRole::Blockquote; } 962 #if ENABLE(MODEL_ELEMENT) 963 bool isModel() const { return roleValue() == AccessibilityRole::Model; } 964 #endif 959 965 960 966 virtual bool isLandmark() const = 0; … … 1534 1540 virtual String outerHTML() const = 0; 1535 1541 1542 1543 #if PLATFORM(COCOA) && ENABLE(MODEL_ELEMENT) 1544 virtual Vector<RetainPtr<id>> modelElementChildren() = 0; 1545 #endif 1546 1536 1547 private: 1537 1548 // Detaches this object from the objects it references and it is referenced by. -
trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
r286392 r286406 2955 2955 return AccessibilityRole::Canvas; 2956 2956 2957 #if ENABLE(MODEL_ELEMENT) 2958 if (node && node->hasTagName(modelTag)) 2959 return AccessibilityRole::Model; 2960 #endif 2961 2957 2962 if (cssBox && cssBox->isRenderView()) 2958 2963 return AccessibilityRole::WebArea; … … 3527 3532 addCanvasChildren(); 3528 3533 addRemoteSVGChildren(); 3529 3534 3530 3535 #if PLATFORM(COCOA) 3531 3536 updateAttachmentViewParents(); -
trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
r286116 r286406 417 417 [array addObject:wrapper]; 418 418 } 419 420 #if ENABLE(MODEL_ELEMENT) 421 if (self.axBackingObject->isModel()) { 422 for (auto child : self.axBackingObject->modelElementChildren()) 423 [array addObject:child.get()]; 424 } 425 #endif 419 426 420 427 return array.autorelease(); … … 1040 1047 case AccessibilityRole::MenuListPopup: 1041 1048 case AccessibilityRole::MenuListOption: 1049 case AccessibilityRole::Model: 1042 1050 case AccessibilityRole::Outline: 1043 1051 case AccessibilityRole::Paragraph: -
trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
r286116 r286406 1478 1478 } 1479 1479 1480 #if PLATFORM(COCOA) && ENABLE(MODEL_ELEMENT) 1481 Vector<RetainPtr<id>> AXIsolatedObject::modelElementChildren() 1482 { 1483 return Accessibility::retrieveValueFromMainThread<Vector<RetainPtr<id>>>([this] () -> Vector<RetainPtr<id>> { 1484 if (auto* object = associatedAXObject()) 1485 return object->modelElementChildren(); 1486 return { }; 1487 }); 1488 } 1489 #endif 1490 1480 1491 FloatRect AXIsolatedObject::unobscuredContentRect() const 1481 1492 { -
trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
r286116 r286406 664 664 void setIsIgnoredFromParentDataForChild(AXCoreObject*) override; 665 665 666 #if PLATFORM(COCOA) && ENABLE(MODEL_ELEMENT) 667 Vector<RetainPtr<id>> modelElementChildren() override; 668 #endif 669 666 670 void updateBackingStore() override; 667 671 -
trunk/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm
r284335 r286406 470 470 { AccessibilityRole::Subscript, NSAccessibilityGroupRole }, 471 471 { AccessibilityRole::Superscript, NSAccessibilityGroupRole }, 472 { AccessibilityRole::Model, NSAccessibilityGroupRole }, 472 473 }; 473 474 PlatformRoleMap roleMap; -
trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
r286116 r286406 1851 1851 return @"AXMeter"; 1852 1852 1853 #if ENABLE(MODEL_ELEMENT) 1854 if (backingObject->isModel()) 1855 return @"AXModel"; 1856 #endif 1857 1853 1858 // Treat any group without exposed children as empty. 1854 1859 if ([[self role] isEqual:NSAccessibilityGroupRole] && !backingObject->children().size() && ![[self renderWidgetChildren] count]) … … 2190 2195 2191 2196 if ([attributeName isEqualToString:NSAccessibilityChildrenAttribute] || [attributeName isEqualToString:NSAccessibilityChildrenInNavigationOrderAttribute]) { 2197 #if ENABLE(MODEL_ELEMENT) 2198 if (backingObject->isModel()) { 2199 auto modelChildren = backingObject->modelElementChildren(); 2200 if (modelChildren.size()) { 2201 return createNSArray(modelChildren, [] (auto& child) -> id { 2202 return child.get(); 2203 }).autorelease(); 2204 } 2205 } 2206 #endif 2207 2192 2208 if (!self.childrenVectorSize) { 2193 2209 if (NSArray *children = [self renderWidgetChildren]) … … 4335 4351 4336 4352 NSArray *children = self.childrenVectorArray; 4337 if (!children.count) 4338 return [[self renderWidgetChildren] indexOfObject:child]; 4353 if (!children.count) { 4354 if (auto *renderWidgetChildren = [self renderWidgetChildren]) 4355 return [renderWidgetChildren indexOfObject:child]; 4356 #if ENABLE(MODEL_ELEMENT) 4357 if (backingObject->isModel()) 4358 return backingObject->modelElementChildren().find(child); 4359 #endif 4360 } 4339 4361 4340 4362 NSUInteger count = [children count]; … … 4366 4388 4367 4389 auto childrenSize = self.childrenVectorSize; 4368 if (!childrenSize) 4369 return [[self renderWidgetChildren] count]; 4370 4390 if (!childrenSize) { 4391 #if ENABLE(MODEL_ELEMENT) 4392 if (backingObject->isModel()) 4393 return backingObject->modelElementChildren().size(); 4394 #endif 4395 if (NSArray *renderWidgetChildren = [self renderWidgetChildren]) 4396 return [renderWidgetChildren count]; 4397 } 4371 4398 return childrenSize; 4372 4399 } … … 4385 4412 if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) { 4386 4413 if (!self.childrenVectorSize) { 4387 NSArray *children = [self renderWidgetChildren]; 4414 NSArray *children = nil; 4415 #if ENABLE(MODEL_ELEMENT) 4416 if (backingObject->isModel()) { 4417 children = createNSArray(backingObject->modelElementChildren(), [] (auto& child) -> id { 4418 return child.get(); 4419 }).autorelease(); 4420 } else 4421 #endif 4422 children = [self renderWidgetChildren]; 4423 4388 4424 if (!children) 4389 4425 return nil; -
trunk/Source/WebKit/ChangeLog
r286402 r286406 1 2021-12-01 Chris Fleizach <cfleizach@apple.com> 2 3 AX: Support accessibility attributes for <model> 4 https://bugs.webkit.org/show_bug.cgi?id=233620 5 <rdar://problem/85852073> 6 7 Reviewed by Dean Jackson, Andres Gonzalez. 8 9 * WebProcess/Model/ARKitInlinePreviewModelPlayer.h: 10 * WebProcess/Model/ARKitInlinePreviewModelPlayer.mm: 11 (WebKit::ARKitInlinePreviewModelPlayer::accessibilityChildren): 12 1 13 2021-12-01 Alex Christensen <achristensen@webkit.org> 2 14 -
trunk/Source/WebKit/WebProcess/Model/ARKitInlinePreviewModelPlayer.h
r286317 r286406 66 66 void isMuted(CompletionHandler<void(std::optional<bool>&&)>&&) override; 67 67 void setIsMuted(bool, CompletionHandler<void(bool success)>&&) override; 68 Vector<RetainPtr<id>> accessibilityChildren() override; 68 69 69 70 WeakPtr<WebPage> m_page; -
trunk/Source/WebKit/WebProcess/Model/ARKitInlinePreviewModelPlayer.mm
r286317 r286406 343 343 } 344 344 345 Vector<RetainPtr<id>> ARKitInlinePreviewModelPlayer::accessibilityChildren() 346 { 347 // FIXME: https://webkit.org/b/233575 Need to return something to create a remote element connection to the InlinePreviewModel hosted in another process. 348 return { }; 349 } 350 345 351 } 346 352
Note: See TracChangeset
for help on using the changeset viewer.