import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Attribute;
-import org.jsoup.nodes.BooleanAttribute;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.nodes.TextNode;
import com.vaadin.ui.declarative.ShouldWriteDataDelegate;
public abstract class DeclarativeTestBaseBase<T extends Component> {
+ private static final String[] booleanAttributes = { "allowfullscreen",
+ "async", "autofocus", "checked", "compact", "declare", "default",
+ "defer", "disabled", "formnovalidate", "hidden", "inert", "ismap",
+ "itemscope", "multiple", "muted", "nohref", "noresize", "noshade",
+ "novalidate", "nowrap", "open", "readonly", "required", "reversed",
+ "seamless", "selected", "sortable", "truespeed", "typemustmatch" };
+
private static final class AlwaysWriteDelegate
implements ShouldWriteDataDelegate {
private static final long serialVersionUID = -6345914431997793599L;
List<String> names = new ArrayList<>();
for (Attribute a : producedElem.attributes().asList()) {
names.add(a.getKey());
- if (a instanceof BooleanAttribute) {
+ if (isBooleanAttribute(a.getKey())) {
booleanAttributes.add(a.getKey());
}
}
return sb.toString();
}
+ /**
+ * Checks if this attribute name is defined as a boolean attribute in HTML5
+ */
+ protected static boolean isBooleanAttribute(final String key) {
+ return Arrays.binarySearch(booleanAttributes, key) >= 0;
+ }
+
protected String stripOptionTags(String design) {
return design.replaceAll("[ \n]*<option(.*)</option>[ \n]*", "");
private Document componentToDoc(DesignContext dc) {
// Create the html tree skeleton.
Document doc = new Document("");
- DocumentType docType = new DocumentType("html", "", "", "");
+ DocumentType docType = new DocumentType("html", "", "");
doc.appendChild(docType);
Element html = doc.createElement("html");
doc.appendChild(html);
public void testParsing() {
// create an html document
Document doc = new Document("");
- DocumentType docType = new DocumentType("html", "", "", "");
+ DocumentType docType = new DocumentType("html", "", "");
doc.appendChild(docType);
Element html = doc.createElement("html");
doc.appendChild(html);