Ticket #3529: 3529.diff

File 3529.diff, 4.4 KB (added by davidb, 22 months ago)

fix (passes tests, and AccExplorer? is happy with FF2)

  • tests/progressbar.js

     
    5656        expect(7); 
    5757        el = $("#progressbar").progressbar(); 
    5858 
    59         equals(el.ariaRole(), "progressbar", "aria role"); 
    60         equals(el.ariaState("valuemin"), 0, "aria-valuemin"); 
    61         equals(el.ariaState("valuemax"), 100, "aria-valuemax"); 
    62         equals(el.ariaState("valuenow"), 0, "aria-valuenow initially"); 
     59        equals(el.attr("role"), "progressbar", "aria role"); 
     60        equals(el.attr("aria-valuemin"), 0, "aria-valuemin"); 
     61        equals(el.attr("aria-valuemax"), 100, "aria-valuemax"); 
     62        equals(el.attr("aria-valuenow"), 0, "aria-valuenow initially"); 
    6363        el.progressbar("progress", 77); 
    64         equals(el.ariaState("valuenow"), 77, "aria-valuenow"); 
     64        equals(el.attr("aria-valuenow"), 77, "aria-valuenow"); 
    6565        el.progressbar("disable"); 
    66         equals(el.ariaState("disabled"), "true", "aria-disabled"); 
     66        equals(el.attr("aria-disabled"), "true", "aria-disabled"); 
    6767        el.progressbar("enable"); 
    68         equals(el.ariaState("disabled"), "false", "enabled"); 
     68        equals(el.attr("aria-disabled"), "false", "enabled"); 
    6969}); 
    7070 
    7171})(jQuery); 
  • ui/ui.core.js

     
    108108        } 
    109109}; 
    110110 
     111// WAI-ARIA normalization 
     112// tweak $.attr for FF2 implementation 
     113if (isFF2){ 
    111114 
     115var attr = $.attr; 
     116$.attr = function(elem, name, value){ 
     117        return (name == 'role'? 
     118                ((value !== undefined)? 
     119                        attr.call(this, elem, name, "wairole:"+value) 
     120                        : (attr.apply(this, arguments) || "").replace(/^wairole:/, "")) 
     121                 
     122                :((/aria-/.test(name))? 
     123                        ((value !== undefined)? 
     124                                elem.setAttributeNS("http://www.w3.org/2005/07/aaa", name.replace(/^aria-/,"aaa:"), value) 
     125                                : attr.call(this, elem, name.replace(/^aria-/,"aaa:"))) 
     126                        : attr.apply(this,arguments)) 
     127         
     128    ); 
     129}; 
     130 
     131} 
     132 
    112133//jQuery plugins 
    113134$.fn.extend({ 
    114135         
     
    133154                        .attr('unselectable', 'on') 
    134155                        .css('MozUserSelect', 'none') 
    135156                        .bind('selectstart.ui', function() { return false; }); 
    136         }, 
    137          
    138         // WAI-ARIA Semantics 
    139         ariaRole: function(role) { 
    140                 return (role !== undefined 
    141                          
    142                         // setter 
    143                         ? this.attr("role", isFF2 ? "wairole:" + role : role) 
    144                          
    145                         // getter 
    146                         : (this.attr("role") || "").replace(/^wairole:/, "")); 
    147         }, 
    148          
    149         ariaState: function(state, value) { 
    150                 return (value !== undefined 
    151                          
    152                         // setter 
    153                         ? this.each(function(i, el) { 
    154                                 (isFF2 
    155                                         ? el.setAttributeNS("http://www.w3.org/2005/07/aaa", 
    156                                                 "aaa:" + state, value) 
    157                                         : $(el).attr("aria-" + state, value)); 
    158                         }) 
    159                          
    160                         // getter 
    161                         : this.attr(isFF2 ? "aaa:" + state : "aria-" + state)); 
    162157        } 
    163158         
    164159}); 
  • ui/ui.progressbar.js

     
    2525                this.element 
    2626                        .addClass("ui-progressbar") 
    2727                        .width(options.width) 
    28                         .ariaRole("progressbar") 
    29                         .ariaState("valuemin","0") 
    30                         .ariaState("valuemax","100") 
    31                         .ariaState("valuenow","0"); 
     28                        .attr("role","progressbar") 
     29                        .attr("aria-valuemin","0") 
     30                        .attr("aria-valuemax","100") 
     31                        .attr("aria-valuenow","0"); 
    3232                         
    3333                $.extend(this, { 
    3434                        active: false, 
     
    103103        disable: function() { 
    104104                this.element.addClass("ui-progressbar-disabled"); 
    105105                this.disabled = true; 
    106                 this.element.ariaState("disabled", true); 
     106                this.element.attr("aria-disabled", true); 
    107107        }, 
    108108         
    109109        enable: function() { 
    110110                this.element.removeClass("ui-progressbar-disabled"); 
    111111                this.disabled = false; 
    112                 this.element.ariaState("disabled", false); 
     112                this.element.attr("aria-disabled", false); 
    113113        }, 
    114114         
    115115        pause: function() { 
     
    132132                if (this.options.range && !this.options.text) { 
    133133                        this.textElement.html(percent + '%'); 
    134134                } 
    135                 this.element.ariaState("valuenow", percent); 
     135                this.element.attr("aria-valuenow", percent); 
    136136                this._propagate('progress', this.ui()); 
    137137        }, 
    138138         
  • ui/ui.dialog.js

     
    8383                                        (options.closeOnEscape && ev.keyCode 
    8484                                                && ev.keyCode == $.keyCode.ESCAPE && self.close()); 
    8585                                }) 
    86                                 .ariaRole("dialog") 
    87                                 .ariaState("labelledby", titleId) 
     86                                .attr("role","dialog") 
     87                                .attr("aria-labelledby", titleId) 
    8888                                .mouseup(function() { 
    8989                                        self.moveToTop(); 
    9090                                }),