Author: johnh
Date: Tue Aug 19 18:16:32 2008
New Revision: 687215
URL: http://svn.apache.org/viewvc?rev=687215&view=rev
Log:
Renaming parsed node creation helpers, and making them public static for reuse.
Adding "script" as another type of
element that's not supported in short-form.
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlNode.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/GadgetHtmlNodeTest.java
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlNode.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlNode.java?rev=687215&r1=687214&r2=687215&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlNode.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlNode.java
Tue Aug 19 18:16:32 2008
@@ -290,7 +290,8 @@
* the rest of the class provides, such as attribute key
* validation. All whitespace and comments are maintained. Nodes
* with zero children are rendered short-form (<foo/>)
- * unless tagName is "style" since many browsers dislike short-form for that.
+ * unless tagName is "style" or "script" since many browsers dislike
short-form
+ * for those.
* One space is provided between attributes. Attribute values are surrounded
* in double-quotes. Null-valued attributes are rendered without ="value".
* Attributes are rendered in no particular order.
@@ -310,7 +311,8 @@
}
}
if (children.size() == 0 &&
- !tagName.equalsIgnoreCase("style")) {
+ !tagName.equalsIgnoreCase("style") &&
+ !tagName.equalsIgnoreCase("script")) {
w.append("/>");
} else {
w.append('>');
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/GadgetHtmlNodeTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/GadgetHtmlNodeTest.java?rev=687215&r1=687214&r2=687215&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/GadgetHtmlNodeTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/GadgetHtmlNodeTest.java
Tue Aug 19 18:16:32 2008
@@ -31,7 +31,7 @@
import java.util.Set;
public class GadgetHtmlNodeTest extends TestCase {
- private ParsedHtmlAttribute makeParsedAttribute(String key, String val) {
+ public static ParsedHtmlAttribute makeParsedAttribute(String key, String
val) {
ParsedHtmlAttribute parsed =
EasyMock.createNiceMock(ParsedHtmlAttribute.class);
expect(parsed.getName()).andReturn(key).anyTimes();
expect(parsed.getValue()).andReturn(val).anyTimes();
@@ -39,7 +39,7 @@
return parsed;
}
- private ParsedHtmlNode makeTagNodeFromParsed(
+ public static ParsedHtmlNode makeParsedTagNode(
String tag, String[][] attribs, ParsedHtmlNode[] children) {
ParsedHtmlNode parsed = EasyMock.createNiceMock(ParsedHtmlNode.class);
expect(parsed.getTagName()).andReturn(tag).anyTimes();
@@ -62,6 +62,16 @@
return parsed;
}
+ public static ParsedHtmlNode makeParsedTextNode(String text) {
+ ParsedHtmlNode parsed = EasyMock.createNiceMock(ParsedHtmlNode.class);
+ expect(parsed.getText()).andReturn(text).anyTimes();
+ expect(parsed.getTagName()).andReturn(null).anyTimes();
+ expect(parsed.getAttributes()).andReturn(null).anyTimes();
+ expect(parsed.getChildren()).andReturn(null).anyTimes();
+ replay(parsed);
+ return parsed;
+ }
+
private GadgetHtmlNode makeTagNodeFromNew(
String tag, String[][] attribs, GadgetHtmlNode[] children) {
GadgetHtmlNode node = new GadgetHtmlNode(tag, attribs);
@@ -73,16 +83,6 @@
return node;
}
- private ParsedHtmlNode makeTextNodeFromParsed(String text) {
- ParsedHtmlNode parsed = EasyMock.createNiceMock(ParsedHtmlNode.class);
- expect(parsed.getText()).andReturn(text).anyTimes();
- expect(parsed.getTagName()).andReturn(null).anyTimes();
- expect(parsed.getAttributes()).andReturn(null).anyTimes();
- expect(parsed.getChildren()).andReturn(null).anyTimes();
- replay(parsed);
- return parsed;
- }
-
private GadgetHtmlNode makeTextNodeFromNew(String text) {
return new GadgetHtmlNode(text);
}
@@ -91,10 +91,10 @@
private static String[][] tagTreeAttribs = { { "id", "foo" }, { "name",
"bar" } };
public void testTagTreeCreatedFromParsedGetters() {
ParsedHtmlNode[] parsedKids = {
- makeTextNodeFromParsed("content"),
- makeTagNodeFromParsed("span", null, null)
+ makeParsedTextNode("content"),
+ makeParsedTagNode("span", null, null)
};
- ParsedHtmlNode parsed = makeTagNodeFromParsed("div", tagTreeAttribs,
parsedKids);
+ ParsedHtmlNode parsed = makeParsedTagNode("div", tagTreeAttribs,
parsedKids);
GadgetHtmlNode node = new GadgetHtmlNode(parsed);
validateTagTreeGetters(node);
}
@@ -143,7 +143,7 @@
// Test: basic getters
private static String textGetterContent = "content";
public void testTextCreatedFromParsedGetters() {
- ParsedHtmlNode parsed = makeTextNodeFromParsed(textGetterContent);
+ ParsedHtmlNode parsed = makeParsedTextNode(textGetterContent);
GadgetHtmlNode node = new GadgetHtmlNode(parsed);
validateTextGetters(node);
}
@@ -160,7 +160,7 @@
// Test: tag name setter
public void testTagCreatedFromParsedTagSetter() {
- ParsedHtmlNode parsed = makeTagNodeFromParsed("div", null, null);
+ ParsedHtmlNode parsed = makeParsedTagNode("div", null, null);
GadgetHtmlNode node = new GadgetHtmlNode(parsed);
validateTagNameSetter(node);
}
@@ -180,7 +180,7 @@
private static String[][] tagManipAttribs = { { "id", "foo" } };
public void testTagCreatedFromParsedAttributeManipulation() {
ParsedHtmlNode parsed =
- makeTagNodeFromParsed("div", tagManipAttribs, null);
+ makeParsedTagNode("div", tagManipAttribs, null);
GadgetHtmlNode node = new GadgetHtmlNode(parsed);
validateTagAttributeManipulation(node);
}
@@ -242,8 +242,8 @@
// We don't do created-from-new testing since html node creation types are
// already mixed here.
public void testTagCreatedFromParsedNodeManipulation() {
- ParsedHtmlNode[] kidNodes = { makeTextNodeFromParsed("content") };
- ParsedHtmlNode parsed = makeTagNodeFromParsed("div", null, kidNodes);
+ ParsedHtmlNode[] kidNodes = { makeParsedTextNode("content") };
+ ParsedHtmlNode parsed = makeParsedTagNode("div", null, kidNodes);
GadgetHtmlNode parentNode = new GadgetHtmlNode(parsed);
// Sanity check on created child
@@ -255,7 +255,7 @@
assertSame(parentNode, textNode.getParentNode());
// appendChild
- GadgetHtmlNode afterNode = new
GadgetHtmlNode(makeTagNodeFromParsed("after", null, null));
+ GadgetHtmlNode afterNode = new GadgetHtmlNode(makeParsedTagNode("after",
null, null));
parentNode.appendChild(afterNode);
List<GadgetHtmlNode> appendKids = parentNode.getChildren();
assertNotNull(appendKids);
@@ -266,7 +266,7 @@
assertSame(parentNode, afterNode.getParentNode());
// insertBefore
- GadgetHtmlNode beforeNode = new
GadgetHtmlNode(makeTagNodeFromParsed("before", null, null));
+ GadgetHtmlNode beforeNode = new GadgetHtmlNode(makeParsedTagNode("before",
null, null));
parentNode.insertBefore(beforeNode, textNode);
List<GadgetHtmlNode> insertKids = parentNode.getChildren();
assertNotNull(insertKids);
@@ -300,7 +300,7 @@
// Test: text setter
public void testTextCreatedFromParsedTextSetter() {
- ParsedHtmlNode parsed = makeTextNodeFromParsed("content");
+ ParsedHtmlNode parsed = makeParsedTextNode("content");
GadgetHtmlNode node = new GadgetHtmlNode(parsed);
validateTextSetter(node);
}
@@ -319,7 +319,7 @@
// Test: text-node API limitation
public void testTagsFromParsedCantUseTextApis() {
validateTagsCantUseTextApis(
- new GadgetHtmlNode(makeTagNodeFromParsed("tag", null, null)));
+ new GadgetHtmlNode(makeParsedTagNode("tag", null, null)));
}
public void testTagsFromNewCantUseTextApis() {
@@ -346,7 +346,7 @@
// Test: tag-node API limitation
public void testTextFromParsedCantUseTagsApis() {
- validateTextCantUseTagsApis(new
GadgetHtmlNode(makeTextNodeFromParsed("content")));
+ validateTextCantUseTagsApis(new
GadgetHtmlNode(makeParsedTextNode("content")));
}
public void testTextFromNewCantUseTagsApis() {
@@ -459,6 +459,13 @@
renderNode(styleTag));
}
+ public void testRenderScriptSrcTag() {
+ String[][] attribs = { { "src", "http://www.foo.com/bar.js" } };
+ GadgetHtmlNode styleTag = new GadgetHtmlNode("script", attribs);
+ assertEquals("<script src=\"http://www.foo.com/bar.js\"></script>",
+ renderNode(styleTag));
+ }
+
public void testRenderEscapedAttribute() {
String[][] attribs = { { "foo", "<script&\"data\">" } };
GadgetHtmlNode escapedTag = new GadgetHtmlNode("div", attribs);