| Index: java/org/chromium/distiller/webdocument/WebTag.java
 | 
| diff --git a/java/org/chromium/distiller/webdocument/WebTag.java b/java/org/chromium/distiller/webdocument/WebTag.java
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..ecf6e70c2d493a35e58f58bfb57ee72eb74860fd
 | 
| --- /dev/null
 | 
| +++ b/java/org/chromium/distiller/webdocument/WebTag.java
 | 
| @@ -0,0 +1,50 @@
 | 
| +package org.chromium.distiller.webdocument;
 | 
| +
 | 
| +import java.util.HashSet;
 | 
| +import java.util.Set;
 | 
| +
 | 
| +/**
 | 
| + * This class represents HTML tags that need to be preserved over
 | 
| + * the distillation process.
 | 
| + */
 | 
| +public class WebTag extends WebElement {
 | 
| +    private String tagName;
 | 
| +    private TagType tagType;
 | 
| +
 | 
| +    public enum TagType {
 | 
| +        START, END
 | 
| +    }
 | 
| +
 | 
| +    private static Set<String> nestingTags;
 | 
| +    static {
 | 
| +        nestingTags = new HashSet<String>();
 | 
| +        nestingTags.add("UL");
 | 
| +        nestingTags.add("OL");
 | 
| +        nestingTags.add("LI");
 | 
| +    }
 | 
| +
 | 
| +    public WebTag(String tagName, TagType tagType) {
 | 
| +        this.tagName = tagName;
 | 
| +        this.tagType = tagType;
 | 
| +    }
 | 
| +
 | 
| +    public boolean isStartTag() {
 | 
| +        return tagType == TagType.START;
 | 
| +    }
 | 
| +
 | 
| +    public String getTagName() {
 | 
| +        return tagName;
 | 
| +    }
 | 
| +
 | 
| +    @Override
 | 
| +    public String generateOutput(boolean textOnly) {
 | 
| +        if (textOnly) {
 | 
| +            return "";
 | 
| +        }
 | 
| +        return "<" + (isStartTag() ? "" : "/") + tagName + ">";
 | 
| +    }
 | 
| +
 | 
| +    public static boolean canBeNested(String tagName) {
 | 
| +        return nestingTags.contains(tagName);
 | 
| +    }
 | 
| +}
 | 
| 
 |