r868 - in trunk: tests ui

r868 - in trunk: tests ui

Author: david.bolter
Date: Wed Nov 5 11:43:21 2008
New Revision: 868
Modified:
trunk/tests/progressbar.js
trunk/ui/ui.core.js
trunk/ui/ui.dialog.js
trunk/ui/ui.progressbar.js
Log:
Tweaking attr to normalize for FF2 ARIA implementation. Removed ariaRole
and ariaState API. (Assist: Scott González, Fixes #3529)
Modified: trunk/tests/progressbar.js
==============================================================================
--- trunk/tests/progressbar.js    (original)
+++ trunk/tests/progressbar.js    Wed Nov 5 11:43:21 2008
@@ -56,16 +56,16 @@
    expect(7);
    el = $("#progressbar").progressbar();
-    equals(el.ariaRole(), "progressbar", "aria role");
-    equals(el.ariaState("valuemin"), 0, "aria-valuemin");
-    equals(el.ariaState("valuemax"), 100, "aria-valuemax");
-    equals(el.ariaState("valuenow"), 0, "aria-valuenow initially");
+    equals(el.attr("role"), "progressbar", "aria role");
+    equals(el.attr("aria-valuemin"), 0, "aria-valuemin");
+    equals(el.attr("aria-valuemax"), 100, "aria-valuemax");
+    equals(el.attr("aria-valuenow"), 0, "aria-valuenow initially");
    el.progressbar("progress", 77);
-    equals(el.ariaState("valuenow"), 77, "aria-valuenow");
+    equals(el.attr("aria-valuenow"), 77, "aria-valuenow");
    el.progressbar("disable");
-    equals(el.ariaState("disabled"), "true", "aria-disabled");
+    equals(el.attr("aria-disabled"), "true", "aria-disabled");
    el.progressbar("enable");
-    equals(el.ariaState("disabled"), "false", "enabled");
+    equals(el.attr("aria-disabled"), "false", "enabled");
});
})(jQuery);
Modified: trunk/ui/ui.core.js
==============================================================================
--- trunk/ui/ui.core.js    (original)
+++ trunk/ui/ui.core.js    Wed Nov 5 11:43:21 2008
@@ -108,6 +108,27 @@
    }
};
+// WAI-ARIA normalization
+// tweak $.attr for FF2 implementation
+if (isFF2){
+
+var attr = $.attr;
+$.attr = function(elem, name, value) {
+    var set = value !== undefined,
+        state = /^aria-/;
+    
+    return (name == 'role'
+        ? (set
+            ? attr.call(this, elem, name, "wairole:" + value)
+            : (attr.apply(this, arguments) || "").replace(/^wairole:/, ""))
+        : (state.test(name)
+            ? (set
+                ? elem.setAttributeNS("http://www.w3.org/2005/07/aaa",
name.replace(state, "aaa:"), value)
+                : attr.call(this, elem, name.replace(state, "aaa:")))
+            : attr.apply(this,arguments)));
+};
+
+}
//jQuery plugins
$.fn.extend({
@@ -133,32 +154,6 @@
            .attr('unselectable', 'on')
            .css('MozUserSelect', 'none')
            .bind('selectstart.ui', function() { return false; });
-    },
-    
-    // WAI-ARIA Semantics
-    ariaRole: function(role) {
-        return (role !== undefined
-            
-            // setter
-            ? this.attr("role", isFF2 ? "wairole:" + role : role)
-            
-            // getter
-            : (this.attr("role") || "").replace(/^wairole:/, ""));
-    },
-    
-    ariaState: function(state, value) {
-        return (value !== undefined
-            
-            // setter
-            ? this.each(function(i, el) {
-                (isFF2
-                    ? el.setAttributeNS("http://www.w3.org/2005/07/aaa",
-                        "aaa:" + state, value)
-                    : $(el).attr("aria-" + state, value));
-            })
-            
-            // getter
-            : this.attr(isFF2 ? "aaa:" + state : "aria-" + state));
    }
    
});
Modified: trunk/ui/ui.dialog.js
==============================================================================
--- trunk/ui/ui.dialog.js    (original)
+++ trunk/ui/ui.dialog.js    Wed Nov 5 11:43:21 2008
@@ -83,8 +83,8 @@
                    (options.closeOnEscape && ev.keyCode
                        && ev.keyCode == $.keyCode.ESCAPE && self.close());
                })
-                .ariaRole("dialog")
-                .ariaState("labelledby", titleId)
+                .attr("role","dialog")
+                .attr("aria-labelledby", titleId)
                .mouseup(function() {
                    self.moveToTop();
                }),
Modified: trunk/ui/ui.progressbar.js
==============================================================================
--- trunk/ui/ui.progressbar.js    (original)
+++ trunk/ui/ui.progressbar.js    Wed Nov 5 11:43:21 2008
@@ -25,10 +25,10 @@
        this.element
            .addClass("ui-progressbar")
            .width(options.width)
-            .ariaRole("progressbar")
-            .ariaState("valuemin","0")
-            .ariaState("valuemax","100")
-            .ariaState("valuenow","0");
+            .attr("role","progressbar")
+            .attr("aria-valuemin","0")
+            .attr("aria-valuemax","100")
+            .attr("aria-valuenow","0");
            
        $.extend(this, {
            active: false,
@@ -103,13 +103,13 @@
    disable: function() {
        this.element.addClass("ui-progressbar-disabled");
        this.disabled = true;
-        this.element.ariaState("disabled", true);
+        this.element.attr("aria-disabled", true);
    },
    
    enable: function() {
        this.element.removeClass("ui-progressbar-disabled");
        this.disabled = false;
-        this.element.ariaState("disabled", false);
+        this.element.attr("aria-disabled", false);
    },
    
    pause: function() {
@@ -132,7 +132,7 @@
        if (this.options.range && !this.options.text) {
            this.textElement.html(percent + '%');
        }
-        this.element.ariaState("valuenow", percent);
+        this.element.attr("aria-valuenow", percent);
        this._propagate('progress', this.ui());
    },