User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 Steps to reproduce: <button><span aria-hidden="true">This text should not be read aloud</span> Submit</button> Test case here: http://jsbin.com/urAfuREt Actual results: The aria-hidden span was read aloud by VoiceOver, read as “This text should not be read aloud Submit button” Expected results: The aria-hidden span should have been ignored by VoiceOver, should read “Submit button”
After a little additional research, it seems like aria-hidden is ignored by Firefox? More extensive test case: http://jsbin.com/Idunaruq/1 Orthogonal to the aria-hidden, there is a wrinkle in this test case: <span><span class="icon-star" aria-hidden="true"></span> Favorite</span> is read as "Favorite" and <button><span class="icon-star" aria-hidden="true"></span> Favorite</button> is read as "Black Star Favorite"
I suspect that nsTextEquivUtils::GetNameFromSubtree doesn't take aria-hidden into account. http://mxr.mozilla.org/mozilla-central/source/accessible/src/base/RoleMap.h#363 http://mxr.mozilla.org/mozilla-central/source/accessible/src/base/nsTextEquivUtils.cpp#28
There has been a lot of debate over the years about aria-hidden implementation. An example from last year is bug 780888.