AX: [ATK] Use WebCore Accessibility's AccessibilityText for AtkObject name and description
https://bugs.webkit.org/show_bug.cgi?id=157822

Reviewed by Chris Fleizach.

Source/WebCore:

Remove the old code which was overriding WebCore Accessibility and always use
AccessibilityText.

If the AccessibilityText's textSource is HelpText or SummaryText, it should be exposed
as the AtkObject description. If the textSource is TitleTagText and there is no other
text alternative, the value should also be exposed in this fashion. Note that AtkObject's
description property is equivalent to AXAPI's AXHelp property.

If the AccessibilityText's textSource is anything other than the above, the first
non-empty value should be exposed as the AtkObject name. Depending on the source of
the name content, AtkObject's name property can be the equivalent of AXAPI's AXTitle.
However, most of the time, AtkObject's name property is equivalent to AXAPI's
AXDescription property.

By making these changes, what WebKit exposes for ATK is now extremely similar to what
WebKit exposes on the Mac (modulo the property names) and also with what is defined in
the HTML Accessibility and Accessible Name and Description Computation API mappings specs.

Now that the exposure is correct, the Layout Tests needed to be adjusted accordingly because
asking for the "AXDescription" gives you the AXDescription on the Mac and the AtkObject
description in GNU/Linux. But as indicated above, what ATK calls a "description" is what
the Mac calls "help."

Ultimately our Layout Tests and/or our platform TestRunner API should be modified to deal
with these differences more gracefully. (Bug https://bugs.webkit.org/show_bug.cgi?id=157187
has been opened for that task.) In the meantime, the existing tests have been given platform
checks to ask for the right property on each platform. This was done in such a way as to not
require other (non-ATK) platforms change their current expectations files.

* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetName):
(webkitAccessibleGetDescription):

Tools:

Fix AccessibilityUIElement::helpText() so that it returns an empty string rather than
nullptr upon failure.

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

LayoutTests:

Now that the exposure is correct, the Layout Tests needed to be adjusted accordingly because asking
for the "AXDescription" gives you the AXDescription on the Mac and the AtkObject description in
GNU/Linux. But what the Mac calls a "description" is what ATK calls a "name." What ATK calls a
"description" is what the Mac calls "help."

Ultimately our Layout Tests and/or our platform TestRunner API should be modified to deal with
with these differences more gracefully. (Bug https://bugs.webkit.org/show_bug.cgi?id=157187 has
been opened for that task.) In the meantime, the existing tests have been given platform checks
to ask for the right property on each platform. This was done in such a way as to not require
other (non-ATK) platforms change their current expectations files.

In addition to the above, three previously-failing tests were corrected and are now passing.

* accessibility/alt-tag-on-image-with-nonimage-role.html:
* accessibility/aria-help.html:
* accessibility/aria-label.html:
* accessibility/aria-labeled-with-hidden-node.html:
* accessibility/aria-labelledby-on-input.html:
* accessibility/aria-labelledby-overrides-aria-labeledby.html:
* accessibility/aria-labelledby-overrides-label.html:
* accessibility/aria-labelledby-stay-within.html:
* accessibility/aria-labelledby-with-descendants.html:
* accessibility/aria-namefrom-author.html:
* accessibility/aria-option-role.html:
* accessibility/canvas-description-and-role.html:
* accessibility/empty-image-with-title.html:
* accessibility/fieldset-element.html:
* accessibility/focusable-div.html:
* accessibility/gtk/no-notification-for-unrendered-iframe-children-expected.txt:
* accessibility/gtk/no-notification-for-unrendered-iframe-children.html:
* accessibility/gtk/title-and-alt-expected.txt:
* accessibility/gtk/title-and-alt.html:
* accessibility/help-text.html:
* accessibility/img-alt-tag-only-whitespace-expected.txt:
* accessibility/img-alt-tag-only-whitespace.html:
* accessibility/img-aria-button-alt-tag.html:
* accessibility/img-fallsback-to-title.html:
* accessibility/input-image-alt.html:
* accessibility/loading-iframe-sends-notification.html:
* accessibility/media-element.html:
* accessibility/radio-button-title-label.html:
* accessibility/self-referencing-aria-labelledby.html:
* accessibility/svg-bounds.html:
* platform/gtk/TestExpectations:
* platform/gtk/accessibility/alt-tag-on-image-with-nonimage-role-expected.txt: Added.
* platform/gtk/accessibility/aria-help-expected.txt:
* platform/gtk/accessibility/aria-hidden-negates-no-visibility-expected.txt: Added.
* platform/gtk/accessibility/aria-labeled-with-hidden-node-expected.txt: Added.
* platform/gtk/accessibility/aria-labelledby-on-input-expected.txt: Added.
* platform/gtk/accessibility/aria-labelledby-overrides-aria-label-expected.txt: Added.
* platform/gtk/accessibility/aria-labelledby-overrides-aria-labeledby-expected.txt: Added.
* platform/gtk/accessibility/aria-labelledby-overrides-label-expected.txt: Added.
* platform/gtk/accessibility/aria-labelledby-with-descendants-expected.txt: Added.
* platform/gtk/accessibility/aria-namefrom-author-expected.txt: Added.
* platform/gtk/accessibility/aria-option-role-expected.txt: Added.
* platform/gtk/accessibility/aria-switch-text-expected.txt:
* platform/gtk/accessibility/canvas-description-and-role-expected.txt: Added.
* platform/gtk/accessibility/empty-image-with-title-expected.txt: Added.
* platform/gtk/accessibility/fieldset-element-expected.txt: Added.
* platform/gtk/accessibility/focusable-div-expected.txt: Added.
* platform/gtk/accessibility/help-text-expected.txt: Added.
* platform/gtk/accessibility/image-link-expected.txt:
* platform/gtk/accessibility/image-map1-expected.txt:
* platform/gtk/accessibility/image-map2-expected.txt:
* platform/gtk/accessibility/image-with-alt-and-map-expected.txt:
* platform/gtk/accessibility/img-alt-tag-only-whitespace-expected.txt: Added.
* platform/gtk/accessibility/img-aria-button-alt-tag-expected.txt: Added.
* platform/gtk/accessibility/img-fallsback-to-title-expected.txt:
* platform/gtk/accessibility/input-image-alt-expected.txt: Added.
* platform/gtk/accessibility/media-element-expected.txt:
* platform/gtk/accessibility/radio-button-title-label-expected.txt:
* platform/gtk/accessibility/self-referencing-aria-labelledby-expected.txt: Added.
* platform/gtk/accessibility/svg-bounds-expected.txt: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@201072 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 24e280f..6613d0b 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,84 @@
+2016-05-18  Joanmarie Diggs  <jdiggs@igalia.com>
+
+        AX: [ATK] Use WebCore Accessibility's AccessibilityText for AtkObject name and description
+        https://bugs.webkit.org/show_bug.cgi?id=157822
+
+        Reviewed by Chris Fleizach.
+
+        Now that the exposure is correct, the Layout Tests needed to be adjusted accordingly because asking
+        for the "AXDescription" gives you the AXDescription on the Mac and the AtkObject description in
+        GNU/Linux. But what the Mac calls a "description" is what ATK calls a "name." What ATK calls a
+        "description" is what the Mac calls "help."
+
+        Ultimately our Layout Tests and/or our platform TestRunner API should be modified to deal with
+        with these differences more gracefully. (Bug https://bugs.webkit.org/show_bug.cgi?id=157187 has
+        been opened for that task.) In the meantime, the existing tests have been given platform checks
+        to ask for the right property on each platform. This was done in such a way as to not require
+        other (non-ATK) platforms change their current expectations files.
+
+        In addition to the above, three previously-failing tests were corrected and are now passing.
+
+        * accessibility/alt-tag-on-image-with-nonimage-role.html:
+        * accessibility/aria-help.html:
+        * accessibility/aria-label.html:
+        * accessibility/aria-labeled-with-hidden-node.html:
+        * accessibility/aria-labelledby-on-input.html:
+        * accessibility/aria-labelledby-overrides-aria-labeledby.html:
+        * accessibility/aria-labelledby-overrides-label.html:
+        * accessibility/aria-labelledby-stay-within.html:
+        * accessibility/aria-labelledby-with-descendants.html:
+        * accessibility/aria-namefrom-author.html:
+        * accessibility/aria-option-role.html:
+        * accessibility/canvas-description-and-role.html:
+        * accessibility/empty-image-with-title.html:
+        * accessibility/fieldset-element.html:
+        * accessibility/focusable-div.html:
+        * accessibility/gtk/no-notification-for-unrendered-iframe-children-expected.txt:
+        * accessibility/gtk/no-notification-for-unrendered-iframe-children.html:
+        * accessibility/gtk/title-and-alt-expected.txt:
+        * accessibility/gtk/title-and-alt.html:
+        * accessibility/help-text.html:
+        * accessibility/img-alt-tag-only-whitespace-expected.txt:
+        * accessibility/img-alt-tag-only-whitespace.html:
+        * accessibility/img-aria-button-alt-tag.html:
+        * accessibility/img-fallsback-to-title.html:
+        * accessibility/input-image-alt.html:
+        * accessibility/loading-iframe-sends-notification.html:
+        * accessibility/media-element.html:
+        * accessibility/radio-button-title-label.html:
+        * accessibility/self-referencing-aria-labelledby.html:
+        * accessibility/svg-bounds.html:
+        * platform/gtk/TestExpectations:
+        * platform/gtk/accessibility/alt-tag-on-image-with-nonimage-role-expected.txt: Added.
+        * platform/gtk/accessibility/aria-help-expected.txt:
+        * platform/gtk/accessibility/aria-hidden-negates-no-visibility-expected.txt: Added.
+        * platform/gtk/accessibility/aria-labeled-with-hidden-node-expected.txt: Added.
+        * platform/gtk/accessibility/aria-labelledby-on-input-expected.txt: Added.
+        * platform/gtk/accessibility/aria-labelledby-overrides-aria-label-expected.txt: Added.
+        * platform/gtk/accessibility/aria-labelledby-overrides-aria-labeledby-expected.txt: Added.
+        * platform/gtk/accessibility/aria-labelledby-overrides-label-expected.txt: Added.
+        * platform/gtk/accessibility/aria-labelledby-with-descendants-expected.txt: Added.
+        * platform/gtk/accessibility/aria-namefrom-author-expected.txt: Added.
+        * platform/gtk/accessibility/aria-option-role-expected.txt: Added.
+        * platform/gtk/accessibility/aria-switch-text-expected.txt:
+        * platform/gtk/accessibility/canvas-description-and-role-expected.txt: Added.
+        * platform/gtk/accessibility/empty-image-with-title-expected.txt: Added.
+        * platform/gtk/accessibility/fieldset-element-expected.txt: Added.
+        * platform/gtk/accessibility/focusable-div-expected.txt: Added.
+        * platform/gtk/accessibility/help-text-expected.txt: Added.
+        * platform/gtk/accessibility/image-link-expected.txt:
+        * platform/gtk/accessibility/image-map1-expected.txt:
+        * platform/gtk/accessibility/image-map2-expected.txt:
+        * platform/gtk/accessibility/image-with-alt-and-map-expected.txt:
+        * platform/gtk/accessibility/img-alt-tag-only-whitespace-expected.txt: Added.
+        * platform/gtk/accessibility/img-aria-button-alt-tag-expected.txt: Added.
+        * platform/gtk/accessibility/img-fallsback-to-title-expected.txt:
+        * platform/gtk/accessibility/input-image-alt-expected.txt: Added.
+        * platform/gtk/accessibility/media-element-expected.txt:
+        * platform/gtk/accessibility/radio-button-title-label-expected.txt:
+        * platform/gtk/accessibility/self-referencing-aria-labelledby-expected.txt: Added.
+        * platform/gtk/accessibility/svg-bounds-expected.txt: Added.
+
 2016-05-17  Saam barati  <sbarati@apple.com>
 
         LayoutTest inspector/debugger/tail-recursion.html failing on WK2 debug
diff --git a/LayoutTests/accessibility/alt-tag-on-image-with-nonimage-role.html b/LayoutTests/accessibility/alt-tag-on-image-with-nonimage-role.html
index 3f06188..1ae44c3 100644
--- a/LayoutTests/accessibility/alt-tag-on-image-with-nonimage-role.html
+++ b/LayoutTests/accessibility/alt-tag-on-image-with-nonimage-role.html
@@ -24,10 +24,15 @@
         shouldBe("text.stringValue", "'AXValue: TEST1'");
 
         var group = accessibilityController.accessibleElementById("group");
-        shouldBe("group.description", "'AXDescription: TEST2'");
-
         var button = accessibilityController.accessibleElementById("button");
-        shouldBe("button.description", "'AXDescription: TEST3'");
+
+        if (accessibilityController.platformName == "atk") {
+            shouldBe("group.title", "'AXTitle: TEST2'");
+            shouldBe("button.title", "'AXTitle: TEST3'");
+        } else {
+            shouldBe("group.description", "'AXDescription: TEST2'");
+            shouldBe("button.description", "'AXDescription: TEST3'");
+        }
     }
 
 </script>
diff --git a/LayoutTests/accessibility/aria-help.html b/LayoutTests/accessibility/aria-help.html
index 9af14ab..9924532 100644
--- a/LayoutTests/accessibility/aria-help.html
+++ b/LayoutTests/accessibility/aria-help.html
@@ -20,7 +20,10 @@
 
         document.getElementById("button").focus();
         var button = accessibilityController.focusedElement;
-        shouldBe("button.helpText", "'AXHelp: click here'");
+        if (accessibilityController.platformName == "atk")
+            shouldBe("button.description", "'AXDescription: click here'");
+        else
+            shouldBe("button.helpText", "'AXHelp: click here'");
     }
 
 </script>
diff --git a/LayoutTests/accessibility/aria-label.html b/LayoutTests/accessibility/aria-label.html
index 101d42c..5cf65bc1 100644
--- a/LayoutTests/accessibility/aria-label.html
+++ b/LayoutTests/accessibility/aria-label.html
@@ -18,11 +18,18 @@
           var body = document.getElementById("body");
           body.focus();
           var obj = accessibilityController.focusedElement.childAtIndex(0).childAtIndex(0);
-          var succeeded = obj.description == "AXDescription: aria label";
+          var succeeded;
+          if (accessibilityController.platformName == "atk")
+              succeeded = obj.title == "AXTitle: aria label";
+          else
+              succeeded = obj.description == "AXDescription: aria label";
           shouldBe("succeeded", "true");
 
           obj = accessibilityController.focusedElement.childAtIndex(0).childAtIndex(1);
-          succeeded = obj.description == "AXDescription: aria link";
+          if (accessibilityController.platformName == "atk")
+              succeeded = obj.title == "AXTitle: aria link";
+          else
+              succeeded = obj.description == "AXDescription: aria link";
           shouldBe("succeeded", "true");
     }
 
diff --git a/LayoutTests/accessibility/aria-labeled-with-hidden-node.html b/LayoutTests/accessibility/aria-labeled-with-hidden-node.html
index b00df41..43a8c51a 100644
--- a/LayoutTests/accessibility/aria-labeled-with-hidden-node.html
+++ b/LayoutTests/accessibility/aria-labeled-with-hidden-node.html
@@ -17,7 +17,10 @@
     
     if (window.accessibilityController) {
        var button = accessibilityController.accessibleElementById("button");
-       shouldBe("button.description", "'AXDescription: TITLE'");
+       if (accessibilityController.platformName == "atk")
+           shouldBe("button.title", "'AXTitle: TITLE'");
+       else
+           shouldBe("button.description", "'AXDescription: TITLE'");
     }
 </script>
 
diff --git a/LayoutTests/accessibility/aria-labelledby-on-input.html b/LayoutTests/accessibility/aria-labelledby-on-input.html
index 72b7e0e..a888010 100644
--- a/LayoutTests/accessibility/aria-labelledby-on-input.html
+++ b/LayoutTests/accessibility/aria-labelledby-on-input.html
@@ -14,7 +14,10 @@
             var labeledItem = document.getElementById("time");
             labeledItem.focus();
             var result = document.getElementById("result");
-            result.innerText = "\nThe accessibility description is \"" + accessibilityController.focusedElement.description + "\"";
+            if (accessibilityController.platformName == "atk")
+                result.innerText = "\nThe accessibility title is \"" + accessibilityController.focusedElement.title + "\"";
+            else
+                result.innerText = "\nThe accessibility description is \"" + accessibilityController.focusedElement.description + "\"";
         }
     </script>
 </body>
diff --git a/LayoutTests/accessibility/aria-labelledby-overrides-aria-labeledby.html b/LayoutTests/accessibility/aria-labelledby-overrides-aria-labeledby.html
index ad47b73..160b76f 100644
--- a/LayoutTests/accessibility/aria-labelledby-overrides-aria-labeledby.html
+++ b/LayoutTests/accessibility/aria-labelledby-overrides-aria-labeledby.html
@@ -23,10 +23,13 @@
     description("This tests that aria-labelledby overrides aria-labeledby correctly.");
     
     if (window.accessibilityController) {
-        var linkDescription = accessibilityController.accessibleElementById("link").description;
-        
-        shouldBe("linkDescription", "'AXDescription: Y Z'");
-        
+        if (accessibilityController.platformName == "atk") {
+            var linkTitle = accessibilityController.accessibleElementById("link").title;
+            shouldBe("linkTitle", "'AXTitle: Y Z'");
+        } else {
+            var linkDescription = accessibilityController.accessibleElementById("link").description;
+            shouldBe("linkDescription", "'AXDescription: Y Z'");
+        }
         // Hide superfluous text.
         document.getElementById("test").style.display = "none";
     }
diff --git a/LayoutTests/accessibility/aria-labelledby-overrides-label.html b/LayoutTests/accessibility/aria-labelledby-overrides-label.html
index d6f83f4..4a0daf2 100644
--- a/LayoutTests/accessibility/aria-labelledby-overrides-label.html
+++ b/LayoutTests/accessibility/aria-labelledby-overrides-label.html
@@ -22,7 +22,10 @@
           text.focus();
           text = accessibilityController.focusedElement;
 
-          debug("text.description is " + text.description);
+          if (accessibilityController.platformName == "atk")
+              debug("text.title is " + text.title);
+          else
+              debug("text.description is " + text.description);
 
           // There should be no title UI element.
           shouldBe("text.titleUIElement() != null && text.titleUIElement().isValid", "false");
diff --git a/LayoutTests/accessibility/aria-labelledby-stay-within.html b/LayoutTests/accessibility/aria-labelledby-stay-within.html
index 71c74c7..b931ba2 100644
--- a/LayoutTests/accessibility/aria-labelledby-stay-within.html
+++ b/LayoutTests/accessibility/aria-labelledby-stay-within.html
@@ -32,11 +32,16 @@
             var labeledItem = document.getElementById("rep");
             labeledItem.focus();
             var result = document.getElementById("result");
-            if ( accessibilityController.focusedElement.description == "AXDescription: Reply Item Five" ) {
+            var resultValue;
+            if (accessibilityController.platformName == "atk")
+                resultValue = accessibilityController.focusedElement.title;
+            else
+                resultValue = accessibilityController.focusedElement.description;
+            if (resultValue.endsWith("Reply Item Five")) {
                result.innerText = "Passed";
             }
             else { 
-               result.innerText = "Failed. Result ==" + accessibilityController.focusedElement.description + "==";
+               result.innerText = "Failed. Result ==" + resultValue + "==";
             }
         }
     </script>
diff --git a/LayoutTests/accessibility/aria-labelledby-with-descendants.html b/LayoutTests/accessibility/aria-labelledby-with-descendants.html
index 0091721..eeecd30 100644
--- a/LayoutTests/accessibility/aria-labelledby-with-descendants.html
+++ b/LayoutTests/accessibility/aria-labelledby-with-descendants.html
@@ -49,7 +49,10 @@
     if (window.accessibilityController) {
           for (var k = 1; k < 8; k++) {
               var test = accessibilityController.accessibleElementById("test" + k);
-              debug("test " + k + ": aria-labelledby description: " + test.description);
+              if (accessibilityController.platformName == "atk")
+                  debug("test " + k + ": aria-labelledby description: " + test.title);
+              else
+                  debug("test " + k + ": aria-labelledby description: " + test.description);
               debug("test " + k + ": expected description: " + document.getElementById("test" + k).getAttribute("data-label") + "\n");
           }
           document.getElementById("content").style.visibility = "hidden";
diff --git a/LayoutTests/accessibility/aria-namefrom-author.html b/LayoutTests/accessibility/aria-namefrom-author.html
index 0e29539..6c29669 100644
--- a/LayoutTests/accessibility/aria-namefrom-author.html
+++ b/LayoutTests/accessibility/aria-namefrom-author.html
@@ -67,7 +67,10 @@
     document.getElementById("button").setAttribute("aria-labelledby", labelledby);
 
     if (window.accessibilityController) {
-        debug("Button description: " + accessibilityController.accessibleElementById("button").description);
+        if (accessibilityController.platformName == "atk")
+            debug("Button title: " + accessibilityController.accessibleElementById("button").title);
+        else
+            debug("Button description: " + accessibilityController.accessibleElementById("button").description);
         document.getElementById("content").style.visibility = "hidden";
     }
 
diff --git a/LayoutTests/accessibility/aria-option-role.html b/LayoutTests/accessibility/aria-option-role.html
index 9d546d8..5ba8e6b 100644
--- a/LayoutTests/accessibility/aria-option-role.html
+++ b/LayoutTests/accessibility/aria-option-role.html
@@ -29,7 +29,10 @@
           debug("firstChild.title is " + firstChild.title);
 
           debug("secondChild.role is " + secondChild.role);
-          debug("secondChild.description is " + secondChild.description);
+          if (accessibilityController.platformName == "atk")
+              debug("secondChild.title is " + secondChild.title);
+          else
+              debug("secondChild.description is " + secondChild.description);
 
           shouldBe("firstChild.childrenCount", "0");
           shouldBe("secondChild.childrenCount", "0");
diff --git a/LayoutTests/accessibility/canvas-description-and-role.html b/LayoutTests/accessibility/canvas-description-and-role.html
index 5b8ecd9..2c8e4ff 100644
--- a/LayoutTests/accessibility/canvas-description-and-role.html
+++ b/LayoutTests/accessibility/canvas-description-and-role.html
@@ -21,11 +21,17 @@
     shouldBe("axContainer.childrenCount", "2");
 
     var axCanvas1 = axContainer.childAtIndex(0);
-    debug('Canvas 1 description: ' + axCanvas1.description);
+    if (accessibilityController.platformName == "atk")
+        debug('Canvas 1 title: ' + axCanvas1.title);
+    else
+        debug('Canvas 1 description: ' + axCanvas1.description);
     debug('Canvas 1 role: ' + axCanvas1.role);
 
     var axCanvas2 = axContainer.childAtIndex(1);
-    debug('Canvas 2 description: ' + axCanvas2.description);
+    if (accessibilityController.platformName == "atk")
+        debug('Canvas 2 title: ' + axCanvas2.title);
+    else
+        debug('Canvas 2 description: ' + axCanvas2.description);
     debug('Canvas 2 role: ' + axCanvas2.role);
 }
 
diff --git a/LayoutTests/accessibility/empty-image-with-title.html b/LayoutTests/accessibility/empty-image-with-title.html
index 53154a6..4310810 100644
--- a/LayoutTests/accessibility/empty-image-with-title.html
+++ b/LayoutTests/accessibility/empty-image-with-title.html
@@ -17,7 +17,10 @@
 
           var image1 = accessibilityController.accessibleElementById("image1");
           debug("image1.role is " + image1.role);
-          debug("image1.description is " + image1.description);
+          if (accessibilityController.platformName == "atk")
+              debug("image1.title is " + image1.title);
+          else
+              debug("image1.description is " + image1.description);
     }
 
 </script>
diff --git a/LayoutTests/accessibility/fieldset-element.html b/LayoutTests/accessibility/fieldset-element.html
index 7d75444..37e71b4 100644
--- a/LayoutTests/accessibility/fieldset-element.html
+++ b/LayoutTests/accessibility/fieldset-element.html
@@ -78,7 +78,10 @@
         // fieldset tests.
         fieldsetTestCount = document.getElementsByClassName("fieldsetTest").length;
         for (var i = 0; i < fieldsetTestCount; ++i) {
-            fieldsetDescription = accessibilityController.accessibleElementById("f" + i).description;
+            if (accessibilityController.platformName == "atk")
+                fieldsetDescription = accessibilityController.accessibleElementById("f" + i).title;
+            else
+                fieldsetDescription = accessibilityController.accessibleElementById("f" + i).description;
             debug(fieldsetDescription);
         }
         
diff --git a/LayoutTests/accessibility/focusable-div.html b/LayoutTests/accessibility/focusable-div.html
index b19682b..5b3dd8a 100644
--- a/LayoutTests/accessibility/focusable-div.html
+++ b/LayoutTests/accessibility/focusable-div.html
@@ -50,7 +50,10 @@
     div3.focus();
     shouldBe("document.activeElement == div3", "true");
     window.axDiv3 = accessibilityController.focusedElement;
-    shouldBe("lastChar(axDiv3.description)", "\"D\"");
+    if (accessibilityController.platformName == "atk")
+        shouldBe("lastChar(axDiv3.title)", "\"D\"");
+    else
+        shouldBe("lastChar(axDiv3.description)", "\"D\"");
 
     var div4 = document.getElementById('div4');
     div4.focus();
diff --git a/LayoutTests/accessibility/gtk/no-notification-for-unrendered-iframe-children-expected.txt b/LayoutTests/accessibility/gtk/no-notification-for-unrendered-iframe-children-expected.txt
index 91fc669..f470734 100644
--- a/LayoutTests/accessibility/gtk/no-notification-for-unrendered-iframe-children-expected.txt
+++ b/LayoutTests/accessibility/gtk/no-notification-for-unrendered-iframe-children-expected.txt
@@ -4,8 +4,8 @@
 
 
 
-AXChildrenAdded on AXDescription: inner body
-AXChildrenAdded on AXDescription: inner body
+AXChildrenAdded on AXTitle: inner body
+AXChildrenAdded on AXTitle: inner body
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/accessibility/gtk/no-notification-for-unrendered-iframe-children.html b/LayoutTests/accessibility/gtk/no-notification-for-unrendered-iframe-children.html
index 86bbd0e..117ed27 100644
--- a/LayoutTests/accessibility/gtk/no-notification-for-unrendered-iframe-children.html
+++ b/LayoutTests/accessibility/gtk/no-notification-for-unrendered-iframe-children.html
@@ -21,7 +21,7 @@
 
         accessibilityController.addNotificationListener(function(element, notification) {
             if (notification == "AXChildrenAdded" && element.role == "AXRole: AXGroup")
-                debug(notification + " on " + element.description);
+                debug(notification + " on " + element.title);
         });
     }
 
diff --git a/LayoutTests/accessibility/gtk/title-and-alt-expected.txt b/LayoutTests/accessibility/gtk/title-and-alt-expected.txt
index 1dc5302..553a815 100644
--- a/LayoutTests/accessibility/gtk/title-and-alt-expected.txt
+++ b/LayoutTests/accessibility/gtk/title-and-alt-expected.txt
@@ -1,5 +1,5 @@
 
-Functional label:
+Functional label:   
 This tests the exposure of alt and title information.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
@@ -7,10 +7,10 @@
 
 PASS image.title is 'AXTitle: Image alt attr'
 PASS image.description is 'AXDescription: Image title attr'
-PASS link.title is 'AXTitle: '
+PASS link.title is 'AXTitle: Functional label'
 PASS link.description is 'AXDescription: Link title attr'
-PASS entry.title is 'AXTitle: '
-PASS entry.description is 'AXDescription: Entry title attr'
+PASS entry.title is 'AXTitle: Entry title attr'
+PASS entry.description is 'AXDescription: '
 PASS button.title is 'AXTitle: Submit'
 PASS button.description is 'AXDescription: Submit button title attr'
 PASS successfullyParsed is true
diff --git a/LayoutTests/accessibility/gtk/title-and-alt.html b/LayoutTests/accessibility/gtk/title-and-alt.html
index d00a51d..b213d29 100644
--- a/LayoutTests/accessibility/gtk/title-and-alt.html
+++ b/LayoutTests/accessibility/gtk/title-and-alt.html
@@ -23,12 +23,12 @@
         shouldBe("image.description", "'AXDescription: Image title attr'");
 
         var link = accessibilityController.accessibleElementById("link");
-        shouldBe("link.title", "'AXTitle: Functional label.'");
+        shouldBe("link.title", "'AXTitle: Functional label'");
         shouldBe("link.description", "'AXDescription: Link title attr'");
 
         var entry = accessibilityController.accessibleElementById("entry");
-        shouldBe("entry.title", "'AXTitle: '");
-        shouldBe("entry.description", "'AXDescription: Entry title attr'");
+        shouldBe("entry.title", "'AXTitle: Entry title attr'");
+        shouldBe("entry.description", "'AXDescription: '");
 
         var button = accessibilityController.accessibleElementById("button");
         shouldBe("button.title", "'AXTitle: Submit'");
diff --git a/LayoutTests/accessibility/help-text.html b/LayoutTests/accessibility/help-text.html
index 446ee6d..92068a7 100644
--- a/LayoutTests/accessibility/help-text.html
+++ b/LayoutTests/accessibility/help-text.html
@@ -65,7 +65,11 @@
             var ax = accessibilityController.accessibleElementById(id);
             if (!ax)
                 continue;
-            var output = ax.helpText.replace("AXHelp: ", "");
+            var output;
+            if (accessibilityController.platformName == "atk")
+                output = ax.description.replace("AXDescription: ", "");
+            else
+                output = ax.helpText.replace("AXHelp: ", "");
             var result = document.getElementById("console");
             if (expectation === output)
                 result.textContent += "PASS: Help text for <" + tag +"> is \"" + output + "\"\n";
diff --git a/LayoutTests/accessibility/img-alt-tag-only-whitespace-expected.txt b/LayoutTests/accessibility/img-alt-tag-only-whitespace-expected.txt
index 5608d38..3caad2c 100644
--- a/LayoutTests/accessibility/img-alt-tag-only-whitespace-expected.txt
+++ b/LayoutTests/accessibility/img-alt-tag-only-whitespace-expected.txt
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 26: Image description: AXDescription:    Image 
+CONSOLE MESSAGE: line 27: Image description: AXDescription:    Image 
 
 
 
diff --git a/LayoutTests/accessibility/img-alt-tag-only-whitespace.html b/LayoutTests/accessibility/img-alt-tag-only-whitespace.html
index 14ffba4..a4571be 100644
--- a/LayoutTests/accessibility/img-alt-tag-only-whitespace.html
+++ b/LayoutTests/accessibility/img-alt-tag-only-whitespace.html
@@ -23,7 +23,10 @@
         document.getElementById("images").focus();
         var imagesGroup = accessibilityController.focusedElement;
         shouldBe("imagesGroup.childrenCount", "1");
-        console.log("Image description: " + imagesGroup.childAtIndex(0).description);
+        if (accessibilityController.platformName != "atk")
+            console.log("Image description: " + imagesGroup.childAtIndex(0).description);
+        else
+            console.log("Image title: " + imagesGroup.childAtIndex(0).title);
     }
 
 </script>
diff --git a/LayoutTests/accessibility/img-aria-button-alt-tag.html b/LayoutTests/accessibility/img-aria-button-alt-tag.html
index 9b99e6c..dc3eb3a 100644
--- a/LayoutTests/accessibility/img-aria-button-alt-tag.html
+++ b/LayoutTests/accessibility/img-aria-button-alt-tag.html
@@ -21,7 +21,10 @@
 
             var body = document.getElementById("body").focus();
             var imgUIElement = accessibilityController.focusedElement.childAtIndex(0).childAtIndex(0);
-            debug("imgUIElement.description is " + imgUIElement.description);
+            if (accessibilityController.platformName == "atk")
+                debug("imgUIElement.title is " + imgUIElement.title);
+            else
+                debug("imgUIElement.description is " + imgUIElement.description);
         }
     </script>
     
diff --git a/LayoutTests/accessibility/img-fallsback-to-title.html b/LayoutTests/accessibility/img-fallsback-to-title.html
index d655a0e..ffa11d8 100644
--- a/LayoutTests/accessibility/img-fallsback-to-title.html
+++ b/LayoutTests/accessibility/img-fallsback-to-title.html
@@ -28,24 +28,44 @@
         // First image should have a description of "test1" because there is no alt tag (it should use the title).
         // The title should NOT be in the help text.
         var image1 = imagesGroup.childAtIndex(0).childAtIndex(0);
-        debug("Image1 description: " + image1.description);
-        debug("Image1 help: " + image1.helpText + "<br>");
+        if (accessibilityController.platformName == "atk") {
+            debug("Image1 title: " + image1.title);
+            debug("Image1 description: " + image1.description + "<br>");
+        } else {
+            debug("Image1 description: " + image1.description);
+            debug("Image1 help: " + image1.helpText + "<br>");
+        }
 
         // Second image should use the description from the alt tag instead of the title.
         // The help text should reflect what's in the title.
         var image2 = imagesGroup.childAtIndex(0).childAtIndex(1);
-        debug("Image2 description: " + image2.description);
-        debug("Image2 help: " + image2.helpText + "<br>");
+        if (accessibilityController.platformName == "atk") {
+            debug("Image2 title: " + image2.title);
+            debug("Image2 description: " + image2.description + "<br>");
+        } else {
+            debug("Image2 description: " + image2.description);
+            debug("Image2 help: " + image2.helpText + "<br>");
+        }
 
         // Now do the same checks for ARIA type images.
         var image3 = imagesGroup.childAtIndex(1);
-        debug("Image3 description: " + image3.description);
-        debug("Image3 help: " + image3.helpText + "<br>");
+        if (accessibilityController.platformName == "atk") {
+            debug("Image3 title: " + image3.title);
+            debug("Image3 description: " + image3.description + "<br>");
+        } else {
+            debug("Image3 description: " + image3.description);
+            debug("Image3 help: " + image3.helpText + "<br>");
+        }
 
         // Now do the same checks for ARIA type images.
         var image4 = imagesGroup.childAtIndex(2);
-        debug("Image4 description: " + image4.description);
-        debug("Image4 help: " + image4.helpText + "<br>");
+        if (accessibilityController.platformName == "atk") {
+            debug("Image4 title: " + image4.title);
+            debug("Image4 description: " + image4.description + "<br>");
+        } else {
+            debug("Image4 description: " + image4.description);
+            debug("Image4 help: " + image4.helpText + "<br>");
+        }
 
         // Verify that the first image (with an empty alt tag) is ignored
         // by checking the children count of the group containing the native images == 2.
diff --git a/LayoutTests/accessibility/input-image-alt.html b/LayoutTests/accessibility/input-image-alt.html
index db9bb9a..d8282fc 100644
--- a/LayoutTests/accessibility/input-image-alt.html
+++ b/LayoutTests/accessibility/input-image-alt.html
@@ -17,7 +17,10 @@
             var image1 = document.getElementById("image1").focus();
             var img = accessibilityController.focusedElement;
 
-            debug("img.description is " + img.description);
+            if (accessibilityController.platformName == "atk")
+                debug("img.title is " + img.title);
+            else
+                debug("img.description is " + img.description);
         }
     </script>
 
diff --git a/LayoutTests/accessibility/loading-iframe-sends-notification.html b/LayoutTests/accessibility/loading-iframe-sends-notification.html
index 6f80906..abcd600 100644
--- a/LayoutTests/accessibility/loading-iframe-sends-notification.html
+++ b/LayoutTests/accessibility/loading-iframe-sends-notification.html
@@ -54,7 +54,14 @@
 
             window.accessibilityController.addNotificationListener(function (target, notification) {
                 // Ignore this notification if it's not on the iframe or not about the iframe being loaded.
-                if (target.description.indexOf("InnerFrame") == -1
+
+                var targetString;
+                if (accessibilityController.platformName == "atk")
+                    targetString = target.title;
+                else
+                    targetString = target.description;
+
+                if (targetString.indexOf("InnerFrame") == -1
                     || (notification != "AXLoadComplete" && notification != "AXLayoutComplete"))
                     return;
 
diff --git a/LayoutTests/accessibility/media-element.html b/LayoutTests/accessibility/media-element.html
index 4e866dd..fe76229 100644
--- a/LayoutTests/accessibility/media-element.html
+++ b/LayoutTests/accessibility/media-element.html
@@ -18,7 +18,10 @@
 
             function dumpObject(axObject)
             {
-                debug(indent(indentLevel) + "description: " + axObject.description); 
+            if (accessibilityController.platformName == "atk")
+                debug(indent(indentLevel) + "title: " + axObject.title);
+            else
+                debug(indent(indentLevel) + "description: " + axObject.description);
                 debug(indent(indentLevel) + "role: " + axObject.role); 
                 if (axObject.subrole && axObject.subrole != 'AXSubrole: ') debug(indent(indentLevel) + "subrole: " + axObject.subrole);
                 debug("<br>");
diff --git a/LayoutTests/accessibility/radio-button-title-label.html b/LayoutTests/accessibility/radio-button-title-label.html
index db0b2f3..c9be017 100644
--- a/LayoutTests/accessibility/radio-button-title-label.html
+++ b/LayoutTests/accessibility/radio-button-title-label.html
@@ -39,15 +39,25 @@
             // 2) aria-labeledby should override the native label semantics and return a title for the radio button, instead of a title ui element.
             var radio2 = accessibilityController.accessibleElementById("r2");
             titleUIElement = radio2.titleUIElement();
-            shouldBe("radio2.description", "'AXDescription: LABEL2a'");
-            shouldBe("radio2.title", "'AXTitle: '");
+            if (accessibilityController.platformName == "atk") {
+                shouldBe("radio2.title", "'AXTitle: LABEL2a'");
+                shouldBe("radio2.description", "'AXDescription: '");
+            } else {
+                shouldBe("radio2.description", "'AXDescription: LABEL2a'");
+                shouldBe("radio2.title", "'AXTitle: '");
+            }
             shouldBeTrue("!titleUIElement || titleUIElement.title == 'AXTitle: '");
 
             // 3) If a radio button has an aria-label and a <label>, the aria-label should be the title.
             var radio3 = accessibilityController.accessibleElementById("r3");
             titleUIElement = radio3.titleUIElement();
-            shouldBe("radio3.description", "'AXDescription: radio3'");
-            shouldBe("radio3.title", "'AXTitle: '");
+            if (accessibilityController.platformName == "atk") {
+                shouldBe("radio3.title", "'AXTitle: radio3'");
+                shouldBe("radio2.description", "'AXDescription: '");
+            } else {
+                shouldBe("radio3.description", "'AXDescription: radio3'");
+                shouldBe("radio3.title", "'AXTitle: '");
+            }
             shouldBeTrue("!titleUIElement || titleUIElement.title == 'AXTitle: '");
 
         }
diff --git a/LayoutTests/accessibility/self-referencing-aria-labelledby.html b/LayoutTests/accessibility/self-referencing-aria-labelledby.html
index 3a3d105..4971a3a 100644
--- a/LayoutTests/accessibility/self-referencing-aria-labelledby.html
+++ b/LayoutTests/accessibility/self-referencing-aria-labelledby.html
@@ -40,7 +40,10 @@
         testCount = document.getElementsByClassName("test").length;
         for (var i = 0; i < testCount; ++i) {
             var test = accessibilityController.accessibleElementById("t" + i);
-            shouldBe("test.description", "'AXDescription: X Y Z'");
+            if (accessibilityController.platformName == "atk")
+                shouldBe("test.title", "'AXTitle: X Y Z'");
+            else
+                shouldBe("test.description", "'AXDescription: X Y Z'");
         }
     }
 </script>
diff --git a/LayoutTests/accessibility/svg-bounds.html b/LayoutTests/accessibility/svg-bounds.html
index 7b0c7b9..002af8a 100644
--- a/LayoutTests/accessibility/svg-bounds.html
+++ b/LayoutTests/accessibility/svg-bounds.html
@@ -34,6 +34,10 @@
     return element.clickPointY - element.height/2;
 }
 
+function label(element) {
+    return accessibilityController.platformName == "atk" ? element.title: element.description;
+}
+
 if (window.testRunner && window.accessibilityController) {
     window.testRunner.dumpAsText();
  
@@ -46,35 +50,37 @@
 
     var face = container.childAtIndex(0);
     debug('Face role: ' + face.role);
-    debug('Face label: ' + face.description);
+    debug('Face label: ' + label(face));
     debug('FaceX: ' + (pageX(face) - x));
     debug('FaceY: ' + Math.abs(pageY(face) - y));
     debug('<br>');
 
     var eye = container.childAtIndex(1);
     debug('Eye role: ' + eye.role);
-    debug('Eye label: ' + eye.description);
+    debug('Eye label: ' + label(eye));
     debug('EyeX: ' + (pageX(eye) - x));
     debug('EyeY: ' + Math.abs(pageY(eye) - y));
     debug('<br>');
 
     var nose = container.childAtIndex(3);
     debug('Nose role: ' + nose.role);
-    debug('Nose label: ' + nose.description);
+    debug('Nose label: ' + label(nose));
     debug('NoseX: ' + (pageX(nose) - x));
     debug('NoseY: ' + Math.abs(pageY(nose) - y));
     debug('<br>');
 
     var mouth = container.childAtIndex(4);
     debug('Mouth role: ' + mouth.role);
-    debug('Mouth label: ' + mouth.description);
+    debug('Mouth label: ' + label(mouth));
     debug('MouthX: ' + (pageX(mouth) - x));
     debug('MouthY: ' + Math.floor(Math.abs(pageY(mouth) - y)));
     debug('<br>');
 
     // Text varies by about 1 - 2 pixels depending on the platform,
     // so just print the text coordinates divided by 10.
-    var text = container.childAtIndex(5).childAtIndex(0);
+    var text = container.childAtIndex(5);
+    if (accessibilityController.platformName != "atk")
+        text = text.childAtIndex(0);
     debug('Text role: ' + text.role);
     debug('TextX/10: ' + Math.floor((pageX(text) - x) / 10));
     debug('TextY/10: ' + Math.floor(Math.abs(pageY(text) - y) / 10));
@@ -82,7 +88,7 @@
 
     var image = container.childAtIndex(6);
     debug('Image role: ' + image.role);
-    debug('Image label: ' + image.description);
+    debug('Image label: ' + label(image));
     debug('ImageX: ' + (pageX(image) - x));
     debug('ImageY: ' + Math.abs(pageY(image) - y));
 }
diff --git a/LayoutTests/platform/gtk/TestExpectations b/LayoutTests/platform/gtk/TestExpectations
index 7b4b199..51bd946 100644
--- a/LayoutTests/platform/gtk/TestExpectations
+++ b/LayoutTests/platform/gtk/TestExpectations
@@ -1740,8 +1740,6 @@
 webkit.org/b/42194 fast/events/5056619.html [ Failure ]
 webkit.org/b/42194 http/tests/security/drag-drop-same-unique-origin.html [ Failure ]
 
-webkit.org/b/106340 accessibility/img-fallsback-to-title.html [ Failure ]
-
 # svg/ failures
 webkit.org/b/42457 svg/custom/embedded-svg-allowed-in-dashboard.xml [ Failure ]
 webkit.org/b/42457 svg/custom/manually-parsed-embedded-svg-allowed-in-dashboard.html [ Failure ]
@@ -1959,8 +1957,6 @@
 Bug(GTK) sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.3/S15.9.3.1_A5_T5.html [ Failure ]
 Bug(GTK) sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.3/S15.9.3.1_A5_T6.html [ Failure ]
 
-webkit.org/b/157187 accessibility/gtk/title-and-alt.html [ Failure ]
-
 # Expose title direction in WebKit API
 webkit.org/b/58845 fast/dom/title-directionality.html [ Failure ]
 webkit.org/b/58845 fast/dom/title-directionality-removeChild.html [ Failure ]
@@ -2234,8 +2230,6 @@
 # Test globally skipped, passing on GTK port
 webkit.org/b/124349 fast/hidpi/image-srcset-relative-svg-canvas.html [ Pass ]
 
-webkit.org/b/131496 accessibility/help-text.html [ Failure ]
-
 webkit.org/b/131498 fast/css/cascade/box-shadow-and-webkit-box-shadow-cascade-order.html [ ImageOnlyFailure ]
 
 webkit.org/b/131501 fast/css3-text/css3-text-decoration/text-decoration-skip/glyph-inside-underline.html [ ImageOnlyFailure ]
diff --git a/LayoutTests/platform/gtk/accessibility/alt-tag-on-image-with-nonimage-role-expected.txt b/LayoutTests/platform/gtk/accessibility/alt-tag-on-image-with-nonimage-role-expected.txt
new file mode 100644
index 0000000..c7ab972
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/alt-tag-on-image-with-nonimage-role-expected.txt
@@ -0,0 +1,13 @@
+   
+This tests that setting a role on an img still allows the alt attribute to be used for the description..
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS text.stringValue is 'AXValue: TEST1'
+PASS group.title is 'AXTitle: TEST2'
+PASS button.title is 'AXTitle: TEST3'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/aria-help-expected.txt b/LayoutTests/platform/gtk/accessibility/aria-help-expected.txt
index 0c9bacd..3ea0f40 100644
--- a/LayoutTests/platform/gtk/accessibility/aria-help-expected.txt
+++ b/LayoutTests/platform/gtk/accessibility/aria-help-expected.txt
@@ -4,7 +4,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-FAIL button.helpText should be AXHelp: click here (of type string). Was null (of type object).
+PASS button.description is 'AXDescription: click here'
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/platform/gtk/accessibility/aria-hidden-negates-no-visibility-expected.txt b/LayoutTests/platform/gtk/accessibility/aria-hidden-negates-no-visibility-expected.txt
new file mode 100644
index 0000000..e2ce8bc
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/aria-hidden-negates-no-visibility-expected.txt
@@ -0,0 +1,25 @@
+heading1.2
+
+
+
+
+This tests ensures that aria-hidden=false will allow a node to be in the AX hierarchy even if it's not rendered or visible
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS !heading1_1 || !heading1_1.isValid is true
+PASS !heading1_2 || !heading1_3.isValid is true
+PASS !heading1_3 || !heading1_3.isValid is true
+PASS heading2.role is 'AXRole: AXHeading'
+PASS parent.childAtIndex(0).isEqual(heading2) is true
+PASS heading3.role is 'AXRole: AXHeading'
+PASS parent.childAtIndex(1).isEqual(heading3) is true
+PASS heading4.role is 'AXRole: AXHeading'
+PASS parent.childAtIndex(2).isEqual(heading4) is true
+Textfield Title: AXTitle: HiddenText1
+PASS video.childrenCount is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/aria-labeled-with-hidden-node-expected.txt b/LayoutTests/platform/gtk/accessibility/aria-labeled-with-hidden-node-expected.txt
new file mode 100644
index 0000000..6707b61
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/aria-labeled-with-hidden-node-expected.txt
@@ -0,0 +1,11 @@
+Go
+This tests that if try to use a non-rendered node as your labelledby element, it won't crash and it will work.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS button.title is 'AXTitle: TITLE'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/aria-labelledby-on-input-expected.txt b/LayoutTests/platform/gtk/accessibility/aria-labelledby-on-input-expected.txt
new file mode 100644
index 0000000..9013695
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/aria-labelledby-on-input-expected.txt
@@ -0,0 +1,3 @@
+This computer will self-destruct in   minutes.
+
+The accessibility title is "AXTitle: This computer will self-destruct in 10 minutes."
diff --git a/LayoutTests/platform/gtk/accessibility/aria-labelledby-overrides-aria-label-expected.txt b/LayoutTests/platform/gtk/accessibility/aria-labelledby-overrides-aria-label-expected.txt
new file mode 100644
index 0000000..6175336
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/aria-labelledby-overrides-aria-label-expected.txt
@@ -0,0 +1,12 @@
+This tests that if aria-labelledby is used, then aria-label attributes are not used.
+
+Alpha Beta Delta Eta Epsilon Theta
+usingNone.title: [AXTitle: Alpha]
+usingNone.description: [AXDescription: ]
+usingLabel.title: [AXTitle: Gamma]
+usingLabel.description: [AXDescription: ]
+usingLabelledby.title: [AXTitle: Epsilon]
+usingLabelledby.description: [AXDescription: ]
+usingLabeledby.title: [AXTitle: Theta]
+usingLabeledby.description: [AXDescription: ]
+
diff --git a/LayoutTests/platform/gtk/accessibility/aria-labelledby-overrides-aria-labeledby-expected.txt b/LayoutTests/platform/gtk/accessibility/aria-labelledby-overrides-aria-labeledby-expected.txt
new file mode 100644
index 0000000..87b95ec
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/aria-labelledby-overrides-aria-labeledby-expected.txt
@@ -0,0 +1,10 @@
+This tests that aria-labelledby overrides aria-labeledby correctly.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS linkTitle is 'AXTitle: Y Z'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/aria-labelledby-overrides-label-expected.txt b/LayoutTests/platform/gtk/accessibility/aria-labelledby-overrides-label-expected.txt
new file mode 100644
index 0000000..8788638
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/aria-labelledby-overrides-label-expected.txt
@@ -0,0 +1,13 @@
+Shut down computer after  minutes
+This tests that if aria-labelledby is used, then label elements are not used
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+text.title is AXTitle: Shut down computer after 10 minutes
+PASS text.titleUIElement() != null && text.titleUIElement().isValid is false
+Label element role is: AXRole: AXLabel
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/aria-labelledby-with-descendants-expected.txt b/LayoutTests/platform/gtk/accessibility/aria-labelledby-with-descendants-expected.txt
new file mode 100644
index 0000000..02baf60
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/aria-labelledby-with-descendants-expected.txt
@@ -0,0 +1,32 @@
+
+
+This tests that if aria-labelledby is pointing to nodes with descendants, it returns all text.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+test 1: aria-labelledby description: AXTitle: hello link use world test1 test2 test3
+test 1: expected description: hello link use world test1 test2 test3
+
+test 2: aria-labelledby description: AXTitle: foo bar
+test 2: expected description: foo bar
+
+test 3: aria-labelledby description: AXTitle: foo bar
+test 3: expected description: foo bar
+
+test 4: aria-labelledby description: AXTitle: foo
+test 4: expected description: foo
+
+test 5: aria-labelledby description: AXTitle: Delete
+test 5: expected description: Delete
+
+test 6: aria-labelledby description: AXTitle: Delete product name
+test 6: expected description: Delete product name
+
+test 7: aria-labelledby description: AXTitle: foo bar baz bop bap boom
+test 7: expected description: foo bar baz bop bap boom
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/aria-namefrom-author-expected.txt b/LayoutTests/platform/gtk/accessibility/aria-namefrom-author-expected.txt
new file mode 100644
index 0000000..411a71d
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/aria-namefrom-author-expected.txt
@@ -0,0 +1,10 @@
+This tests all the cases where nameFrom: author is used instead of nameFrom: contents. This means that if these elements are used in aria-labelledby they should not return their inner text. The button should retain its aria-label as the description.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Button title: AXTitle: text
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/aria-option-role-expected.txt b/LayoutTests/platform/gtk/accessibility/aria-option-role-expected.txt
new file mode 100644
index 0000000..11e0622
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/aria-option-role-expected.txt
@@ -0,0 +1,17 @@
+option 1
+option 2
+This tests that the aria 'option' role works as expected. That is, it becomes a static text element with no children.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+firstChild.role is AXRole: AXListItem
+firstChild.title is AXTitle: option 1
+secondChild.role is AXRole: AXListItem
+secondChild.title is AXTitle: label 2
+PASS firstChild.childrenCount is 0
+PASS secondChild.childrenCount is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/aria-switch-text-expected.txt b/LayoutTests/platform/gtk/accessibility/aria-switch-text-expected.txt
index 27bf530..f5b753e 100644
--- a/LayoutTests/platform/gtk/accessibility/aria-switch-text-expected.txt
+++ b/LayoutTests/platform/gtk/accessibility/aria-switch-text-expected.txt
@@ -12,8 +12,8 @@
 widget.title is AXTitle: Two
 widget.description is AXDescription: 
 widget.childrenCount is 0
-widget.title is AXTitle: Three
-widget.description is AXDescription: foo
+widget.title is AXTitle: foo
+widget.description is AXDescription: 
 widget.childrenCount is 0
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/platform/gtk/accessibility/canvas-description-and-role-expected.txt b/LayoutTests/platform/gtk/accessibility/canvas-description-and-role-expected.txt
new file mode 100644
index 0000000..3bf2263
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/canvas-description-and-role-expected.txt
@@ -0,0 +1,14 @@
+This test makes sure that a canvas with and without fallback content each has the right role and description.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS axContainer.childrenCount is 2
+Canvas 1 title: AXTitle: Canvas label
+Canvas 1 role: AXRole: AXCanvas
+Canvas 2 title: AXTitle: 
+Canvas 2 role: AXRole: AXCanvas
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/empty-image-with-title-expected.txt b/LayoutTests/platform/gtk/accessibility/empty-image-with-title-expected.txt
new file mode 100644
index 0000000..5f3a15d
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/empty-image-with-title-expected.txt
@@ -0,0 +1,12 @@
+
+This tests that if a missing image has a title attribute, it still appears in the AX hierarchy.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+image1.role is AXRole: AXImage
+image1.title is AXTitle: baz
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/fieldset-element-expected.txt b/LayoutTests/platform/gtk/accessibility/fieldset-element-expected.txt
new file mode 100644
index 0000000..723ef8c
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/fieldset-element-expected.txt
@@ -0,0 +1,29 @@
+Name: 
+High Score:
+Name: 
+High Score:
+Name: 
+High Score:
+Name: 
+High Score:
+Name: 
+High Score: Name: 
+Name: 
+Other:
+This tests that fieldset and legend elements are exposed correctly.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+AXTitle: High Score:
+AXTitle: High Score:
+AXTitle: New High Score:
+AXTitle: New High Score:
+AXTitle: 
+AXTitle: High Score:
+AXTitle: 
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/focusable-div-expected.txt b/LayoutTests/platform/gtk/accessibility/focusable-div-expected.txt
new file mode 100644
index 0000000..41cebc4
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/focusable-div-expected.txt
@@ -0,0 +1,35 @@
+A
+B
+C
+Link
+Initial text before linkLink
+List item
+Initial text before list
+List item
+This test makes sure that a generic focusable div can get accessibility focus. It should not get accessible text from its children automatically though.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS document.activeElement == link is true
+PASS lastChar(axLink.title) is "A"
+PASS document.activeElement == div is true
+PASS lastChar(axDiv.title) is ' '
+PASS document.activeElement == div2 is true
+PASS lastChar(axDiv2.title) is ' '
+PASS document.activeElement == div3 is true
+PASS lastChar(axDiv3.title) is "D"
+PASS document.activeElement == div4 is true
+PASS axDiv4.title.indexOf('Link') is -1
+PASS document.activeElement == div5 is true
+PASS axDiv5.title.indexOf('Link') is -1
+PASS axDiv5.title.indexOf('Initial text before link') >= 0 is false
+PASS document.activeElement == div6 is true
+PASS axDiv6.title.indexOf('List item') is -1
+PASS document.activeElement == div7 is true
+PASS axDiv7.title.indexOf('List item') is -1
+PASS axDiv7.title.indexOf('Initial text before list') >= 0 is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/help-text-expected.txt b/LayoutTests/platform/gtk/accessibility/help-text-expected.txt
new file mode 100644
index 0000000..09614bb
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/help-text-expected.txt
@@ -0,0 +1,29 @@
+Tests accessibility help text in a variety of examples.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS: Help text for <a> is ""
+PASS: Help text for <a> is "bar"
+PASS: Help text for <a> is "baz"
+PASS: Help text for <a> is ""
+PASS: Help text for <h1> is "bar"
+PASS: Help text for <a> is ""
+PASS: Help text for <button> is ""
+PASS: Help text for <button> is "bar"
+PASS: Help text for <button> is "baz"
+PASS: Help text for <button> is ""
+PASS: Help text for <table> is "table summary"
+PASS: Help text for <caption> is ""
+PASS: Help text for <input> is ""
+PASS: Help text for <div> is ""
+PASS: Help text for <main> is "bar"
+PASS: Help text for <button> is ""
+PASS: Help text for <main> is ""
+PASS: Help text for <div> is ""
+PASS: Help text for <a> is "bar"
+PASS: Help text for <div> is ""
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/image-link-expected.txt b/LayoutTests/platform/gtk/accessibility/image-link-expected.txt
index 9a0c197..d9500b9 100644
--- a/LayoutTests/platform/gtk/accessibility/image-link-expected.txt
+++ b/LayoutTests/platform/gtk/accessibility/image-link-expected.txt
@@ -30,7 +30,7 @@
 AXPosition: { 8.000000, 98.000000 }
 AXSize: { 280.000000, 210.000000 }
 AXTitle: Delicious cake
-AXDescription: Delicious cake
+AXDescription: 
 AXFocusable: 0
 AXFocused: 0
 AXSelectable: 0
diff --git a/LayoutTests/platform/gtk/accessibility/image-map1-expected.txt b/LayoutTests/platform/gtk/accessibility/image-map1-expected.txt
index 060abd2..635797e 100644
--- a/LayoutTests/platform/gtk/accessibility/image-map1-expected.txt
+++ b/LayoutTests/platform/gtk/accessibility/image-map1-expected.txt
@@ -6,15 +6,15 @@
 
 Link1 role: AXRole: AXLink
 Link1 title: AXTitle: Link1
-Link1 description: AXDescription: Link1
+Link1 description: AXDescription: 
 
 Link2 role: AXRole: AXLink
 Link2 title: AXTitle: Link2
-Link2 description: AXDescription: Link2
+Link2 description: AXDescription: 
 
 Link3 role: AXRole: AXLink
 Link3 title: AXTitle: Link3
-Link3 description: AXDescription: Link3
+Link3 description: AXDescription: 
 
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/platform/gtk/accessibility/image-map2-expected.txt b/LayoutTests/platform/gtk/accessibility/image-map2-expected.txt
index 0209039..8e04cb0 100644
--- a/LayoutTests/platform/gtk/accessibility/image-map2-expected.txt
+++ b/LayoutTests/platform/gtk/accessibility/image-map2-expected.txt
@@ -25,7 +25,7 @@
 AXPosition: { 18.000000, 53.000000 }
 AXSize: { 123.000000, 62.000000 }
 AXTitle: Link1
-AXDescription: Link1
+AXDescription: 
 AXValue: 
 AXFocusable: 0
 AXFocused: 0
@@ -45,7 +45,7 @@
 AXPosition: { 20.000000, 117.000000 }
 AXSize: { 122.000000, 14.000000 }
 AXTitle: Link2
-AXDescription: Link2
+AXDescription: 
 AXValue: 
 AXFocusable: 0
 AXFocused: 0
diff --git a/LayoutTests/platform/gtk/accessibility/image-with-alt-and-map-expected.txt b/LayoutTests/platform/gtk/accessibility/image-with-alt-and-map-expected.txt
index 1e76380..33c98fc 100644
--- a/LayoutTests/platform/gtk/accessibility/image-with-alt-and-map-expected.txt
+++ b/LayoutTests/platform/gtk/accessibility/image-with-alt-and-map-expected.txt
@@ -7,10 +7,10 @@
 
 AXRole: AXWebArea AXTitle:  AXDescription: 
   AXRole: AXSection AXTitle:  AXDescription: 
-    AXRole: AXImageMap AXTitle: foo bar baz AXDescription: foo bar baz
-      AXRole: AXLink AXTitle: foo AXDescription: foo
-      AXRole: AXLink AXTitle: bar AXDescription: bar
-      AXRole: AXLink AXTitle: baz AXDescription: baz
+    AXRole: AXImageMap AXTitle: foo bar baz AXDescription: 
+      AXRole: AXLink AXTitle: foo AXDescription: 
+      AXRole: AXLink AXTitle: bar AXDescription: 
+      AXRole: AXLink AXTitle: baz AXDescription: 
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/platform/gtk/accessibility/img-alt-tag-only-whitespace-expected.txt b/LayoutTests/platform/gtk/accessibility/img-alt-tag-only-whitespace-expected.txt
new file mode 100644
index 0000000..70a6615
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/img-alt-tag-only-whitespace-expected.txt
@@ -0,0 +1,14 @@
+CONSOLE MESSAGE: line 29: Image title: AXTitle:    Image 
+
+
+
+This tests that images with alt tags that only have white space are ignored.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS imagesGroup.childrenCount is 1
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/img-aria-button-alt-tag-expected.txt b/LayoutTests/platform/gtk/accessibility/img-aria-button-alt-tag-expected.txt
new file mode 100644
index 0000000..663c2df
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/img-aria-button-alt-tag-expected.txt
@@ -0,0 +1,11 @@
+
+This test makes sure that a img acting as an aria button still returns its alt tag as the description
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+imgUIElement.title is AXTitle: alternate
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/img-fallsback-to-title-expected.txt b/LayoutTests/platform/gtk/accessibility/img-fallsback-to-title-expected.txt
index c552f8d..414f9a1 100644
--- a/LayoutTests/platform/gtk/accessibility/img-fallsback-to-title-expected.txt
+++ b/LayoutTests/platform/gtk/accessibility/img-fallsback-to-title-expected.txt
@@ -1,22 +1,21 @@
-    
-test
+     test
 test
 This tests that images will fallback to using the title attribute if no other descriptive text is present.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-Image1 description: AXDescription: test1
-Image1 help: AXHelp: 
+Image1 title: AXTitle: test1
+Image1 description: AXDescription: 
 
+Image2 title: AXTitle: alt
 Image2 description: AXDescription: test2
-Image2 help: AXHelp: test2
 
-Image3 description: AXDescription: test3
-Image3 help: AXHelp: 
+Image3 title: AXTitle: test3
+Image3 description: AXDescription: 
 
-Image4 description: AXDescription: alt
-Image4 help: AXHelp: test4
+Image4 title: AXTitle: alt
+Image4 description: AXDescription: test4
 
 PASS imagesGroup.childAtIndex(0).childrenCount is 2
 PASS successfullyParsed is true
diff --git a/LayoutTests/platform/gtk/accessibility/input-image-alt-expected.txt b/LayoutTests/platform/gtk/accessibility/input-image-alt-expected.txt
new file mode 100644
index 0000000..abf297d
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/input-image-alt-expected.txt
@@ -0,0 +1,11 @@
+
+This test makes sure that an input image returns its alt tag as the description
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+img.title is AXTitle: Submit
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/media-element-expected.txt b/LayoutTests/platform/gtk/accessibility/media-element-expected.txt
index 1f88779..8c71c1b 100644
--- a/LayoutTests/platform/gtk/accessibility/media-element-expected.txt
+++ b/LayoutTests/platform/gtk/accessibility/media-element-expected.txt
@@ -5,35 +5,35 @@
 
 State at 'canplaythrough' event:
 
-    description: AXDescription: 
+    title: AXTitle: 
     role: AXRole: AXVideo
 
 
-        description: AXDescription: Video Playback
+        title: AXTitle: Video Playback
         role: AXRole: AXToolbar
 
 
-            description: AXDescription: Play
+            title: AXTitle: Play
             role: AXRole: AXButton
 
 
-            description: AXDescription: Duration
+            title: AXTitle: Duration
             role: AXRole: AXSlider
 
 
-            description: AXDescription: Remaining
+            title: AXTitle: Remaining
             role: AXRole: AXTimer
 
 
-            description: AXDescription: Display Full Screen
+            title: AXTitle: Display Full Screen
             role: AXRole: AXButton
 
 
-            description: AXDescription: Mute
+            title: AXTitle: Mute
             role: AXRole: AXButton
 
 
-            description: AXDescription: Volume
+            title: AXTitle: Volume
             role: AXRole: AXSlider
 
 
diff --git a/LayoutTests/platform/gtk/accessibility/radio-button-title-label-expected.txt b/LayoutTests/platform/gtk/accessibility/radio-button-title-label-expected.txt
index bd3ad03..d17601a 100644
--- a/LayoutTests/platform/gtk/accessibility/radio-button-title-label-expected.txt
+++ b/LayoutTests/platform/gtk/accessibility/radio-button-title-label-expected.txt
@@ -5,11 +5,11 @@
 
 PASS radio1.title is 'AXTitle: LABEL'
 PASS titleUIElement.isEqual(accessibilityController.accessibleElementById('label1')) is true
-PASS radio2.description is 'AXDescription: LABEL2a'
-PASS radio2.title is 'AXTitle: '
+PASS radio2.title is 'AXTitle: LABEL2a'
+PASS radio2.description is 'AXDescription: '
 PASS !titleUIElement || titleUIElement.title == 'AXTitle: ' is true
-PASS radio3.description is 'AXDescription: radio3'
-PASS radio3.title is 'AXTitle: '
+PASS radio3.title is 'AXTitle: radio3'
+PASS radio2.description is 'AXDescription: '
 PASS !titleUIElement || titleUIElement.title == 'AXTitle: ' is true
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/platform/gtk/accessibility/self-referencing-aria-labelledby-expected.txt b/LayoutTests/platform/gtk/accessibility/self-referencing-aria-labelledby-expected.txt
new file mode 100644
index 0000000..e89acbf
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/self-referencing-aria-labelledby-expected.txt
@@ -0,0 +1,17 @@
+X ?          Y Z
+This tests that self-referencing aria-labelledby is exposed correctly.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS test.title is 'AXTitle: X Y Z'
+PASS test.title is 'AXTitle: X Y Z'
+PASS test.title is 'AXTitle: X Y Z'
+PASS test.title is 'AXTitle: X Y Z'
+PASS test.title is 'AXTitle: X Y Z'
+PASS test.title is 'AXTitle: X Y Z'
+PASS test.title is 'AXTitle: X Y Z'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/svg-bounds-expected.txt b/LayoutTests/platform/gtk/accessibility/svg-bounds-expected.txt
new file mode 100644
index 0000000..e380ffd
--- /dev/null
+++ b/LayoutTests/platform/gtk/accessibility/svg-bounds-expected.txt
@@ -0,0 +1,43 @@
+Test
+This test ensures the accessibility bounds of embedded SVG objects are correct.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+container location: (607, 107)
+Face role: AXRole: AXButton
+Face label: AXTitle: face
+FaceX: 0
+FaceY: 0
+
+
+Eye role: AXRole: AXButton
+Eye label: AXTitle: left-eye
+EyeX: 103
+EyeY: 148
+
+
+Nose role: AXRole: AXButton
+Nose label: AXTitle: nose
+NoseX: 193
+NoseY: 206
+
+
+Mouth role: AXRole: AXButton
+Mouth label: AXTitle: smile
+MouthX: 116
+MouthY: 276
+
+
+Text role: AXRole: AXSection
+TextX/10: 15
+TextY/10: 11
+
+Image role: AXRole: AXImage
+Image label: AXTitle: Test Image
+ImageX: 21
+ImageY: 21
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 67d263a..c68b0e2 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,43 @@
+2016-05-18  Joanmarie Diggs  <jdiggs@igalia.com>
+
+        AX: [ATK] Use WebCore Accessibility's AccessibilityText for AtkObject name and description
+        https://bugs.webkit.org/show_bug.cgi?id=157822
+
+        Reviewed by Chris Fleizach.
+
+        Remove the old code which was overriding WebCore Accessibility and always use
+        AccessibilityText.
+
+        If the AccessibilityText's textSource is HelpText or SummaryText, it should be exposed
+        as the AtkObject description. If the textSource is TitleTagText and there is no other
+        text alternative, the value should also be exposed in this fashion. Note that AtkObject's
+        description property is equivalent to AXAPI's AXHelp property.
+
+        If the AccessibilityText's textSource is anything other than the above, the first
+        non-empty value should be exposed as the AtkObject name. Depending on the source of
+        the name content, AtkObject's name property can be the equivalent of AXAPI's AXTitle.
+        However, most of the time, AtkObject's name property is equivalent to AXAPI's
+        AXDescription property.
+
+        By making these changes, what WebKit exposes for ATK is now extremely similar to what
+        WebKit exposes on the Mac (modulo the property names) and also with what is defined in
+        the HTML Accessibility and Accessible Name and Description Computation API mappings specs.
+
+        Now that the exposure is correct, the Layout Tests needed to be adjusted accordingly because
+        asking for the "AXDescription" gives you the AXDescription on the Mac and the AtkObject
+        description in GNU/Linux. But as indicated above, what ATK calls a "description" is what
+        the Mac calls "help."
+
+        Ultimately our Layout Tests and/or our platform TestRunner API should be modified to deal
+        with these differences more gracefully. (Bug https://bugs.webkit.org/show_bug.cgi?id=157187
+        has been opened for that task.) In the meantime, the existing tests have been given platform
+        checks to ask for the right property on each platform. This was done in such a way as to not
+        require other (non-ATK) platforms change their current expectations files.
+
+        * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
+        (webkitAccessibleGetName):
+        (webkitAccessibleGetDescription):
+
 2016-05-17  Zalan Bujtas  <zalan@apple.com>
 
         Add LayerListMutationDetector to hittesting.
diff --git a/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp b/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp
index f8c1ff2..9daff56 100644
--- a/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp
+++ b/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp
@@ -111,67 +111,24 @@
     g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), 0);
     returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(object), 0);
 
-    AccessibilityObject* coreObject = core(object);
-    if (coreObject->isFieldset()) {
-        AccessibilityObject* label = coreObject->titleUIElement();
-        if (label) {
-            AtkObject* atkObject = label->wrapper();
-            if (ATK_IS_TEXT(atkObject))
-                return atk_text_get_text(ATK_TEXT(atkObject), 0, -1);
-        }
+    Vector<AccessibilityText> textOrder;
+    core(object)->accessibilityText(textOrder);
+
+    for (const auto& text : textOrder) {
+        // FIXME: This check is here because AccessibilityNodeObject::titleElementText()
+        // appends an empty String for the LabelByElementText source when there is a
+        // titleUIElement(). Removing this check makes some fieldsets lose their name.
+        if (text.text.isEmpty())
+            continue;
+
+        // WebCore Accessibility should provide us with the text alternative computation
+        // in the order defined by that spec. So take the first thing that our platform
+        // does not expose via the AtkObject description.
+        if (text.textSource != HelpText && text.textSource != SummaryText)
+            return cacheAndReturnAtkProperty(object, AtkCachedAccessibleName, text.text);
     }
 
-    if (coreObject->isControl()) {
-        AccessibilityObject* label = coreObject->correspondingLabelForControlElement();
-        if (label) {
-            AtkObject* atkObject = label->wrapper();
-            if (ATK_IS_TEXT(atkObject))
-                return atk_text_get_text(ATK_TEXT(atkObject), 0, -1);
-        }
-
-        // Try text under the node.
-        String textUnder = coreObject->textUnderElement();
-        if (textUnder.length())
-            return cacheAndReturnAtkProperty(object, AtkCachedAccessibleName, textUnder);
-    }
-
-    if (is<SVGElement>(coreObject->element())) {
-        Vector<AccessibilityText> textOrder;
-        coreObject->accessibilityText(textOrder);
-
-        for (const auto& text : textOrder) {
-            if (text.textSource != HelpText && text.textSource != SummaryText)
-                return cacheAndReturnAtkProperty(object, AtkCachedAccessibleName, text.text);
-        }
-        // FIXME: This is to keep the next blocks from returning duplicate text.
-        // This behavior should be extended to all elements; not just SVG.
-        return cacheAndReturnAtkProperty(object, AtkCachedAccessibleName, "");
-    }
-
-    if (coreObject->isImage() || coreObject->isInputImage() || coreObject->isImageMap() || coreObject->isImageMapLink()) {
-        Node* node = coreObject->node();
-        if (is<HTMLElement>(node)) {
-            // Get the attribute rather than altText String so as not to fall back on title.
-            const AtomicString& alt = downcast<HTMLElement>(*node).getAttribute(HTMLNames::altAttr);
-            if (!alt.isEmpty())
-                return cacheAndReturnAtkProperty(object, AtkCachedAccessibleName, alt);
-        }
-    }
-
-    // Fallback for the webArea object: just return the document's title.
-    if (coreObject->isWebArea()) {
-        Document* document = coreObject->document();
-        if (document)
-            return cacheAndReturnAtkProperty(object, AtkCachedAccessibleName, document->title());
-    }
-
-    // Nothing worked so far, try with the AccessibilityObject's
-    // title() before going ahead with stringValue().
-    String axTitle = accessibilityTitle(coreObject);
-    if (!axTitle.isEmpty())
-        return cacheAndReturnAtkProperty(object, AtkCachedAccessibleName, axTitle);
-
-    return cacheAndReturnAtkProperty(object, AtkCachedAccessibleName, coreObject->stringValue());
+    return cacheAndReturnAtkProperty(object, AtkCachedAccessibleName, "");
 }
 
 static const gchar* webkitAccessibleGetDescription(AtkObject* object)
@@ -179,41 +136,26 @@
     g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), 0);
     returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(object), 0);
 
-    AccessibilityObject* coreObject = core(object);
-    Node* node = nullptr;
-    if (coreObject->isAccessibilityRenderObject())
-        node = coreObject->node();
+    Vector<AccessibilityText> textOrder;
+    core(object)->accessibilityText(textOrder);
 
-    if (is<SVGElement>(node)) {
-        Vector<AccessibilityText> textOrder;
-        coreObject->accessibilityText(textOrder);
+    bool nameTextAvailable = false;
+    for (const auto& text : textOrder) {
+        // WebCore Accessibility should provide us with the text alternative computation
+        // in the order defined by that spec. So take the first thing that our platform
+        // does not expose via the AtkObject name.
+        if (text.textSource == HelpText || text.textSource == SummaryText)
+            return cacheAndReturnAtkProperty(object, AtkCachedAccessibleDescription, text.text);
 
-        for (const auto& text : textOrder) {
-            if (text.textSource == HelpText || text.textSource == SummaryText || text.textSource == TitleTagText)
-                return cacheAndReturnAtkProperty(object, AtkCachedAccessibleDescription, text.text);
-        }
-        // FIXME: This is to keep the next blocks from returning duplicate text.
-        // This behavior should be extended to all elements; not just SVG.
-        return cacheAndReturnAtkProperty(object, AtkCachedAccessibleDescription, "");
+        // If there is no other text alternative, the title tag contents will have been
+        // used for the AtkObject name. We don't want to duplicate it here.
+        if (text.textSource == TitleTagText && nameTextAvailable)
+            return cacheAndReturnAtkProperty(object, AtkCachedAccessibleDescription, text.text);
+
+        nameTextAvailable = true;
     }
 
-    if (!is<HTMLElement>(node) || coreObject->ariaRoleAttribute() != UnknownRole || coreObject->isImage())
-        return cacheAndReturnAtkProperty(object, AtkCachedAccessibleDescription, accessibilityDescription(coreObject));
-
-    // atk_table_get_summary returns an AtkObject. We have no summary object, so expose summary here.
-    if (coreObject->roleValue() == TableRole) {
-        const AtomicString& summary = downcast<HTMLTableElement>(*node).summary();
-        if (!summary.isEmpty())
-            return cacheAndReturnAtkProperty(object, AtkCachedAccessibleDescription, summary);
-    }
-
-    // The title attribute should be reliably available as the object's descripton.
-    // We do not want to fall back on other attributes in its absence. See bug 25524.
-    String title = downcast<HTMLElement>(*node).title();
-    if (!title.isEmpty())
-        return cacheAndReturnAtkProperty(object, AtkCachedAccessibleDescription, title);
-
-    return cacheAndReturnAtkProperty(object, AtkCachedAccessibleDescription, accessibilityDescription(coreObject));
+    return cacheAndReturnAtkProperty(object, AtkCachedAccessibleDescription, "");
 }
 
 static void removeAtkRelationByType(AtkRelationSet* relationSet, AtkRelationType relationType)
diff --git a/Tools/ChangeLog b/Tools/ChangeLog
index ea0e01f..3c52659b 100644
--- a/Tools/ChangeLog
+++ b/Tools/ChangeLog
@@ -1,3 +1,16 @@
+2016-05-18  Joanmarie Diggs  <jdiggs@igalia.com>
+
+        AX: [ATK] Use WebCore Accessibility's AccessibilityText for AtkObject name and description
+        https://bugs.webkit.org/show_bug.cgi?id=157822
+
+        Reviewed by Chris Fleizach.
+
+        Fix AccessibilityUIElement::helpText() so that it returns an empty string rather than
+        nullptr upon failure.
+
+        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
+        (WTR::AccessibilityUIElement::helpText):
+
 2016-05-17  Beth Dakin  <bdakin@apple.com>
 
         Make handleAcceptedCandidate a public function
diff --git a/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp b/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp
index 7d211df..ede0470 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp
@@ -1222,15 +1222,15 @@
 
     AtkRelationSet* relationSet = atk_object_ref_relation_set(ATK_OBJECT(m_element.get()));
     if (!relationSet)
-        return nullptr;
+        return JSStringCreateWithCharacters(0, 0);
 
     AtkRelation* relation = atk_relation_set_get_relation_by_type(relationSet, ATK_RELATION_DESCRIBED_BY);
     if (!relation)
-        return nullptr;
+        return JSStringCreateWithCharacters(0, 0);
 
     GPtrArray* targetList = atk_relation_get_target(relation);
     if (!targetList || !targetList->len)
-        return nullptr;
+        return JSStringCreateWithCharacters(0, 0);
 
     StringBuilder builder;
     builder.append("AXHelp: ");