org.whattf.checker.UnsupportedFeatureChecker Maven / Gradle / Ivy
The newest version!
package org.whattf.checker;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
public class UnsupportedFeatureChecker extends Checker {
/**
* @see org.whattf.checker.Checker#startElement(java.lang.String,
* java.lang.String, java.lang.String, org.xml.sax.Attributes)
*/
@Override public void startElement(String uri, String localName,
String qName, Attributes atts) throws SAXException {
boolean w3cBranding = "1".equals(System.getProperty("nu.validator.servlet.w3cbranding")) ? true
: false;
if ("http://www.w3.org/1999/xhtml" != uri) {
return;
}
if (atts.getIndex("", "contextmenu") > -1) {
warn("The \u201Ccontextmenu\u201D attribute is not supported by browsers yet. It would probably be better to wait for implementations.");
}
if (atts.getIndex("", "dropzone") > -1) {
warn("The \u201Cdropzone\u201D attribute is not supported by browsers yet. It would probably be better to wait for implementations.");
}
if ("menu" == localName) {
warn("The \u201Cmenu\u201D element is not supported by browsers yet. It would probably be better to wait for implementations.");
} else if ("dialog" == localName) {
warn("The \u201Cdialog\u201D element is not supported by browsers yet. It would probably be better to wait for implementations.");
} else if ("details" == localName) {
warn("The \u201Cdetails\u201D element is not supported properly by browsers yet. It would probably be better to wait for implementations.");
} else if ("track" == localName) {
warn("The \u201Ctrack\u201D element is not supported by browsers yet. It would probably be better to wait for implementations.");
} else if ("bdi" == localName) {
warn("The \u201Cbdi\u201D element is not supported by browsers yet.");
} else if ("a" == localName) {
if (atts.getIndex("", "ping") > -1 && !w3cBranding) {
warn("The \u201Cping\u201D attribute on the \u201Ca\u201D element is not supported by browsers yet.");
}
} else if ("area" == localName) {
if (atts.getIndex("", "ping") > -1 && !w3cBranding) {
warn("The \u201Cping\u201D attribute on the \u201Carea\u201D element is not supported by browsers yet.");
}
} else if ("video" == localName) {
if (atts.getIndex("", "crossorigin") > -1) {
warn("The \u201Ccrossorigin\u201D attribute on the \u201Cvideo\u201D element is not supported by browsers yet. It would probably be better to wait for implementations.");
}
if (atts.getIndex("", "mediagroup") > -1) {
warn("The \u201Cmediagroup\u201D attribute on the \u201Cvideo\u201D element is not supported by browsers yet. It would probably be better to wait for implementations.");
}
} else if ("audio" == localName) {
if (atts.getIndex("", "crossorigin") > -1) {
warn("The \u201Ccrossorigin\u201D attribute on the \u201Caudio\u201D element is not supported by browsers yet. It would probably be better to wait for implementations.");
}
if (atts.getIndex("", "mediagroup") > -1) {
warn("The \u201Cmediagroup\u201D attribute on the \u201Caudio\u201D element is not supported by browsers yet. It would probably be better to wait for implementations.");
}
} else if ("img" == localName) {
if (atts.getIndex("", "crossorigin") > -1) {
warn("The \u201Ccrossorigin\u201D attribute on the \u201Cimg\u201D element is not supported by browsers yet. It would probably be better to wait for implementations.");
}
} else if ("iframe" == localName) {
if (atts.getIndex("", "seamless") > -1) {
warn("The \u201Cseamless\u201D attribute on the \u201Ciframe\u201D element is not supported by browsers yet. It would probably be better to wait for implementations.");
}
} else if ("textarea" == localName) {
if (atts.getIndex("", "dirname") > -1) {
warn("The \u201Cdirname\u201D attribute on the \u201Ctextarea\u201D element is not supported by browsers yet.");
}
} else if ("input" == localName) {
if (atts.getIndex("", "dirname") > -1) {
warn("The \u201Cdirname\u201D attribute on the \u201Cinput\u201D element is not supported by browsers yet.");
}
String type = atts.getValue("", "type");
if (AttributeUtil.lowerCaseLiteralEqualsIgnoreAsciiCaseString("datetime", type)) {
warn("The \u201Cdatetime\u201D input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.");
} else if (AttributeUtil.lowerCaseLiteralEqualsIgnoreAsciiCaseString("date", type)) {
warn("The \u201Cdate\u201D input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.");
} else if (AttributeUtil.lowerCaseLiteralEqualsIgnoreAsciiCaseString("month", type)) {
warn("The \u201Cmonth\u201D input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.");
} else if (AttributeUtil.lowerCaseLiteralEqualsIgnoreAsciiCaseString("week", type)) {
warn("The \u201Cweek\u201D input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.");
} else if (AttributeUtil.lowerCaseLiteralEqualsIgnoreAsciiCaseString("time", type)) {
warn("The \u201Ctime\u201D input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.");
} else if (AttributeUtil.lowerCaseLiteralEqualsIgnoreAsciiCaseString("datetime-local", type)) {
warn("The \u201Cdatetime-local\u201D input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.");
} else if (AttributeUtil.lowerCaseLiteralEqualsIgnoreAsciiCaseString("color", type)) {
warn("The \u201Ccolor\u201D input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.");
}
}
}
}