Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (c) 2013 Mozilla Foundation
   *
   * Permission is hereby granted, free of charge, to any person obtaining a
   * copy of this software and associated documentation files (the "Software"),
   * to deal in the Software without restriction, including without limitation
   * the rights to use, copy, modify, merge, publish, distribute, sublicense,
   * and/or sell copies of the Software, and to permit persons to whom the
   * Software is furnished to do so, subject to the following conditions:
  *
  * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
  *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  * DEALINGS IN THE SOFTWARE.
  */
 
 package nu.validator.xml.roleattributes;
 
 
 
 import java.util.List;
 
         ContentHandler {
 
     private final ContentHandler delegate;
 
     private final ErrorHandler errorHandler;
 
     private Locator locator = null;

    

Parameters:
delegate
 
             ErrorHandler errorHandler) {
         this. = delegate;
         this. = errorHandler;
     }

    
 
     public void characters(char[] arg0int arg1int arg2throws SAXException {
         .characters(arg0arg1arg2);
     }

    
 
     public void endDocument() throws SAXException {
         .endDocument();
     }

    
 
     public void endElement(String arg0String arg1String arg2)
             throws SAXException {
         .endElement(arg0arg1arg2);
     }

    
 
     public void endPrefixMapping(String arg0throws SAXException {
         .endPrefixMapping(arg0);
     }

    
    public void ignorableWhitespace(char[] arg0int arg1int arg2)
            throws SAXException {
        .ignorableWhitespace(arg0arg1arg2);
    }

    
    public void processingInstruction(String arg0String arg1)
            throws SAXException {
        .processingInstruction(arg0arg1);
    }

    
    public void setDocumentLocator(Locator arg0) {
         = arg0;
        .setDocumentLocator(arg0);
    }

    
    public void skippedEntity(String arg0throws SAXException {
        .skippedEntity(arg0);
    }

    
    public void startDocument() throws SAXException {
        .startDocument();
    }

    
    public void startElement(String nsString arg1String arg2,
            Attributes attributesthrows SAXException {
        if ("http://www.w3.org/1999/xhtml" == ns) {
            .startElement(nsarg1arg2filterAttributes(attributes));
        } else {
            .startElement(nsarg1arg2attributes);
        }
    }
    private static String[] nonAbstractAriaRoles = { "alert""alertdialog",
            "application""article""banner""button""checkbox",
            "columnheader""combobox""complementary""contentinfo",
            "definition""dialog""directory""document""form""grid",
            "gridcell""group""heading""img""link""list""listbox",
            "listitem""log""main""marquee""math""menu""menubar",
            "menuitem""menuitemcheckbox""menuitemradio""navigation",
            "note""option""presentation""progressbar""radio",
            "radiogroup""region""row""rowgroup""rowheader",
            "scrollbar""search""separator""slider""spinbutton",
            "status""tab""tablist""tabpanel""textbox""timer",
            "toolbar""tooltip""tree""treegrid""treeitem" };
    private Attributes filterAttributes(Attributes attributes)
            throws SAXException {
        AttributesImpl attributesImpl = new AttributesImpl();
        for (int i = 0; i < attributes.getLength(); i++) {
            if ("role".equals(attributes.getLocalName(i))
                    && "".equals(attributes.getURI(i))) {
                attributesImpl.addAttribute(
                        attributes.getURI(i),
                        attributes.getLocalName(i),
                        attributes.getQName(i),
                        attributes.getType(i),
                        getFirstMatchingAriaRoleFromTokenList(attributes.getValue(i)));
            } else {
                attributesImpl.addAttribute(attributes.getURI(i),
                        attributes.getLocalName(i), attributes.getQName(i),
                        attributes.getType(i), attributes.getValue(i));
            }
        }
        return attributesImpl;
    }
            throws SAXException {
        if (tokenList == null || "".equals(tokenList)) {
            return "";
        }
        int len = tokenList.length();
        List<Stringtokens = new LinkedList<String>();
        boolean collectingSpace = true;
        int start = 0;
        for (int i = 0; i < leni++) {
            char c = tokenList.charAt(i);
            if (c == ' ' || c == '\t' || c == '\n' || c == '\r') {
                if (!collectingSpace) {
                    tokens.add(tokenList.substring(starti));
                    collectingSpace = true;
                }
            } else {
                if (collectingSpace) {
                    start = i;
                    collectingSpace = false;
                }
            }
        }
        if (start < len) {
            tokens.add(tokenList.substring(startlen));
        }
        String roleValue = null;
        List<StringunrecognizedTokens = new LinkedList<String>();
        List<StringsuperfluousTokens = new LinkedList<String>();
        for (String token : tokens) {
            if (Arrays.binarySearch(token) < 0) {
                unrecognizedTokens.add(token);
            } else if (roleValue == null) {
                roleValue = token;
            } else {
                superfluousTokens.add(token);
            }
        }
        if ( != null && roleValue != null
                && unrecognizedTokens.size() > 0) {
            .error(new SAXParseException("Discarding unrecognized"
                    + renderTokenList(unrecognizedTokens)
                    + " from value of attribute \u201Crole\u201D."
                    + " Browsers ignore any token that is not a"
                    + " defined ARIA non-abstract role."));
        }
        if ( != null && roleValue != null
                && superfluousTokens.size() > 0) {
            .error(new SAXParseException("Discarding superfluous"
                    + renderTokenList(superfluousTokens)
                    + " from value of attribute \u201Crole\u201D."
                    + " Browsers only process the first token found that is a"
                    + " defined ARIA non-abstract role."));
        }
        return roleValue != null ? roleValue : tokenList;
    }
    private CharSequence renderTokenList(List<Stringtokens) {
        boolean first = true;
        StringBuilder sb = new StringBuilder();
        if (tokens.size() > 1) {
            sb.append(" tokens ");
        } else {
            sb.append(" token ");
        }
        for (String token : tokens) {
            if (first) {
                first = false;
            } else {
                sb.append(", ");
            }
            sb.append("\u201C");
            sb.append(token);
            sb.append('\u201D');
        }
        return sb;
    }

    
    public void startPrefixMapping(String arg0String arg1)
            throws SAXException {
        .startPrefixMapping(arg0arg1);
    }
New to GrepCode? Check out our FAQ X