Diff
Modified: trunk/LayoutTests/ChangeLog (230781 => 230782)
--- trunk/LayoutTests/ChangeLog 2018-04-18 21:21:17 UTC (rev 230781)
+++ trunk/LayoutTests/ChangeLog 2018-04-18 21:21:50 UTC (rev 230782)
@@ -1,3 +1,14 @@
+2018-04-18 Nan Wang <n_w...@apple.com>
+
+ AX: [macOS] WebKit hangs when triggering an alert from an AOM increment event
+ https://bugs.webkit.org/show_bug.cgi?id=184742
+
+ Reviewed by Chris Fleizach.
+
+ * accessibility/mac/async-increment-decrement-action-expected.txt: Added.
+ * accessibility/mac/async-increment-decrement-action.html: Added.
+ * platform/mac-wk1/TestExpectations:
+
2018-04-18 Ross Kirsling <ross.kirsl...@sony.com>
[Win] Layout Test js/date-constructor.html is failing
Added: trunk/LayoutTests/accessibility/mac/async-increment-decrement-action-expected.txt (0 => 230782)
--- trunk/LayoutTests/accessibility/mac/async-increment-decrement-action-expected.txt (rev 0)
+++ trunk/LayoutTests/accessibility/mac/async-increment-decrement-action-expected.txt 2018-04-18 21:21:50 UTC (rev 230782)
@@ -0,0 +1,15 @@
+
+This tests that increment and decrement actions are async.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS obj.intValue is 25
+PASS obj.intValue is 25
+PASS obj.intValue is 50
+PASS obj.intValue is 50
+PASS obj.intValue is 25
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/accessibility/mac/async-increment-decrement-action.html (0 => 230782)
--- trunk/LayoutTests/accessibility/mac/async-increment-decrement-action.html (rev 0)
+++ trunk/LayoutTests/accessibility/mac/async-increment-decrement-action.html 2018-04-18 21:21:50 UTC (rev 230782)
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body id="body">
+
+<input type="range" min="0" max="100" value="25" step="25" id="range1"/>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+ description("This tests that increment and decrement actions are async.");
+
+ if (window.accessibilityController) {
+ jsTestIsAsync = true;
+
+ var obj = accessibilityController.accessibleElementById("range1");
+
+ shouldBe("obj.intValue", "25");
+
+ obj.asyncIncrement();
+ shouldBe("obj.intValue", "25");
+
+ setTimeout(function() {
+ shouldBe("obj.intValue", "50");
+
+ obj.asyncDecrement();
+ shouldBe("obj.intValue", "50");
+
+ setTimeout(function() {
+ shouldBe("obj.intValue", "25");
+ finishJSTest();
+ }, 5);
+ }, 5);
+ }
+
+</script>
+
+<script src=""
+</body>
+</html>
Modified: trunk/LayoutTests/platform/mac-wk1/TestExpectations (230781 => 230782)
--- trunk/LayoutTests/platform/mac-wk1/TestExpectations 2018-04-18 21:21:17 UTC (rev 230781)
+++ trunk/LayoutTests/platform/mac-wk1/TestExpectations 2018-04-18 21:21:50 UTC (rev 230782)
@@ -501,6 +501,7 @@
webkit.org/b/180898 accessibility/mac/AOM-events.html [ Skip ]
webkit.org/b/183023 accessibility/mac/AOM-events-all.html [ Skip ]
webkit.org/b/183352 accessibility/ios-simulator/AOM-dismiss-event.html [ Skip ]
+webkit.org/b/184742 accessibility/mac/async-increment-decrement-action.html [ Skip ]
webkit.org/b/182752 accessibility/mac/accessibility-make-first-responder.html [ Skip ]
Modified: trunk/Source/WebCore/ChangeLog (230781 => 230782)
--- trunk/Source/WebCore/ChangeLog 2018-04-18 21:21:17 UTC (rev 230781)
+++ trunk/Source/WebCore/ChangeLog 2018-04-18 21:21:50 UTC (rev 230782)
@@ -1,3 +1,23 @@
+2018-04-18 Nan Wang <n_w...@apple.com>
+
+ AX: [macOS] WebKit hangs when triggering an alert from an AOM increment event
+ https://bugs.webkit.org/show_bug.cgi?id=184742
+
+ Reviewed by Chris Fleizach.
+
+ Made increment and decrement actions on the macOS to be async. So that VoiceOver
+ won't hang indefinitely if performing the actions causes an alert or other modal
+ behaviors.
+
+ Test: accessibility/mac/async-increment-decrement-action.html
+
+ * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+ (-[WebAccessibilityObjectWrapper accessibilityPerformIncrementAction]):
+ (-[WebAccessibilityObjectWrapper _accessibilityPerformIncrementAction]):
+ (-[WebAccessibilityObjectWrapper accessibilityPerformDecrementAction]):
+ (-[WebAccessibilityObjectWrapper _accessibilityPerformDecrementAction]):
+ (-[WebAccessibilityObjectWrapper accessibilityPerformAction:]):
+
2018-04-18 Youenn Fablet <you...@apple.com>
MediaResourceLoader should set its fetch destination
Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (230781 => 230782)
--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm 2018-04-18 21:21:17 UTC (rev 230781)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm 2018-04-18 21:21:50 UTC (rev 230782)
@@ -3482,6 +3482,13 @@
- (void)accessibilityPerformIncrementAction
{
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [self _accessibilityPerformIncrementAction];
+ });
+}
+
+- (void)_accessibilityPerformIncrementAction
+{
if (![self updateObjectBackingStore])
return;
@@ -3493,6 +3500,13 @@
- (void)accessibilityPerformDecrementAction
{
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [self _accessibilityPerformDecrementAction];
+ });
+}
+
+- (void)_accessibilityPerformDecrementAction
+{
if (![self updateObjectBackingStore])
return;
@@ -3573,6 +3587,12 @@
else if ([action isEqualToString:@"AXSyncPressAction"])
[self _accessibilityPerformPressAction];
+ else if ([action isEqualToString:@"AXSyncIncrementAction"])
+ [self _accessibilityPerformIncrementAction];
+
+ else if ([action isEqualToString:@"AXSyncDecrementAction"])
+ [self _accessibilityPerformDecrementAction];
+
else if ([action isEqualToString:NSAccessibilityShowMenuAction])
[self accessibilityPerformShowMenuAction];
Modified: trunk/Tools/ChangeLog (230781 => 230782)
--- trunk/Tools/ChangeLog 2018-04-18 21:21:17 UTC (rev 230781)
+++ trunk/Tools/ChangeLog 2018-04-18 21:21:50 UTC (rev 230782)
@@ -1,3 +1,23 @@
+2018-04-18 Nan Wang <n_w...@apple.com>
+
+ AX: [macOS] WebKit hangs when triggering an alert from an AOM increment event
+ https://bugs.webkit.org/show_bug.cgi?id=184742
+
+ Reviewed by Chris Fleizach.
+
+ * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
+ (AccessibilityUIElement::increment):
+ (AccessibilityUIElement::decrement):
+ * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
+ (WTR::AccessibilityUIElement::asyncIncrement):
+ (WTR::AccessibilityUIElement::asyncDecrement):
+ * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
+ * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
+ (WTR::AccessibilityUIElement::increment):
+ (WTR::AccessibilityUIElement::decrement):
+ (WTR::AccessibilityUIElement::asyncIncrement):
+ (WTR::AccessibilityUIElement::asyncDecrement):
+
2018-04-18 Ross Kirsling <ross.kirsl...@sony.com>
Fix archive step for WinCairo build bot.
Modified: trunk/Tools/DumpRenderTree/mac/AccessibilityUIElementMac.mm (230781 => 230782)
--- trunk/Tools/DumpRenderTree/mac/AccessibilityUIElementMac.mm 2018-04-18 21:21:17 UTC (rev 230781)
+++ trunk/Tools/DumpRenderTree/mac/AccessibilityUIElementMac.mm 2018-04-18 21:21:50 UTC (rev 230782)
@@ -1328,7 +1328,7 @@
void AccessibilityUIElement::increment()
{
BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilityPerformAction:NSAccessibilityIncrementAction];
+ [m_element accessibilityPerformAction:@"AXSyncIncrementAction"];
END_AX_OBJC_EXCEPTIONS
}
@@ -1335,7 +1335,7 @@
void AccessibilityUIElement::decrement()
{
BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilityPerformAction:NSAccessibilityDecrementAction];
+ [m_element accessibilityPerformAction:@"AXSyncDecrementAction"];
END_AX_OBJC_EXCEPTIONS
}
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h (230781 => 230782)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h 2018-04-18 21:21:17 UTC (rev 230781)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h 2018-04-18 21:21:50 UTC (rev 230782)
@@ -100,8 +100,12 @@
bool dismiss();
#if PLATFORM(MAC)
void syncPress();
+ void asyncIncrement();
+ void asyncDecrement();
#else
void syncPress() { press(); }
+ void asyncIncrement() { }
+ void asyncDecrement() { };
#endif
// Attributes - platform-independent implementations
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl (230781 => 230782)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl 2018-04-18 21:21:17 UTC (rev 230781)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl 2018-04-18 21:21:50 UTC (rev 230782)
@@ -115,6 +115,8 @@
// Actions.
void increment();
void decrement();
+ void asyncIncrement();
+ void asyncDecrement();
void press();
void syncPress();
void showMenu();
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm (230781 => 230782)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm 2018-04-18 21:21:17 UTC (rev 230781)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm 2018-04-18 21:21:50 UTC (rev 230782)
@@ -1407,7 +1407,7 @@
void AccessibilityUIElement::increment()
{
BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilityPerformAction:NSAccessibilityIncrementAction];
+ [m_element accessibilityPerformAction:@"AXSyncIncrementAction"];
END_AX_OBJC_EXCEPTIONS
}
@@ -1414,6 +1414,20 @@
void AccessibilityUIElement::decrement()
{
BEGIN_AX_OBJC_EXCEPTIONS
+ [m_element accessibilityPerformAction:@"AXSyncDecrementAction"];
+ END_AX_OBJC_EXCEPTIONS
+}
+
+void AccessibilityUIElement::asyncIncrement()
+{
+ BEGIN_AX_OBJC_EXCEPTIONS
+ [m_element accessibilityPerformAction:NSAccessibilityIncrementAction];
+ END_AX_OBJC_EXCEPTIONS
+}
+
+void AccessibilityUIElement::asyncDecrement()
+{
+ BEGIN_AX_OBJC_EXCEPTIONS
[m_element accessibilityPerformAction:NSAccessibilityDecrementAction];
END_AX_OBJC_EXCEPTIONS
}