Title: [223400] releases/WebKitGTK/webkit-2.18
Revision
223400
Author
[email protected]
Date
2017-10-16 06:14:11 -0700 (Mon, 16 Oct 2017)

Log Message

Merge r222433 - [ATK] Object attributes are missing for ARIA live region roles
https://bugs.webkit.org/show_bug.cgi?id=171174

Reviewed by Chris Fleizach.

Source/WebCore:

Expose the values of aria-live, aria-atomic, and aria-relevant via AtkObject
attributes on live region elements and their descendants. In order to accomplish
exposure on descendants, add AccessibilityObject::ariaLiveRegionAncestor(). Add an
optional argument, excludeIfOff, to AccessibilityObject::isInsideARIALiveRegion()
and AccessibilityObject::supportsARIALiveRegion(). This is needed because we need
to expose live region properties via ATK even in the case where the live region
is disabled/off, but supportsARIALiveRegion() deliberately checks if the live
region is enabled.

Tests: accessibility/aria-liveregion-marquee-default.html
       accessibility/aria-liveregions-attributes.html

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::isInsideARIALiveRegion const):
(WebCore::AccessibilityObject::ariaLiveRegionAncestor const):
(WebCore::AccessibilityObject::supportsARIALiveRegion const):
* accessibility/AccessibilityObject.h:
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetAttributes):

Tools:

Add support for testing property values for AXARIALive, AXARIAAtomic, and
AXARIARelevant. Also add handling for testing whether AXElementBusy is
"supported" (in ATK, busy is a state and is supported on all elements
regardless of whether the state is present or absent from the state set).

* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::boolAttributeValue):
(WTR::AccessibilityUIElement::isAttributeSupported):

LayoutTests:

Move two macOS tests to the shared layout test set.

* accessibility/aria-liveregion-marquee-default-expected.txt: Renamed from LayoutTests/accessibility/mac/aria-liveregion-marquee-default-expected.txt.
* accessibility/aria-liveregion-marquee-default.html: Renamed from LayoutTests/accessibility/mac/aria-liveregion-marquee-default.html.
* accessibility/aria-liveregions-attributes-expected.txt: Renamed from LayoutTests/accessibility/mac/aria-liveregions-attributes-expected.txt.
* accessibility/aria-liveregions-attributes.html: Renamed from LayoutTests/accessibility/mac/aria-liveregions-attributes.html.
* platform/win/TestExpectations: Add the above tests to the list of known failures.

Modified Paths

Added Paths

Removed Paths

Diff

Modified: releases/WebKitGTK/webkit-2.18/LayoutTests/ChangeLog (223399 => 223400)


--- releases/WebKitGTK/webkit-2.18/LayoutTests/ChangeLog	2017-10-16 13:10:27 UTC (rev 223399)
+++ releases/WebKitGTK/webkit-2.18/LayoutTests/ChangeLog	2017-10-16 13:14:11 UTC (rev 223400)
@@ -1,3 +1,18 @@
+2017-09-24  Joanmarie Diggs  <[email protected]>
+
+        [ATK] Object attributes are missing for ARIA live region roles
+        https://bugs.webkit.org/show_bug.cgi?id=171174
+
+        Reviewed by Chris Fleizach.
+
+        Move two macOS tests to the shared layout test set.
+
+        * accessibility/aria-liveregion-marquee-default-expected.txt: Renamed from LayoutTests/accessibility/mac/aria-liveregion-marquee-default-expected.txt.
+        * accessibility/aria-liveregion-marquee-default.html: Renamed from LayoutTests/accessibility/mac/aria-liveregion-marquee-default.html.
+        * accessibility/aria-liveregions-attributes-expected.txt: Renamed from LayoutTests/accessibility/mac/aria-liveregions-attributes-expected.txt.
+        * accessibility/aria-liveregions-attributes.html: Renamed from LayoutTests/accessibility/mac/aria-liveregions-attributes.html.
+        * platform/win/TestExpectations: Add the above tests to the list of known failures.
+
 2017-09-22  Nael Ouedraogo  <[email protected]>
 
         [GTK] HTMLMediaElement resize event not fired when video size changes

Copied: releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/aria-liveregion-marquee-default-expected.txt (from rev 223399, releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregion-marquee-default-expected.txt) (0 => 223400)


--- releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/aria-liveregion-marquee-default-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/aria-liveregion-marquee-default-expected.txt	2017-10-16 13:14:11 UTC (rev 223400)
@@ -0,0 +1,13 @@
+marquee1
+marquee2
+This tests that the marquee role has the correct default aria-live status (off).
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'off'
+PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'assertive'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Copied: releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/aria-liveregion-marquee-default.html (from rev 223399, releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregion-marquee-default.html) (0 => 223400)


--- releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/aria-liveregion-marquee-default.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/aria-liveregion-marquee-default.html	2017-10-16 13:14:11 UTC (rev 223400)
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body id="body">
+
+<div tabindex="0" id="marquee1" role="marquee">marquee1</div>
+<div tabindex="0" id="marquee2" role="marquee" aria-live="assertive">marquee2</div>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+    description("This tests that the marquee role has the correct default aria-live status (off).");
+
+    if (window.accessibilityController) {
+  
+          // Make sure that regular elements are not exposing ARIA live attributes.
+          document.getElementById("marquee1").focus();
+          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'off'");
+
+          document.getElementById("marquee2").focus();
+          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'assertive'");
+    }
+
+</script>
+
+<script src=""
+</body>
+</html>

Copied: releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/aria-liveregions-attributes-expected.txt (from rev 223399, releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregions-attributes-expected.txt) (0 => 223400)


--- releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/aria-liveregions-attributes-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/aria-liveregions-attributes-expected.txt	2017-10-16 13:14:11 UTC (rev 223400)
@@ -0,0 +1,48 @@
+// This tests that elements that are not live regions do not have the live region attrs.
+no live region
+
+// These test that they have the correct default values for aria-live.
+test
+test
+test
+test
+test
+// These test that elements with live regions on have the right attributes
+h3
+
+This tests that the attributes used for ARIA live regions behave correctly.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS accessibilityController.focusedElement.isAttributeSupported('AXElementBusy') is true
+PASS accessibilityController.focusedElement.isAttributeSupported('AXARIARelevant') is false
+PASS accessibilityController.focusedElement.isAttributeSupported('AXARIAAtomic') is false
+PASS accessibilityController.focusedElement.isAttributeSupported('AXARIALive') is false
+PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'assertive'
+PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'assertive'
+PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'polite'
+PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'polite'
+PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'off'
+PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'polite'
+PASS accessibilityController.focusedElement.stringAttributeValue('AXARIARelevant') is 'additions'
+PASS accessibilityController.focusedElement.boolAttributeValue('AXElementBusy') is true
+PASS accessibilityController.focusedElement.isAttributeSupported('AXARIALive') is false
+PASS accessibilityController.focusedElement.isAttributeSupported('AXARIARelevant') is false
+PASS accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic') is true
+PASS accessibilityController.focusedElement.boolAttributeValue('AXElementBusy') is false
+PASS accessibilityController.focusedElement.stringAttributeValue('AXARIARelevant') is 'additions text'
+PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'assertive'
+PASS accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic') is true
+PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'polite'
+PASS accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic') is true
+PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'polite'
+PASS accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic') is false
+PASS accessibilityController.focusedElement.isAttributeSupported('AXARIALive') is false
+PASS accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic') is false
+PASS accessibilityController.focusedElement.isAttributeSupported('AXARIALive') is false
+PASS accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic') is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Copied: releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/aria-liveregions-attributes.html (from rev 223399, releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregions-attributes.html) (0 => 223400)


--- releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/aria-liveregions-attributes.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/aria-liveregions-attributes.html	2017-10-16 13:14:11 UTC (rev 223400)
@@ -0,0 +1,107 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body id="body">
+
+// This tests that elements that are not live regions do not have the live region attrs.
+<h3 tabindex=0 id="h3">no live region</h3>
+
+// These test that they have the correct default values for aria-live.
+
+<div tabindex=0 id="alert" role="alert">test</div>
+<div tabindex=0 id="alertdialog" role="alertdialog">test</div>
+<div tabindex=0 id="log" role="log">test</div>
+<div tabindex=0 id="status" role="status">test</div>
+<div tabindex=0 id="timer" role="timer">test</div>
+
+// These test that elements with live regions on have the right attributes
+<div tabindex=0 id="liveregion" role="group" aria-busy="true" aria-live="polite" aria-relevant="additions">
+<h3 tabindex=0 aria-atomic="true" id="h3live">h3</h3>
+</div>
+
+<div tabindex=0 id="liveregion2" role="group" aria-live="polite"></div>
+
+<!-- Default live region values per role. -->
+<div tabindex=0 id="liveregion_alert" role="alert"><!-- atomic=true, live=assertive --></div>
+<div tabindex=0 id="liveregion_status" role="status"><!-- atomic=true, live=polite --></div>
+<div tabindex=0 id="liveregion_log" role="log"><!-- atomic=false, live=polite --></div>
+<div tabindex=0 id="liveregion_timer" role="timer"><!-- atomic=false, live=off --></div>
+<div tabindex=0 id="liveregion_marquee" role="marquee"><!-- atomic=false, live=off --></div>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+    description("This tests that the attributes used for ARIA live regions behave correctly.");
+
+    if (window.accessibilityController) {
+  
+          // Make sure that regular elements are not exposing ARIA live attributes.
+          document.getElementById("h3").focus();
+          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXElementBusy')", "true");
+          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXARIARelevant')", "false");
+          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXARIAAtomic')", "false");
+          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXARIALive')", "false");
+
+          // Make sure that specific aria roles get the right aria live values.
+          document.getElementById("alert").focus();
+          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'assertive'");
+
+          document.getElementById("alertdialog").focus();
+          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'assertive'");
+
+          document.getElementById("log").focus();
+          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'polite'");
+
+          document.getElementById("status").focus();
+          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'polite'");
+
+          document.getElementById("timer").focus();
+          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'off'");
+
+          // Test the other attributes for a live region
+          document.getElementById("liveregion").focus();
+          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'polite'");
+          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIARelevant')", "'additions'");
+          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXElementBusy')", "true");
+
+          document.getElementById("h3live").focus();
+          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXARIALive')", "false");
+          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXARIARelevant')", "false");
+          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic')", "true");
+          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXElementBusy')", "false");
+
+          // when an element has no specific aria-relevant, it should be additions text by default.
+          document.getElementById("liveregion2").focus();
+          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIARelevant')", "'additions text'");
+ 
+          document.getElementById("liveregion_alert").focus();
+          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'assertive'");
+          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic')", "true");
+
+          document.getElementById("liveregion_status").focus();
+          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'polite'");
+          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic')", "true");
+
+          document.getElementById("liveregion_log").focus();
+          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'polite'");
+          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic')", "false");
+
+          document.getElementById("liveregion_timer").focus();
+          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXARIALive')", "false");
+          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic')", "false");
+
+          document.getElementById("liveregion_marquee").focus();
+          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXARIALive')", "false");
+          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic')", "false");
+
+    }
+
+</script>
+
+<script src=""
+</body>
+</html>

Deleted: releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregion-marquee-default-expected.txt (223399 => 223400)


--- releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregion-marquee-default-expected.txt	2017-10-16 13:10:27 UTC (rev 223399)
+++ releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregion-marquee-default-expected.txt	2017-10-16 13:14:11 UTC (rev 223400)
@@ -1,13 +0,0 @@
-marquee1
-marquee2
-This tests that the marquee role has the correct default aria-live status (off).
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'off'
-PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'assertive'
-PASS successfullyParsed is true
-
-TEST COMPLETE
-

Deleted: releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregion-marquee-default.html (223399 => 223400)


--- releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregion-marquee-default.html	2017-10-16 13:10:27 UTC (rev 223399)
+++ releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregion-marquee-default.html	2017-10-16 13:14:11 UTC (rev 223400)
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-<head>
-<script src=""
-</head>
-<body id="body">
-
-<div tabindex="0" id="marquee1" role="marquee">marquee1</div>
-<div tabindex="0" id="marquee2" role="marquee" aria-live="assertive">marquee2</div>
-
-<p id="description"></p>
-<div id="console"></div>
-
-<script>
-
-    description("This tests that the marquee role has the correct default aria-live status (off).");
-
-    if (window.accessibilityController) {
-  
-          // Make sure that regular elements are not exposing ARIA live attributes.
-          document.getElementById("marquee1").focus();
-          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'off'");
-
-          document.getElementById("marquee2").focus();
-          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'assertive'");
-    }
-
-</script>
-
-<script src=""
-</body>
-</html>

Deleted: releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregions-attributes-expected.txt (223399 => 223400)


--- releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregions-attributes-expected.txt	2017-10-16 13:10:27 UTC (rev 223399)
+++ releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregions-attributes-expected.txt	2017-10-16 13:14:11 UTC (rev 223400)
@@ -1,48 +0,0 @@
-// This tests that elements that are not live regions do not have the live region attrs.
-no live region
-
-// These test that they have the correct default values for aria-live.
-test
-test
-test
-test
-test
-// These test that elements with live regions on have the right attributes
-h3
-
-This tests that the attributes used for ARIA live regions behave correctly.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS accessibilityController.focusedElement.isAttributeSupported('AXElementBusy') is true
-PASS accessibilityController.focusedElement.isAttributeSupported('AXARIARelevant') is false
-PASS accessibilityController.focusedElement.isAttributeSupported('AXARIAAtomic') is false
-PASS accessibilityController.focusedElement.isAttributeSupported('AXARIALive') is false
-PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'assertive'
-PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'assertive'
-PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'polite'
-PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'polite'
-PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'off'
-PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'polite'
-PASS accessibilityController.focusedElement.stringAttributeValue('AXARIARelevant') is 'additions'
-PASS accessibilityController.focusedElement.boolAttributeValue('AXElementBusy') is true
-PASS accessibilityController.focusedElement.isAttributeSupported('AXARIALive') is false
-PASS accessibilityController.focusedElement.isAttributeSupported('AXARIARelevant') is false
-PASS accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic') is true
-PASS accessibilityController.focusedElement.boolAttributeValue('AXElementBusy') is false
-PASS accessibilityController.focusedElement.stringAttributeValue('AXARIARelevant') is 'additions text'
-PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'assertive'
-PASS accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic') is true
-PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'polite'
-PASS accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic') is true
-PASS accessibilityController.focusedElement.stringAttributeValue('AXARIALive') is 'polite'
-PASS accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic') is false
-PASS accessibilityController.focusedElement.isAttributeSupported('AXARIALive') is false
-PASS accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic') is false
-PASS accessibilityController.focusedElement.isAttributeSupported('AXARIALive') is false
-PASS accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic') is false
-PASS successfullyParsed is true
-
-TEST COMPLETE
-

Deleted: releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregions-attributes.html (223399 => 223400)


--- releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregions-attributes.html	2017-10-16 13:10:27 UTC (rev 223399)
+++ releases/WebKitGTK/webkit-2.18/LayoutTests/accessibility/mac/aria-liveregions-attributes.html	2017-10-16 13:14:11 UTC (rev 223400)
@@ -1,107 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-<head>
-<script src=""
-</head>
-<body id="body">
-
-// This tests that elements that are not live regions do not have the live region attrs.
-<h3 tabindex=0 id="h3">no live region</h3>
-
-// These test that they have the correct default values for aria-live.
-
-<div tabindex=0 id="alert" role="alert">test</div>
-<div tabindex=0 id="alertdialog" role="alertdialog">test</div>
-<div tabindex=0 id="log" role="log">test</div>
-<div tabindex=0 id="status" role="status">test</div>
-<div tabindex=0 id="timer" role="timer">test</div>
-
-// These test that elements with live regions on have the right attributes
-<div tabindex=0 id="liveregion" role="group" aria-busy="true" aria-live="polite" aria-relevant="additions">
-<h3 tabindex=0 aria-atomic="true" id="h3live">h3</h3>
-</div>
-
-<div tabindex=0 id="liveregion2" role="group" aria-live="polite"></div>
-
-<!-- Default live region values per role. -->
-<div tabindex=0 id="liveregion_alert" role="alert"><!-- atomic=true, live=assertive --></div>
-<div tabindex=0 id="liveregion_status" role="status"><!-- atomic=true, live=polite --></div>
-<div tabindex=0 id="liveregion_log" role="log"><!-- atomic=false, live=polite --></div>
-<div tabindex=0 id="liveregion_timer" role="timer"><!-- atomic=false, live=off --></div>
-<div tabindex=0 id="liveregion_marquee" role="marquee"><!-- atomic=false, live=off --></div>
-
-<p id="description"></p>
-<div id="console"></div>
-
-<script>
-
-    description("This tests that the attributes used for ARIA live regions behave correctly.");
-
-    if (window.accessibilityController) {
-  
-          // Make sure that regular elements are not exposing ARIA live attributes.
-          document.getElementById("h3").focus();
-          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXElementBusy')", "true");
-          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXARIARelevant')", "false");
-          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXARIAAtomic')", "false");
-          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXARIALive')", "false");
-
-          // Make sure that specific aria roles get the right aria live values.
-          document.getElementById("alert").focus();
-          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'assertive'");
-
-          document.getElementById("alertdialog").focus();
-          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'assertive'");
-
-          document.getElementById("log").focus();
-          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'polite'");
-
-          document.getElementById("status").focus();
-          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'polite'");
-
-          document.getElementById("timer").focus();
-          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'off'");
-
-          // Test the other attributes for a live region
-          document.getElementById("liveregion").focus();
-          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'polite'");
-          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIARelevant')", "'additions'");
-          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXElementBusy')", "true");
-
-          document.getElementById("h3live").focus();
-          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXARIALive')", "false");
-          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXARIARelevant')", "false");
-          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic')", "true");
-          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXElementBusy')", "false");
-
-          // when an element has no specific aria-relevant, it should be additions text by default.
-          document.getElementById("liveregion2").focus();
-          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIARelevant')", "'additions text'");
- 
-          document.getElementById("liveregion_alert").focus();
-          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'assertive'");
-          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic')", "true");
-
-          document.getElementById("liveregion_status").focus();
-          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'polite'");
-          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic')", "true");
-
-          document.getElementById("liveregion_log").focus();
-          shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXARIALive')", "'polite'");
-          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic')", "false");
-
-          document.getElementById("liveregion_timer").focus();
-          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXARIALive')", "false");
-          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic')", "false");
-
-          document.getElementById("liveregion_marquee").focus();
-          shouldBe("accessibilityController.focusedElement.isAttributeSupported('AXARIALive')", "false");
-          shouldBe("accessibilityController.focusedElement.boolAttributeValue('AXARIAAtomic')", "false");
-
-    }
-
-</script>
-
-<script src=""
-</body>
-</html>

Modified: releases/WebKitGTK/webkit-2.18/LayoutTests/platform/win/TestExpectations (223399 => 223400)


--- releases/WebKitGTK/webkit-2.18/LayoutTests/platform/win/TestExpectations	2017-10-16 13:10:27 UTC (rev 223399)
+++ releases/WebKitGTK/webkit-2.18/LayoutTests/platform/win/TestExpectations	2017-10-16 13:14:11 UTC (rev 223400)
@@ -45,6 +45,8 @@
 #////////////////////////////////////////////////////////////////////////////////////////
 
 accessibility/media-emits-object-replacement.html [ Failure ]
+accessibility/aria-liveregions-attributes.html [ Failure ]
+accessibility/aria-liveregion-marquee-default.html [ Failure ]
 
 
 # <rdar://problem/5075790> Layout tests that depend on certain fonts don't match Mac results:

Modified: releases/WebKitGTK/webkit-2.18/Source/WebCore/ChangeLog (223399 => 223400)


--- releases/WebKitGTK/webkit-2.18/Source/WebCore/ChangeLog	2017-10-16 13:10:27 UTC (rev 223399)
+++ releases/WebKitGTK/webkit-2.18/Source/WebCore/ChangeLog	2017-10-16 13:14:11 UTC (rev 223400)
@@ -1,3 +1,30 @@
+2017-09-24  Joanmarie Diggs  <[email protected]>
+
+        [ATK] Object attributes are missing for ARIA live region roles
+        https://bugs.webkit.org/show_bug.cgi?id=171174
+
+        Reviewed by Chris Fleizach.
+
+        Expose the values of aria-live, aria-atomic, and aria-relevant via AtkObject
+        attributes on live region elements and their descendants. In order to accomplish
+        exposure on descendants, add AccessibilityObject::ariaLiveRegionAncestor(). Add an
+        optional argument, excludeIfOff, to AccessibilityObject::isInsideARIALiveRegion()
+        and AccessibilityObject::supportsARIALiveRegion(). This is needed because we need
+        to expose live region properties via ATK even in the case where the live region
+        is disabled/off, but supportsARIALiveRegion() deliberately checks if the live
+        region is enabled.
+
+        Tests: accessibility/aria-liveregion-marquee-default.html
+               accessibility/aria-liveregions-attributes.html
+
+        * accessibility/AccessibilityObject.cpp:
+        (WebCore::AccessibilityObject::isInsideARIALiveRegion const):
+        (WebCore::AccessibilityObject::ariaLiveRegionAncestor const):
+        (WebCore::AccessibilityObject::supportsARIALiveRegion const):
+        * accessibility/AccessibilityObject.h:
+        * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
+        (webkitAccessibleGetAttributes):
+
 2017-09-26  Said Abou-Hallawa  <[email protected]>
 
         Followup (r222427): SynchronizedFixedQueue should not have a public constructor

Modified: releases/WebKitGTK/webkit-2.18/Source/WebCore/accessibility/AccessibilityObject.cpp (223399 => 223400)


--- releases/WebKitGTK/webkit-2.18/Source/WebCore/accessibility/AccessibilityObject.cpp	2017-10-16 13:10:27 UTC (rev 223399)
+++ releases/WebKitGTK/webkit-2.18/Source/WebCore/accessibility/AccessibilityObject.cpp	2017-10-16 13:14:11 UTC (rev 223400)
@@ -2497,14 +2497,16 @@
     return nullAtom();
 }
     
-bool AccessibilityObject::isInsideARIALiveRegion() const
+bool AccessibilityObject::isInsideARIALiveRegion(bool excludeIfOff) const
 {
-    if (supportsARIALiveRegion())
-        return true;
+    return ariaLiveRegionAncestor(excludeIfOff);
+}
     
-    return AccessibilityObject::matchedParent(*this, false, [] (const AccessibilityObject& object) {
-        return object.supportsARIALiveRegion();
-    }) != nullptr;
+AccessibilityObject* AccessibilityObject::ariaLiveRegionAncestor(bool excludeIfOff) const
+{
+    return const_cast<AccessibilityObject*>(AccessibilityObject::matchedParent(*this, true, [excludeIfOff] (const AccessibilityObject& object) {
+        return object.supportsARIALiveRegion(excludeIfOff);
+    }));
 }
 
 bool AccessibilityObject::supportsARIAAttributes() const
@@ -2535,9 +2537,10 @@
     return equalLettersIgnoringASCIICase(liveRegionStatus, "polite") || equalLettersIgnoringASCIICase(liveRegionStatus, "assertive");
 }
     
-bool AccessibilityObject::supportsARIALiveRegion() const
+bool AccessibilityObject::supportsARIALiveRegion(bool excludeIfOff) const
 {
-    return liveRegionStatusIsEnabled(ariaLiveRegionStatus());
+    const AtomicString& liveRegionStatus = ariaLiveRegionStatus();
+    return excludeIfOff ? liveRegionStatusIsEnabled(liveRegionStatus) : !liveRegionStatus.isEmpty();
 }
 
 AccessibilityObject* AccessibilityObject::elementAccessibilityHitTest(const IntPoint& point) const

Modified: releases/WebKitGTK/webkit-2.18/Source/WebCore/accessibility/AccessibilityObject.h (223399 => 223400)


--- releases/WebKitGTK/webkit-2.18/Source/WebCore/accessibility/AccessibilityObject.h	2017-10-16 13:10:27 UTC (rev 223399)
+++ releases/WebKitGTK/webkit-2.18/Source/WebCore/accessibility/AccessibilityObject.h	2017-10-16 13:14:11 UTC (rev 223400)
@@ -973,8 +973,9 @@
     void ariaTreeItemContent(AccessibilityChildrenVector&);
     
     // ARIA live-region features.
-    bool supportsARIALiveRegion() const;
-    bool isInsideARIALiveRegion() const;
+    bool supportsARIALiveRegion(bool excludeIfOff = true) const;
+    bool isInsideARIALiveRegion(bool excludeIfOff = true) const;
+    AccessibilityObject* ariaLiveRegionAncestor(bool excludeIfOff = true) const;
     virtual const String ariaLiveRegionStatus() const { return String(); }
     virtual const AtomicString& ariaLiveRegionRelevant() const { return nullAtom(); }
     virtual bool ariaLiveRegionAtomic() const { return false; }

Modified: releases/WebKitGTK/webkit-2.18/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp (223399 => 223400)


--- releases/WebKitGTK/webkit-2.18/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp	2017-10-16 13:10:27 UTC (rev 223399)
+++ releases/WebKitGTK/webkit-2.18/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp	2017-10-16 13:14:11 UTC (rev 223400)
@@ -548,6 +548,33 @@
     if (!roleDescription.isEmpty())
         attributeSet = addToAtkAttributeSet(attributeSet, "roledescription", roleDescription.utf8().data());
 
+    // We need to expose the live region attributes even if the live region is currently disabled/off.
+    if (auto liveContainer = coreObject->ariaLiveRegionAncestor(false)) {
+        String liveStatus = liveContainer->ariaLiveRegionStatus();
+        String relevant = liveContainer->ariaLiveRegionRelevant();
+        bool isAtomic = liveContainer->ariaLiveRegionAtomic();
+        String liveRole = roleString.isEmpty() ? computedRoleString : roleString;
+
+        // According to the Core AAM, we need to expose the above properties with "container-" prefixed
+        // object attributes regardless of whether the container is this object, or an ancestor of it.
+        attributeSet = addToAtkAttributeSet(attributeSet, "container-live", liveStatus.utf8().data());
+        attributeSet = addToAtkAttributeSet(attributeSet, "container-relevant", relevant.utf8().data());
+        if (isAtomic)
+            attributeSet = addToAtkAttributeSet(attributeSet, "container-atomic", "true");
+        if (!liveRole.isEmpty())
+            attributeSet = addToAtkAttributeSet(attributeSet, "container-live-role", liveRole.utf8().data());
+
+        // According to the Core AAM, if this object is the live region (rather than its descendant),
+        // we must expose the above properties on the object without a "container-" prefix.
+        if (liveContainer == coreObject) {
+            attributeSet = addToAtkAttributeSet(attributeSet, "live", liveStatus.utf8().data());
+            attributeSet = addToAtkAttributeSet(attributeSet, "relevant", relevant.utf8().data());
+            if (isAtomic)
+                attributeSet = addToAtkAttributeSet(attributeSet, "atomic", "true");
+        } else if (!isAtomic && coreObject->ariaLiveRegionAtomic())
+            attributeSet = addToAtkAttributeSet(attributeSet, "atomic", "true");
+    }
+
     return attributeSet;
 }
 

Modified: releases/WebKitGTK/webkit-2.18/Tools/ChangeLog (223399 => 223400)


--- releases/WebKitGTK/webkit-2.18/Tools/ChangeLog	2017-10-16 13:10:27 UTC (rev 223399)
+++ releases/WebKitGTK/webkit-2.18/Tools/ChangeLog	2017-10-16 13:14:11 UTC (rev 223400)
@@ -1,3 +1,19 @@
+2017-09-24  Joanmarie Diggs  <[email protected]>
+
+        [ATK] Object attributes are missing for ARIA live region roles
+        https://bugs.webkit.org/show_bug.cgi?id=171174
+
+        Reviewed by Chris Fleizach.
+
+        Add support for testing property values for AXARIALive, AXARIAAtomic, and
+        AXARIARelevant. Also add handling for testing whether AXElementBusy is
+        "supported" (in ATK, busy is a state and is supported on all elements
+        regardless of whether the state is present or absent from the state set).
+
+        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
+        (WTR::AccessibilityUIElement::boolAttributeValue):
+        (WTR::AccessibilityUIElement::isAttributeSupported):
+
 2017-09-26  Said Abou-Hallawa  <[email protected]>
 
         Followup (r222427): SynchronizedFixedQueue should not have a public constructor

Modified: releases/WebKitGTK/webkit-2.18/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp (223399 => 223400)


--- releases/WebKitGTK/webkit-2.18/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp	2017-10-16 13:10:27 UTC (rev 223399)
+++ releases/WebKitGTK/webkit-2.18/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp	2017-10-16 13:14:11 UTC (rev 223400)
@@ -82,6 +82,10 @@
     PlaceholderNameIndex,
     SortNameIndex,
     CurrentNameIndex,
+    AriaLiveNameIndex,
+    AriaAtomicNameIndex,
+    AriaRelevantNameIndex,
+    BusyNameIndex,
 
     // Attribute values.
     SortAscendingValueIndex,
@@ -106,6 +110,10 @@
     { "AXPlaceholderValue", "placeholder-text" } ,
     { "AXSortDirection", "sort" },
     { "AXARIACurrent", "current" },
+    { "AXARIALive", "live" },
+    { "AXARIAAtomic", "atomic" },
+    { "AXARIARelevant", "relevant" },
+    { "AXElementBusy", "busy" },
 
     // Attribute values.
     { "AXAscendingSortDirection", "ascending" },
@@ -1216,6 +1224,11 @@
     if (attributeString == "AXInterfaceTableCell")
         return ATK_IS_TABLE_CELL(m_element.get());
 
+    if (attributeString == "AXARIAAtomic") {
+        String atkAttribute = coreAttributeToAtkAttribute(attribute);
+        return getAttributeSetValueForId(ATK_OBJECT(m_element.get()), ObjectAttributeType, atkAttribute) == "true";
+    }
+
     return false;
 }
 
@@ -1283,11 +1296,19 @@
     if (atkAttributeName.isEmpty())
         return false;
 
+    // In ATK, "busy" is a state and is supported on all AtkObject instances.
+    if (atkAttributeName == "busy")
+        return true;
+
     // For now, an attribute is supported whether it's exposed as a object or a text attribute.
     String attributeValue = getAttributeSetValueForId(ATK_OBJECT(m_element.get()), ObjectAttributeType, atkAttributeName);
     if (attributeValue.isEmpty())
         attributeValue = getAttributeSetValueForId(ATK_OBJECT(m_element.get()), TextAttributeType, atkAttributeName);
 
+    // When the aria-live value is "off", we expose that value via the "live" object attribute.
+    if (atkAttributeName == "live" && attributeValue == "off")
+        return false;
+
     return !attributeValue.isEmpty();
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to