Title: [230510] trunk
Revision
230510
Author
n_w...@apple.com
Date
2018-04-10 19:08:16 -0700 (Tue, 10 Apr 2018)

Log Message

AX: Expose strong password fields on iOS
https://bugs.webkit.org/show_bug.cgi?id=184465
<rdar://problem/39325104>

Reviewed by Chris Fleizach.

Source/WebCore:

Exposed the strong password field on iOS. And made sure
we are returning its actual value in accessibilityValue.

Test: accessibility/ios-simulator/strong-password-field.html

* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper _accessibilityIsStrongPasswordField]):
(-[WebAccessibilityObjectWrapper accessibilityValue]):

Tools:

* DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
(AccessibilityUIElement::boolAttributeValue):
* WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
(WTR::AccessibilityUIElement::boolAttributeValue):

LayoutTests:

* accessibility/ios-simulator/strong-password-field-expected.txt: Added.
* accessibility/ios-simulator/strong-password-field.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (230509 => 230510)


--- trunk/LayoutTests/ChangeLog	2018-04-11 01:52:40 UTC (rev 230509)
+++ trunk/LayoutTests/ChangeLog	2018-04-11 02:08:16 UTC (rev 230510)
@@ -1,3 +1,14 @@
+2018-04-10  Nan Wang  <n_w...@apple.com>
+
+        AX: Expose strong password fields on iOS
+        https://bugs.webkit.org/show_bug.cgi?id=184465
+        <rdar://problem/39325104>
+
+        Reviewed by Chris Fleizach.
+
+        * accessibility/ios-simulator/strong-password-field-expected.txt: Added.
+        * accessibility/ios-simulator/strong-password-field.html: Added.
+
 2018-04-10  Per Arne Vollan  <pvol...@apple.com>
 
         Mark legacy-animation-engine/compositing tests as failures on Windows.

Added: trunk/LayoutTests/accessibility/ios-simulator/strong-password-field-expected.txt (0 => 230510)


--- trunk/LayoutTests/accessibility/ios-simulator/strong-password-field-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/accessibility/ios-simulator/strong-password-field-expected.txt	2018-04-11 02:08:16 UTC (rev 230510)
@@ -0,0 +1,16 @@
+  
+This tests the strong password fields on iOS
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS axPw1.boolAttributeValue('AXIsStrongPasswordField') is false
+PASS axPw2.boolAttributeValue('AXIsStrongPasswordField') is true
+PASS axPw3.boolAttributeValue('AXIsStrongPasswordField') is true
+PASS axPw1.stringValue is 'AXValue: ••••••••'
+PASS axPw2.stringValue is 'AXValue: strong password'
+PASS axPw3.stringValue is 'AXValue: strong confirmation password'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/accessibility/ios-simulator/strong-password-field.html (0 => 230510)


--- trunk/LayoutTests/accessibility/ios-simulator/strong-password-field.html	                        (rev 0)
+++ trunk/LayoutTests/accessibility/ios-simulator/strong-password-field.html	2018-04-11 02:08:16 UTC (rev 230510)
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+<meta charset="UTF-8">
+</head>
+<body id="body">
+
+<div id="container">
+<input id="pw1" type="password" value="password">
+<input id="pw2" type="password" value="strong password">
+<input id="pw3" type="password" value="strong confirmation password">
+</div>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+    description("This tests the strong password fields on iOS");
+
+    var pw1 = document.getElementById("pw1");
+    var pw2 = document.getElementById("pw2");
+    var pw3 = document.getElementById("pw3");
+
+    if (window.internals) {
+        window.internals.setAutofilled(pw2, true);
+        window.internals.setShowAutoFillButton(pw2, "StrongConfirmationPassword");
+
+        window.internals.setAutofilled(pw3, true);
+        window.internals.setShowAutoFillButton(pw3, "StrongPassword");
+    }
+
+    if (window.accessibilityController) {
+        var axPw1 = accessibilityController.accessibleElementById("pw1");
+        var axPw2 = accessibilityController.accessibleElementById("pw2");
+        var axPw3 = accessibilityController.accessibleElementById("pw3");
+
+        shouldBeFalse("axPw1.boolAttributeValue('AXIsStrongPasswordField')");
+        shouldBeTrue("axPw2.boolAttributeValue('AXIsStrongPasswordField')");
+        shouldBeTrue("axPw3.boolAttributeValue('AXIsStrongPasswordField')");
+
+        shouldBe("axPw1.stringValue", "'AXValue: ••••••••'");
+        shouldBe("axPw2.stringValue", "'AXValue: strong password'");
+        shouldBe("axPw3.stringValue", "'AXValue: strong confirmation password'");
+    }
+    
+</script>
+
+<script src=""
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (230509 => 230510)


--- trunk/Source/WebCore/ChangeLog	2018-04-11 01:52:40 UTC (rev 230509)
+++ trunk/Source/WebCore/ChangeLog	2018-04-11 02:08:16 UTC (rev 230510)
@@ -1,3 +1,20 @@
+2018-04-10  Nan Wang  <n_w...@apple.com>
+
+        AX: Expose strong password fields on iOS
+        https://bugs.webkit.org/show_bug.cgi?id=184465
+        <rdar://problem/39325104>
+
+        Reviewed by Chris Fleizach.
+
+        Exposed the strong password field on iOS. And made sure
+        we are returning its actual value in accessibilityValue.
+
+        Test: accessibility/ios-simulator/strong-password-field.html
+
+        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
+        (-[WebAccessibilityObjectWrapper _accessibilityIsStrongPasswordField]):
+        (-[WebAccessibilityObjectWrapper accessibilityValue]):
+
 2018-04-10  Fujii Hironori  <hironori.fu...@sony.com>
 
         [Win] Add UserAgentWin.cpp

Modified: trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm (230509 => 230510)


--- trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm	2018-04-11 01:52:40 UTC (rev 230509)
+++ trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm	2018-04-11 02:08:16 UTC (rev 230510)
@@ -1084,6 +1084,18 @@
     return m_object->isValueAutofilled();
 }
 
+- (BOOL)_accessibilityIsStrongPasswordField
+{
+    if (![self _prepareAccessibilityCall])
+        return NO;
+    
+    if (!m_object->isPasswordField())
+        return NO;
+    
+    AutoFillButtonType type = m_object->valueAutofillButtonType();
+    return type == AutoFillButtonType::StrongConfirmationPassword || type == AutoFillButtonType::StrongPassword;
+}
+
 - (CGFloat)_accessibilityMinValue
 {
     if (![self _prepareAccessibilityCall])
@@ -1408,7 +1420,7 @@
         return [NSString stringWithFormat:@"%d", 1];
 
     // rdar://8131388 WebKit should expose the same info as UIKit for its password fields.
-    if (m_object->isPasswordField()) {
+    if (m_object->isPasswordField() && ![self _accessibilityIsStrongPasswordField]) {
         int passwordLength = m_object->accessibilityPasswordFieldLength();
         NSMutableString* string = [NSMutableString string];
         for (int k = 0; k < passwordLength; ++k)

Modified: trunk/Tools/ChangeLog (230509 => 230510)


--- trunk/Tools/ChangeLog	2018-04-11 01:52:40 UTC (rev 230509)
+++ trunk/Tools/ChangeLog	2018-04-11 02:08:16 UTC (rev 230510)
@@ -1,3 +1,16 @@
+2018-04-10  Nan Wang  <n_w...@apple.com>
+
+        AX: Expose strong password fields on iOS
+        https://bugs.webkit.org/show_bug.cgi?id=184465
+        <rdar://problem/39325104>
+
+        Reviewed by Chris Fleizach.
+
+        * DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
+        (AccessibilityUIElement::boolAttributeValue):
+        * WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
+        (WTR::AccessibilityUIElement::boolAttributeValue):
+
 2018-04-10  Zalan Bujtas  <za...@apple.com>
 
         [LayoutReloaded] Add support for out-of-flow descendants in inline formatting context.

Modified: trunk/Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm (230509 => 230510)


--- trunk/Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm	2018-04-11 01:52:40 UTC (rev 230509)
+++ trunk/Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm	2018-04-11 02:08:16 UTC (rev 230510)
@@ -102,6 +102,7 @@
 - (NSUInteger)accessibilityBlockquoteLevel;
 - (NSArray *)accessibilityFindMatchingObjects:(NSDictionary *)parameters;
 - (NSArray *)accessibilitySpeechHint;
+- (BOOL)_accessibilityIsStrongPasswordField;
 
 // TextMarker related
 - (NSArray *)textMarkerRange;
@@ -715,6 +716,8 @@
 {
     if (JSStringIsEqualToUTF8CString(attribute, "AXHasTouchEventListener"))
         return [m_element _accessibilityHasTouchEventListener];
+    if (JSStringIsEqualToUTF8CString(attribute, "AXIsStrongPasswordField"))
+        return [m_element _accessibilityIsStrongPasswordField];
     return false;
 }
 

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm (230509 => 230510)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm	2018-04-11 01:52:40 UTC (rev 230509)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm	2018-04-11 02:08:16 UTC (rev 230510)
@@ -80,6 +80,7 @@
 - (NSUInteger)accessibilityBlockquoteLevel;
 - (NSArray *)accessibilityFindMatchingObjects:(NSDictionary *)parameters;
 - (NSArray<NSString *> *)accessibilitySpeechHint;
+- (BOOL)_accessibilityIsStrongPasswordField;
 
 // TextMarker related
 - (NSArray *)textMarkerRange;
@@ -400,6 +401,8 @@
 {
     if (JSStringIsEqualToUTF8CString(attribute, "AXHasTouchEventListener"))
         return [m_element _accessibilityHasTouchEventListener];
+    if (JSStringIsEqualToUTF8CString(attribute, "AXIsStrongPasswordField"))
+        return [m_element _accessibilityIsStrongPasswordField];
     return false;
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to