[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-10851-g50815da

cfleizach at apple.com cfleizach at apple.com
Wed Dec 22 18:34:09 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 4f5eb1cc8becc2437bbc0ca3b5d0c64956b58b7e
Author: cfleizach at apple.com <cfleizach at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Dec 14 00:16:07 2010 +0000

    AX: aria-invalid should be supported.
    https://bugs.webkit.org/show_bug.cgi?id=50573
    
    Reviewed by Beth Dakin.
    
    WebCore:
    
    Test: platform/mac/accessibility/aria-invalid.html
    
    * accessibility/AXObjectCache.h:
    * accessibility/AccessibilityObject.cpp:
    (WebCore::AccessibilityObject::invalidStatus):
    * accessibility/AccessibilityObject.h:
    * accessibility/chromium/AXObjectCacheChromium.cpp
    (WebCore::AXObjectCache::postPlatformNotification):
    * accessibility/mac/AXObjectCacheMac.mm:
    (WebCore::AXObjectCache::postPlatformNotification):
    * accessibility/mac/AccessibilityObjectWrapper.mm:
    (-[AccessibilityObjectWrapper accessibilityAttributeNames]):
    (-[AccessibilityObjectWrapper accessibilityAttributeValue:]):
    * dom/Element.cpp:
    (WebCore::Element::updateAfterAttributeChanged):
    * html/HTMLAttributeNames.in:
    
    LayoutTests:
    
    * platform/mac/accessibility/aria-invalid-expected.txt: Added.
    * platform/mac/accessibility/aria-invalid.html: Added.
    * platform/mac/accessibility/radio-button-group-members-expected.txt:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@73983 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index f9b0227..6385e01 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -2,6 +2,17 @@
 
         Reviewed by Beth Dakin.
 
+        AX: aria-invalid should be supported.
+        https://bugs.webkit.org/show_bug.cgi?id=50573
+
+        * platform/mac/accessibility/aria-invalid-expected.txt: Added.
+        * platform/mac/accessibility/aria-invalid.html: Added.
+        * platform/mac/accessibility/radio-button-group-members-expected.txt:
+
+2010-12-13  Chris Fleizach  <cfleizach at apple.com>
+
+        Reviewed by Beth Dakin.
+
         AX: lists and list boxes need different attributes
         https://bugs.webkit.org/show_bug.cgi?id=50978
 
diff --git a/LayoutTests/platform/mac/accessibility/aria-invalid-expected.txt b/LayoutTests/platform/mac/accessibility/aria-invalid-expected.txt
new file mode 100644
index 0000000..fdd8039
--- /dev/null
+++ b/LayoutTests/platform/mac/accessibility/aria-invalid-expected.txt
@@ -0,0 +1,16 @@
+ALERT: Notification received successfully.
+   
+This tests that aria-invalid causes the right attribute to be returned and it ensures a notification is sent when it changes.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS accessibilityController.focusedElement.stringAttributeValue('AXInvalid') is 'true'
+PASS accessibilityController.focusedElement.stringAttributeValue('AXInvalid') is 'grammar'
+PASS accessibilityController.focusedElement.stringAttributeValue('AXInvalid') is 'false'
+PASS accessibilityController.focusedElement.stringAttributeValue('AXInvalid') is 'false'
+PASS addedNotification is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/mac/accessibility/aria-invalid.html b/LayoutTests/platform/mac/accessibility/aria-invalid.html
new file mode 100644
index 0000000..34b4313
--- /dev/null
+++ b/LayoutTests/platform/mac/accessibility/aria-invalid.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../../fast/js/resources/js-test-style.css">
+<script>
+var successfullyParsed = false;
+</script>
+<script src="../../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body id="body">
+
+
+<input type="text" id="text1" aria-invalid="true">
+<input type="text" id="text2" aria-invalid="grammar">
+<input type="text" id="text3" aria-invalid="">
+<input type="text" id="text4">
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+    description("This tests that aria-invalid causes the right attribute to be returned and it ensures a notification is sent when it changes.");
+
+    var notificationElement = 0;
+    function notificationCallback(notification) {
+        if (notification == "AXInvalidStatusChanged") {
+            alert("Notification received successfully.");
+            notificationElement.removeNotificationListener();
+            window.layoutTestController.notifyDone();
+        }
+    }
+
+    if (window.accessibilityController) {
+        window.layoutTestController.waitUntilDone();
+
+        document.getElementById("text1").focus();
+        shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXInvalid')", "'true'");
+
+        document.getElementById("text2").focus();
+        shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXInvalid')", "'grammar'");
+
+        document.getElementById("text3").focus();
+        shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXInvalid')", "'false'");
+
+        document.getElementById("text4").focus();
+        shouldBe("accessibilityController.focusedElement.stringAttributeValue('AXInvalid')", "'false'");
+
+        notificationElement = accessibilityController.focusedElement;
+        var addedNotification = notificationElement.addNotificationListener(notificationCallback);
+        shouldBeTrue("addedNotification");
+
+        document.getElementById("text4").setAttribute("aria-invalid", "spelling");
+    }
+
+    successfullyParsed = true;
+</script>
+
+<script src="../../../fast/js/resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/platform/mac/accessibility/radio-button-group-members-expected.txt b/LayoutTests/platform/mac/accessibility/radio-button-group-members-expected.txt
index c8004dc..09dc66e 100644
--- a/LayoutTests/platform/mac/accessibility/radio-button-group-members-expected.txt
+++ b/LayoutTests/platform/mac/accessibility/radio-button-group-members-expected.txt
@@ -24,6 +24,7 @@ AXTopLevelUIElement: <AXRadioButton>
 AXTitleUIElement: (null)
 AXAccessKey: (null)
 AXRequired: 0
+AXInvalid: false
 
 ------------
 AXRole: AXRadioButton
@@ -50,6 +51,7 @@ AXTopLevelUIElement: <AXRadioButton>
 AXTitleUIElement: (null)
 AXAccessKey: (null)
 AXRequired: 0
+AXInvalid: false
 
 ------------
 AXRole: AXRadioButton
@@ -76,6 +78,7 @@ AXTopLevelUIElement: <AXRadioButton>
 AXTitleUIElement: (null)
 AXAccessKey: (null)
 AXRequired: 0
+AXInvalid: false
 
 ------------
 
@@ -106,6 +109,7 @@ AXTopLevelUIElement: <AXRadioButton>
 AXTitleUIElement: (null)
 AXAccessKey: (null)
 AXRequired: 0
+AXInvalid: false
 
 ------------
 AXRole: AXRadioButton
@@ -132,6 +136,7 @@ AXTopLevelUIElement: <AXRadioButton>
 AXTitleUIElement: (null)
 AXAccessKey: (null)
 AXRequired: 0
+AXInvalid: false
 
 ------------
 
@@ -162,6 +167,7 @@ AXTopLevelUIElement: <AXRadioButton: 'Yes'>
 AXTitleUIElement: (null)
 AXAccessKey: (null)
 AXRequired: 0
+AXInvalid: false
 
 ------------
 AXRole: AXRadioButton
@@ -188,6 +194,7 @@ AXTopLevelUIElement: <AXRadioButton: 'No'>
 AXTitleUIElement: (null)
 AXAccessKey: (null)
 AXRequired: 0
+AXInvalid: false
 
 ------------
 
@@ -218,6 +225,7 @@ AXTopLevelUIElement: <AXRadioButton>
 AXTitleUIElement: (null)
 AXAccessKey: (null)
 AXRequired: 0
+AXInvalid: false
 
 ------------
 
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index a323230..4021eaa 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,27 @@
+2010-12-13  Chris Fleizach  <cfleizach at apple.com>
+
+        Reviewed by Beth Dakin.
+
+        AX: aria-invalid should be supported.
+        https://bugs.webkit.org/show_bug.cgi?id=50573
+
+        Test: platform/mac/accessibility/aria-invalid.html
+
+        * accessibility/AXObjectCache.h:
+        * accessibility/AccessibilityObject.cpp:
+        (WebCore::AccessibilityObject::invalidStatus):
+        * accessibility/AccessibilityObject.h:
+        * accessibility/chromium/AXObjectCacheChromium.cpp
+        (WebCore::AXObjectCache::postPlatformNotification):
+        * accessibility/mac/AXObjectCacheMac.mm:
+        (WebCore::AXObjectCache::postPlatformNotification):
+        * accessibility/mac/AccessibilityObjectWrapper.mm:
+        (-[AccessibilityObjectWrapper accessibilityAttributeNames]):
+        (-[AccessibilityObjectWrapper accessibilityAttributeValue:]):
+        * dom/Element.cpp:
+        (WebCore::Element::updateAfterAttributeChanged):
+        * html/HTMLAttributeNames.in:
+
 2010-12-13  Joone Hur  <joone at kldp.org>
 
         Reviewed by Eric Seidel.
diff --git a/WebCore/accessibility/AXObjectCache.h b/WebCore/accessibility/AXObjectCache.h
index 2ee56ee..fc6dbb5 100644
--- a/WebCore/accessibility/AXObjectCache.h
+++ b/WebCore/accessibility/AXObjectCache.h
@@ -125,6 +125,7 @@ public:
         AXRowCountChanged,
         AXRowCollapsed,
         AXRowExpanded,
+        AXInvalidStatusChanged,
     };
 
     void postNotification(RenderObject*, AXNotification, bool postToElement, PostType = PostAsynchronously);
diff --git a/WebCore/accessibility/AccessibilityObject.cpp b/WebCore/accessibility/AccessibilityObject.cpp
index 4157844..cfe8a22 100644
--- a/WebCore/accessibility/AccessibilityObject.cpp
+++ b/WebCore/accessibility/AccessibilityObject.cpp
@@ -836,6 +836,20 @@ const String& AccessibilityObject::actionVerb() const
         return noAction;
     }
 }
+
+const AtomicString& AccessibilityObject::invalidStatus() const
+{
+    DEFINE_STATIC_LOCAL(const AtomicString, invalidStatusFalse, ("false"));
+    
+    // aria-invalid can return false (default), grammer, spelling, or true.
+    const AtomicString& ariaInvalid = getAttribute(aria_invalidAttr);
+    
+    // If empty or not present, it should return false.
+    if (ariaInvalid.isEmpty())
+        return invalidStatusFalse;
+    
+    return ariaInvalid;
+}
  
 const AtomicString& AccessibilityObject::getAttribute(const QualifiedName& attribute) const
 {
diff --git a/WebCore/accessibility/AccessibilityObject.h b/WebCore/accessibility/AccessibilityObject.h
index c1ea04f..ad9b723 100644
--- a/WebCore/accessibility/AccessibilityObject.h
+++ b/WebCore/accessibility/AccessibilityObject.h
@@ -360,7 +360,8 @@ public:
     virtual bool supportsARIAFlowTo() const { return false; }
     virtual void ariaFlowToElements(AccessibilityChildrenVector&) const { }
     virtual bool ariaHasPopup() const { return false; }
-    
+    virtual const AtomicString& invalidStatus() const;
+
     // ARIA drag and drop
     virtual bool supportsARIADropping() const { return false; }
     virtual bool supportsARIADragging() const { return false; }
diff --git a/WebCore/accessibility/chromium/AXObjectCacheChromium.cpp b/WebCore/accessibility/chromium/AXObjectCacheChromium.cpp
index 9a1dcaf..0dddc17 100644
--- a/WebCore/accessibility/chromium/AXObjectCacheChromium.cpp
+++ b/WebCore/accessibility/chromium/AXObjectCacheChromium.cpp
@@ -90,6 +90,7 @@ void AXObjectCache::postPlatformNotification(AccessibilityObject* obj, AXNotific
     case AXSelectedChildrenChanged:
     case AXSelectedTextChanged:
     case AXValueChanged:
+    case AXInvalidStatusChanged:
         break;
     }
 
diff --git a/WebCore/accessibility/mac/AXObjectCacheMac.mm b/WebCore/accessibility/mac/AXObjectCacheMac.mm
index fbb485d..13c8ec2 100644
--- a/WebCore/accessibility/mac/AXObjectCacheMac.mm
+++ b/WebCore/accessibility/mac/AXObjectCacheMac.mm
@@ -79,6 +79,9 @@ void AXObjectCache::postPlatformNotification(AccessibilityObject* obj, AXNotific
         case AXLoadComplete:
             macNotification = "AXLoadComplete";
             break;
+        case AXInvalidStatusChanged:
+            macNotification = "AXInvalidStatusChanged";
+            break;
         case AXSelectedChildrenChanged:
             macNotification = NSAccessibilitySelectedChildrenChangedNotification;
             break;
diff --git a/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm b/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
index cbfefac..d1d613c 100644
--- a/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
+++ b/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
@@ -121,6 +121,10 @@ using namespace std;
 #define NSAccessibilityRequiredAttribute @"AXRequired"
 #endif
 
+#ifndef NSAccessibilityInvalidAttribute
+#define NSAccessibilityInvalidAttribute @"AXInvalid"
+#endif
+
 #ifndef NSAccessibilityOwnsAttribute
 #define NSAccessibilityOwnsAttribute @"AXOwns"
 #endif
@@ -763,6 +767,7 @@ static WebCoreTextMarkerRange* textMarkerRangeFromVisiblePositions(AXObjectCache
         [tempArray addObject:NSAccessibilityTitleUIElementAttribute];
         [tempArray addObject:NSAccessibilityAccessKeyAttribute];
         [tempArray addObject:NSAccessibilityRequiredAttribute];
+        [tempArray addObject:NSAccessibilityInvalidAttribute];
         [tempArray addObject:NSAccessibilityPlaceholderValueAttribute];
         textAttrs = [[NSArray alloc] initWithArray:tempArray];
         [tempArray release];
@@ -780,6 +785,7 @@ static WebCoreTextMarkerRange* textMarkerRangeFromVisiblePositions(AXObjectCache
         tempArray = [[NSMutableArray alloc] initWithArray:listAttrs];    
         [tempArray addObject:NSAccessibilityAccessKeyAttribute];
         [tempArray addObject:NSAccessibilityRequiredAttribute];
+        [tempArray addObject:NSAccessibilityInvalidAttribute];
         listBoxAttrs = [[NSArray alloc] initWithArray:tempArray];
         [tempArray release];
     }
@@ -840,6 +846,7 @@ static WebCoreTextMarkerRange* textMarkerRangeFromVisiblePositions(AXObjectCache
         [tempArray addObject:NSAccessibilityTitleUIElementAttribute];
         [tempArray addObject:NSAccessibilityAccessKeyAttribute];
         [tempArray addObject:NSAccessibilityRequiredAttribute];
+        [tempArray addObject:NSAccessibilityInvalidAttribute];
         controlAttrs = [[NSArray alloc] initWithArray:tempArray];
         [tempArray release];
     }
@@ -909,6 +916,7 @@ static WebCoreTextMarkerRange* textMarkerRangeFromVisiblePositions(AXObjectCache
         tempArray = [[NSMutableArray alloc] initWithArray:attributes];
         [tempArray addObject:NSAccessibilityTitleUIElementAttribute];
         [tempArray addObject:NSAccessibilityRequiredAttribute];
+        [tempArray addObject:NSAccessibilityInvalidAttribute];
         passwordFieldAttrs = [[NSArray alloc] initWithArray:tempArray];
         [tempArray release];
     }
@@ -1875,6 +1883,9 @@ static NSString* roleValueToNSString(AccessibilityRole value)
     if ([attributeName isEqualToString:NSAccessibilityRequiredAttribute])
         return [NSNumber numberWithBool:m_object->isRequired()];
 
+    if ([attributeName isEqualToString:NSAccessibilityInvalidAttribute])
+        return m_object->invalidStatus();
+    
     if ([attributeName isEqualToString:NSAccessibilityOwnsAttribute]) {
         AccessibilityObject::AccessibilityChildrenVector ariaOwns;
         m_object->ariaOwnsElements(ariaOwns);
diff --git a/WebCore/dom/Element.cpp b/WebCore/dom/Element.cpp
index 8e633aa..0707c96 100644
--- a/WebCore/dom/Element.cpp
+++ b/WebCore/dom/Element.cpp
@@ -703,6 +703,8 @@ void Element::updateAfterAttributeChanged(Attribute* attr)
         document()->axObjectCache()->handleAriaExpandedChange(renderer());
     else if (attrName == aria_hiddenAttr)
         document()->axObjectCache()->childrenChanged(renderer());
+    else if (attrName == aria_invalidAttr)
+        document()->axObjectCache()->postNotification(renderer(), AXObjectCache::AXInvalidStatusChanged, true);
 }
     
 void Element::recalcStyleIfNeededAfterAttributeChanged(Attribute* attr)
diff --git a/WebCore/html/HTMLAttributeNames.in b/WebCore/html/HTMLAttributeNames.in
index e3ac153..089b280 100644
--- a/WebCore/html/HTMLAttributeNames.in
+++ b/WebCore/html/HTMLAttributeNames.in
@@ -26,6 +26,7 @@ aria-grabbed
 aria-haspopup
 aria-help
 aria-hidden
+aria-invalid
 aria-label
 aria-labeledby
 aria-labelledby

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list