Title: [185573] trunk/Source/WebCore
Revision
185573
Author
[email protected]
Date
2015-06-15 17:40:29 -0700 (Mon, 15 Jun 2015)

Log Message

AX: Changing state of radio buttons causes VoiceOver to go busy for a short time.
https://bugs.webkit.org/show_bug.cgi?id=145933

Reviewed by Dean Jackson.

When radio buttons animate the new focus selection state, the thread activity looks a lot like short burst of
activity to draw, then wait on CoreAnimation to apply those changes.

Since those periods of activity during animation are so short, VoiceOver is not able to query for all the
attributes it needs, and gets stuck in the queue behind rendering.

The fix here is to turn off button state animations while VoiceOver is running.

* platform/mac/ThemeMac.mm:
(WebCore::updateStates):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (185572 => 185573)


--- trunk/Source/WebCore/ChangeLog	2015-06-15 23:56:48 UTC (rev 185572)
+++ trunk/Source/WebCore/ChangeLog	2015-06-16 00:40:29 UTC (rev 185573)
@@ -1,3 +1,21 @@
+2015-06-15  Chris Fleizach  <[email protected]>
+
+        AX: Changing state of radio buttons causes VoiceOver to go busy for a short time.
+        https://bugs.webkit.org/show_bug.cgi?id=145933
+
+        Reviewed by Dean Jackson.
+
+        When radio buttons animate the new focus selection state, the thread activity looks a lot like short burst of
+        activity to draw, then wait on CoreAnimation to apply those changes.
+
+        Since those periods of activity during animation are so short, VoiceOver is not able to query for all the
+        attributes it needs, and gets stuck in the queue behind rendering.
+
+        The fix here is to turn off button state animations while VoiceOver is running.
+
+        * platform/mac/ThemeMac.mm:
+        (WebCore::updateStates):
+
 2015-06-15  Zalan Bujtas  <[email protected]>
 
         RootInlineBox::m_lineBreakObj becomes invalid when a child renderer is removed and the line does not get marked dirty.

Modified: trunk/Source/WebCore/platform/mac/ThemeMac.mm (185572 => 185573)


--- trunk/Source/WebCore/platform/mac/ThemeMac.mm	2015-06-15 23:56:48 UTC (rev 185572)
+++ trunk/Source/WebCore/platform/mac/ThemeMac.mm	2015-06-16 00:40:29 UTC (rev 185573)
@@ -26,6 +26,7 @@
 #import "config.h"
 #import "ThemeMac.h"
 
+#import "AXObjectCache.h"
 #import "BlockExceptions.h"
 #import "GraphicsContext.h"
 #import "LocalCurrentGraphicsContext.h"
@@ -194,6 +195,12 @@
 #if __MAC_OS_X_VERSION_MIN_REQUIRED < 101000
     UNUSED_PARAM(useAnimation);
 #endif
+
+    // The animated state cause this thread to start and stop repeatedly on CoreAnimation synchronize calls.
+    // This short burts of activity in between are not long enough for VoiceOver to retrieve accessibility attributes and makes the process appear unresponsive.
+    if (AXObjectCache::accessibilityEnhancedUserInterfaceEnabled())
+        useAnimation = false;
+    
     ControlStates::States states = controlStates->states();
 
     // Hover state is not supported by Aqua.
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to