Title: [227526] trunk
Revision
227526
Author
cfleiz...@apple.com
Date
2018-01-24 09:37:24 -0800 (Wed, 24 Jan 2018)

Log Message

AX: Provide a way for VoiceOver to uniquely identify a web session
https://bugs.webkit.org/show_bug.cgi?id=181894

Reviewed by Joanmarie Diggs.

Source/WebCore:

Add a way for VoiceOver to uniquely track a web page session.

Test: accessibility/mac/session-id.html

* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

LayoutTests:

* accessibility/mac/document-attributes-expected.txt:
* accessibility/mac/session-id-expected.txt: Added.
* accessibility/mac/session-id.html: Added.
* platform/mac/accessibility/parent-delete-expected.txt: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (227525 => 227526)


--- trunk/LayoutTests/ChangeLog	2018-01-24 17:28:54 UTC (rev 227525)
+++ trunk/LayoutTests/ChangeLog	2018-01-24 17:37:24 UTC (rev 227526)
@@ -1,3 +1,15 @@
+2018-01-24  Chris Fleizach  <cfleiz...@apple.com>
+
+        AX: Provide a way for VoiceOver to uniquely identify a web session
+        https://bugs.webkit.org/show_bug.cgi?id=181894
+
+        Reviewed by Joanmarie Diggs.
+
+        * accessibility/mac/document-attributes-expected.txt:
+        * accessibility/mac/session-id-expected.txt: Added.
+        * accessibility/mac/session-id.html: Added.
+        * platform/mac/accessibility/parent-delete-expected.txt: Added.
+
 2018-01-24  Ms2ger  <ms2...@igalia.com>
 
         [GTK] Fix some test failures in ATK selection handling.

Modified: trunk/LayoutTests/accessibility/mac/document-attributes-expected.txt (227525 => 227526)


--- trunk/LayoutTests/accessibility/mac/document-attributes-expected.txt	2018-01-24 17:28:54 UTC (rev 227525)
+++ trunk/LayoutTests/accessibility/mac/document-attributes-expected.txt	2018-01-24 17:37:24 UTC (rev 227526)
@@ -28,6 +28,7 @@
 AXURL: LayoutTests/accessibility/mac/document-attributes.html
 AXCaretBrowsingEnabled: 0
 AXPreventKeyboardDOMEventDispatch: 0
+AXWebSessionID: 1
 AXElementBusy: 0
 
 

Added: trunk/LayoutTests/accessibility/mac/session-id-expected.txt (0 => 227526)


--- trunk/LayoutTests/accessibility/mac/session-id-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/accessibility/mac/session-id-expected.txt	2018-01-24 17:37:24 UTC (rev 227526)
@@ -0,0 +1,11 @@
+This tests that we can receive the page ID from the web area element.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS webArea.role is 'AXRole: AXWebArea'
+PASS webArea.numberAttributeValue('AXWebSessionID') >= 1 is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/accessibility/mac/session-id.html (0 => 227526)


--- trunk/LayoutTests/accessibility/mac/session-id.html	                        (rev 0)
+++ trunk/LayoutTests/accessibility/mac/session-id.html	2018-01-24 17:37:24 UTC (rev 227526)
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body id="body">
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+    description("This tests that we can receive the page ID from the web area element.");
+
+    if (window.accessibilityController) {
+
+          var webArea = accessibilityController.rootElement.childAtIndex(0);
+          shouldBe("webArea.role", "'AXRole: AXWebArea'");
+          shouldBeTrue("webArea.numberAttributeValue('AXWebSessionID') >= 1");
+    }
+
+</script>
+
+<script src=""
+</body>
+</html>

Copied: trunk/LayoutTests/platform/mac/accessibility/parent-delete-expected.txt (from rev 227525, trunk/LayoutTests/accessibility/mac/document-attributes-expected.txt) (0 => 227526)


--- trunk/LayoutTests/platform/mac/accessibility/parent-delete-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/mac/accessibility/parent-delete-expected.txt	2018-01-24 17:37:24 UTC (rev 227526)
@@ -0,0 +1,34 @@
+This test passes if there is no crash.
+AXRole: AXWebArea
+AXRoleDescription: HTML content
+AXChildren: <array of size 1>
+AXHelp: 
+AXParent: <AXWebArea>
+AXSize: NSSize: {800, 600}
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocused: 0
+AXEnabled: 1
+AXWindow: <AXWebArea>
+AXSelectedTextMarkerRange: (null)
+AXStartTextMarker: <AXWebArea>
+AXEndTextMarker: <AXWebArea>
+AXVisited: 0
+AXLinkedUIElements: <array of size 0>
+AXSelected: 0
+AXBlockQuoteLevel: 0
+AXTopLevelUIElement: <AXWebArea>
+AXLanguage: 
+AXDOMIdentifier: 
+AXDOMClassList: <array of size 0>
+AXLinkUIElements: <array of size 0>
+AXLoaded: 1
+AXLayoutCount: 2
+AXLoadingProgress: 1
+AXURL: LayoutTests/accessibility/parent-delete.html
+AXCaretBrowsingEnabled: 0
+AXPreventKeyboardDOMEventDispatch: 0
+AXWebSessionID: 1
+AXElementBusy: 0
+

Modified: trunk/Source/WebCore/ChangeLog (227525 => 227526)


--- trunk/Source/WebCore/ChangeLog	2018-01-24 17:28:54 UTC (rev 227525)
+++ trunk/Source/WebCore/ChangeLog	2018-01-24 17:37:24 UTC (rev 227526)
@@ -1,3 +1,18 @@
+2018-01-24  Chris Fleizach  <cfleiz...@apple.com>
+
+        AX: Provide a way for VoiceOver to uniquely identify a web session
+        https://bugs.webkit.org/show_bug.cgi?id=181894
+
+        Reviewed by Joanmarie Diggs.
+
+        Add a way for VoiceOver to uniquely track a web page session.
+
+        Test: accessibility/mac/session-id.html
+
+        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+        (-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
+        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
+
 2018-01-24  Antti Koivisto  <an...@apple.com>
 
         RenderBlockRareData::m_enclosingFragmentedFlow should be WeakPtr

Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (227525 => 227526)


--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm	2018-01-24 17:28:54 UTC (rev 227525)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm	2018-01-24 17:37:24 UTC (rev 227526)
@@ -393,6 +393,10 @@
 #define NSAccessibilityCaretBrowsingEnabledAttribute @"AXCaretBrowsingEnabled"
 #endif
 
+#ifndef NSAccessibilityWebSessionIDAttribute
+#define NSAccessibilityWebSessionIDAttribute @"AXWebSessionID"
+#endif
+
 #ifndef NSAccessibilitFocusableAncestorAttribute
 #define NSAccessibilityFocusableAncestorAttribute @"AXFocusableAncestor"
 #endif
@@ -1359,6 +1363,7 @@
         [tempArray addObject:NSAccessibilityURLAttribute];
         [tempArray addObject:NSAccessibilityCaretBrowsingEnabledAttribute];
         [tempArray addObject:NSAccessibilityPreventKeyboardDOMEventDispatchAttribute];
+        [tempArray addObject:NSAccessibilityWebSessionIDAttribute];
         webAreaAttrs = [[NSArray alloc] initWithArray:tempArray];
         [tempArray release];
     }
@@ -2535,6 +2540,14 @@
             return [NSNumber numberWithInt:m_object->layoutCount()];
         if ([attributeName isEqualToString:NSAccessibilityLoadingProgressAttribute])
             return [NSNumber numberWithDouble:m_object->estimatedLoadingProgress()];
+        if ([attributeName isEqualToString:NSAccessibilityPreventKeyboardDOMEventDispatchAttribute])
+            return [NSNumber numberWithBool:m_object->preventKeyboardDOMEventDispatch()];
+        if ([attributeName isEqualToString:NSAccessibilityCaretBrowsingEnabledAttribute])
+            return [NSNumber numberWithBool:m_object->caretBrowsingEnabled()];
+        if ([attributeName isEqualToString:NSAccessibilityWebSessionIDAttribute]) {
+            if (Document* doc = m_object->topDocument())
+                return [NSNumber numberWithUnsignedLongLong:doc->sessionID().sessionID()];
+        }
     }
     
     if (m_object->isTextControl()) {
@@ -3214,12 +3227,6 @@
         return convertToNSArray(errorMessages);
     }
 
-    if (m_object->isWebArea() && [attributeName isEqualToString:NSAccessibilityPreventKeyboardDOMEventDispatchAttribute])
-        return [NSNumber numberWithBool:m_object->preventKeyboardDOMEventDispatch()];
-    
-    if (m_object->isWebArea() && [attributeName isEqualToString:NSAccessibilityCaretBrowsingEnabledAttribute])
-        return [NSNumber numberWithBool:m_object->caretBrowsingEnabled()];
-    
     // Multi-selectable
     if ([attributeName isEqualToString:NSAccessibilityIsMultiSelectableAttribute])
         return [NSNumber numberWithBool:m_object->isMultiSelectable()];
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to