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: ");
