Updated Branches:
  refs/heads/master 7ca927c17 -> f97fb9c8b

WICKET-4348
Add a method to IHeaderResponse to create IE conditional commented link to 
JavaScript resource


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/f97fb9c8
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/f97fb9c8
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/f97fb9c8

Branch: refs/heads/master
Commit: f97fb9c8b39b7966349e4fc502fded399c80a3b7
Parents: b6db499
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Mon Jan 30 16:02:55 2012 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Mon Jan 30 16:02:55 2012 +0200

----------------------------------------------------------------------
 .../wicket/markup/head/CssContentHeaderItem.java   |   17 ++-
 .../apache/wicket/markup/head/CssHeaderItem.java   |   45 ++++++-
 .../wicket/markup/head/CssReferenceHeaderItem.java |   13 +--
 .../markup/head/CssUrlReferenceHeaderItem.java     |   11 +--
 .../markup/head/JavaScriptContentHeaderItem.java   |   18 +++-
 .../wicket/markup/head/JavaScriptHeaderItem.java   |  107 ++++++++++++++-
 .../markup/head/JavaScriptReferenceHeaderItem.java |    5 +-
 .../head/JavaScriptUrlReferenceHeaderItem.java     |    7 +-
 .../markup/html/internal/HeaderResponseTest.java   |   73 ++++++++++-
 9 files changed, 259 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/f97fb9c8/wicket-core/src/main/java/org/apache/wicket/markup/head/CssContentHeaderItem.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/CssContentHeaderItem.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/CssContentHeaderItem.java
index 4ef6542..47d44d4 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/CssContentHeaderItem.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/CssContentHeaderItem.java
@@ -42,8 +42,9 @@ public class CssContentHeaderItem extends CssHeaderItem
         *            unique id for the &lt;style&gt; element. This can be 
<code>null</code>, however in
         *            that case the ajax header contribution can't detect 
duplicate CSS fragments.
         */
-       public CssContentHeaderItem(CharSequence css, String id)
+       public CssContentHeaderItem(CharSequence css, String id, String 
condition)
        {
+               super(condition);
                this.css = css;
                this.id = id;
        }
@@ -67,7 +68,21 @@ public class CssContentHeaderItem extends CssHeaderItem
        @Override
        public void render(Response response)
        {
+               boolean hasCondition = Strings.isEmpty(getCondition()) == false;
+               if (hasCondition)
+               {
+                       response.write("<!--[if ");
+                       response.write(getCondition());
+                       response.write("]>");
+               }
+
                CssUtils.writeCss(response, getCss(), getId());
+
+               if (hasCondition)
+               {
+                       response.write("<![endif]-->");
+                       response.write("\n");
+               }
        }
 
        @Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/f97fb9c8/wicket-core/src/main/java/org/apache/wicket/markup/head/CssHeaderItem.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/CssHeaderItem.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/CssHeaderItem.java
index 4c88a7b..42d05ca 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/CssHeaderItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/CssHeaderItem.java
@@ -31,6 +31,25 @@ import org.apache.wicket.util.string.Strings;
 public abstract class CssHeaderItem extends HeaderItem
 {
        /**
+        * The condition to use for Internet Explorer conditional comments. 
E.g. "IE 7".
+        * {@code null} or empty string for no condition.
+        */
+       private final String condition;
+       
+       protected CssHeaderItem(String condition)
+       {
+               this.condition = condition;
+       }
+
+       /**
+        * @return the condition to use for Internet Explorer conditional 
comments. E.g. "IE 7".
+        */
+       public String getCondition()
+       {
+               return condition;
+       }
+       
+       /**
         * Creates a {@link CssReferenceHeaderItem} for the given reference.
         * 
         * @param reference
@@ -104,9 +123,27 @@ public abstract class CssHeaderItem extends HeaderItem
         */
        public static CssContentHeaderItem forCSS(CharSequence css, String id)
        {
-               return new CssContentHeaderItem(css, id);
+               return forCSS(css, id, null);
        }
 
+
+       /**
+        * Creates a {@link CssContentHeaderItem} for the given content.
+        *
+        * @param css
+        *            css content to be rendered.
+        * @param id
+        *            unique id for the &lt;style&gt; element. This can be 
<code>null</code>, however in
+        *            that case the ajax header contribution can't detect 
duplicate CSS fragments.
+        * @param condition
+        *            the condition to use for Internet Explorer conditional 
comments. E.g. "IE 7".
+        * @return A newly created {@link CssContentHeaderItem} for the given 
content.
+        */
+       public static CssContentHeaderItem forCSS(CharSequence css, String id, 
String condition)
+       {
+               return new CssContentHeaderItem(css, id, condition);
+       }
+       
        /**
         * Creates a {@link CssUrlReferenceHeaderItem} for the given url.
         * 
@@ -155,7 +192,9 @@ public abstract class CssHeaderItem extends HeaderItem
                Args.notEmpty(url, "url");
 
                String urlWoSessionId = Strings.stripJSessionId(url);
-               if (Strings.isEmpty(condition) == false)
+               
+               boolean hasCondition = Strings.isEmpty(condition) == false; 
+               if (hasCondition)
                {
                        response.write("<!--[if ");
                        response.write(condition);
@@ -171,7 +210,7 @@ public abstract class CssHeaderItem extends HeaderItem
                        response.write("\"");
                }
                response.write(" />");
-               if (Strings.isEmpty(condition) == false)
+               if (hasCondition)
                {
                        response.write("<![endif]-->");
                }

http://git-wip-us.apache.org/repos/asf/wicket/blob/f97fb9c8/wicket-core/src/main/java/org/apache/wicket/markup/head/CssReferenceHeaderItem.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/CssReferenceHeaderItem.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/CssReferenceHeaderItem.java
index 62b2082..732a7df 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/CssReferenceHeaderItem.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/CssReferenceHeaderItem.java
@@ -37,7 +37,6 @@ public class CssReferenceHeaderItem extends CssHeaderItem 
implements IReferenceH
        private final ResourceReference reference;
        private final String media;
        private final PageParameters pageParameters;
-       private final String condition;
 
        /**
         * Creates a new {@code CSSReferenceHeaderItem}.
@@ -54,10 +53,10 @@ public class CssReferenceHeaderItem extends CssHeaderItem 
implements IReferenceH
        public CssReferenceHeaderItem(ResourceReference reference, 
PageParameters pageParameters,
                String media, String condition)
        {
+               super(condition);
                this.reference = reference;
                this.pageParameters = pageParameters;
                this.media = media;
-               this.condition = condition;
        }
 
        /**
@@ -86,14 +85,6 @@ public class CssReferenceHeaderItem extends CssHeaderItem 
implements IReferenceH
                return pageParameters;
        }
 
-       /**
-        * @return the condition to use for Internet Explorer conditional 
comments. E.g. "IE 7".
-        */
-       public String getCondition()
-       {
-               return condition;
-       }
-
        @Override
        public Iterable<? extends HeaderItem> getDependencies()
        {
@@ -111,7 +102,7 @@ public class CssReferenceHeaderItem extends CssHeaderItem 
implements IReferenceH
        @Override
        public void render(Response response)
        {
-               internalRenderCSSReference(response, getUrl(), media, 
condition);
+               internalRenderCSSReference(response, getUrl(), media, 
getCondition());
        }
 
        @Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/f97fb9c8/wicket-core/src/main/java/org/apache/wicket/markup/head/CssUrlReferenceHeaderItem.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/CssUrlReferenceHeaderItem.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/CssUrlReferenceHeaderItem.java
index b799d9a..a107c4a 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/CssUrlReferenceHeaderItem.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/CssUrlReferenceHeaderItem.java
@@ -32,7 +32,6 @@ public class CssUrlReferenceHeaderItem extends CssHeaderItem
 {
        private final String url;
        private final String media;
-       private final String condition;
 
        /**
         * Creates a new {@code CSSUrlReferenceHeaderItem}.
@@ -46,9 +45,9 @@ public class CssUrlReferenceHeaderItem extends CssHeaderItem
         */
        public CssUrlReferenceHeaderItem(String url, String media, String 
condition)
        {
+               super(condition);
                this.url = url;
                this.media = media;
-               this.condition = condition;
        }
 
        /**
@@ -67,14 +66,6 @@ public class CssUrlReferenceHeaderItem extends CssHeaderItem
                return media;
        }
 
-       /**
-        * @return the condition to use for Internet Explorer conditional 
comments. E.g. "IE 7".
-        */
-       public String getCondition()
-       {
-               return condition;
-       }
-
        @Override
        public void render(Response response)
        {

http://git-wip-us.apache.org/repos/asf/wicket/blob/f97fb9c8/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptContentHeaderItem.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptContentHeaderItem.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptContentHeaderItem.java
index c9fcd73..70b2922 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptContentHeaderItem.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptContentHeaderItem.java
@@ -41,9 +41,12 @@ public class JavaScriptContentHeaderItem extends 
JavaScriptHeaderItem
         * @param id
         *            unique id for the javascript element. This can be null, 
however in that case the
         *            ajax header contribution can't detect duplicate script 
fragments.
+        * @param condition
+        *            the condition to use for Internet Explorer conditional 
comments. E.g. "IE 7".
         */
-       public JavaScriptContentHeaderItem(CharSequence javaScript, String id)
+       public JavaScriptContentHeaderItem(CharSequence javaScript, String id, 
String condition)
        {
+               super(condition);
                this.javaScript = javaScript;
                this.id = id;
        }
@@ -67,7 +70,20 @@ public class JavaScriptContentHeaderItem extends 
JavaScriptHeaderItem
        @Override
        public void render(Response response)
        {
+               boolean hasCondition = Strings.isEmpty(getCondition()) == false;
+               if (hasCondition)
+               {
+                       response.write("<!--[if ");
+                       response.write(getCondition());
+                       response.write("]>");
+               }
                JavaScriptUtils.writeJavaScript(response, getJavaScript(), 
getId());
+
+               if (hasCondition)
+               {
+                       response.write("<![endif]-->");
+                       response.write("\n");
+               }
        }
 
        @Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/f97fb9c8/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptHeaderItem.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptHeaderItem.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptHeaderItem.java
index 43fa3bd..71df955 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptHeaderItem.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptHeaderItem.java
@@ -32,6 +32,25 @@ import org.apache.wicket.util.string.Strings;
 public abstract class JavaScriptHeaderItem extends HeaderItem
 {
        /**
+        * The condition to use for Internet Explorer conditional comments. 
E.g. "IE 7".
+        * {@code null} or empty string for no condition.
+        */
+       private final String condition;
+       
+       protected JavaScriptHeaderItem(String condition)
+       {
+               this.condition = condition;
+       }
+
+       /**
+        * @return the condition to use for Internet Explorer conditional 
comments. E.g. "IE 7".
+        */
+       public String getCondition()
+       {
+               return condition;
+       }
+
+       /**
         * Creates a {@link JavaScriptReferenceHeaderItem} for the given 
reference.
         * 
         * @param reference
@@ -117,7 +136,33 @@ public abstract class JavaScriptHeaderItem extends 
HeaderItem
        public static JavaScriptReferenceHeaderItem 
forReference(ResourceReference reference,
                PageParameters pageParameters, String id, boolean defer, String 
charset)
        {
-               return new JavaScriptReferenceHeaderItem(reference, 
pageParameters, id, defer, charset);
+               return new JavaScriptReferenceHeaderItem(reference, 
pageParameters, id, defer, charset, null);
+       }
+
+
+       /**
+        * Creates a {@link JavaScriptReferenceHeaderItem} for the given 
reference.
+        *
+        * @param reference
+        *            resource reference pointing to the javascript resource
+        * @param pageParameters
+        *            the parameters for this Javascript resource reference
+        * @param id
+        *            id that will be used to filter duplicate reference (it's 
still filtered by URL
+        *            too)
+        * @param defer
+        *            specifies that the execution of a script should be 
deferred (delayed) until after
+        *            the page has been loaded.
+        * @param charset
+        *            a non null value specifies the charset attribute of the 
script tag
+        * @param condition
+        *            the condition to use for Internet Explorer conditional 
comments. E.g. "IE 7".
+        * @return A newly created {@link JavaScriptReferenceHeaderItem} for 
the given reference.
+        */
+       public static JavaScriptReferenceHeaderItem 
forReference(ResourceReference reference,
+               PageParameters pageParameters, String id, boolean defer, String 
charset, String condition)
+       {
+               return new JavaScriptReferenceHeaderItem(reference, 
pageParameters, id, defer, charset, condition);
        }
 
        /**
@@ -132,7 +177,24 @@ public abstract class JavaScriptHeaderItem extends 
HeaderItem
         */
        public static JavaScriptContentHeaderItem forScript(CharSequence 
javascript, String id)
        {
-               return new JavaScriptContentHeaderItem(javascript, id);
+               return forScript(javascript, id, null);
+       }
+
+       /**
+        * Creates a {@link JavaScriptContentHeaderItem} for the given content.
+        *
+        * @param javascript
+        *            javascript content to be rendered.
+        * @param id
+        *            unique id for the javascript element. This can be null, 
however in that case the
+        *            ajax header contribution can't detect duplicate script 
fragments.
+        * @param condition
+        *            the condition to use for Internet Explorer conditional 
comments. E.g. "IE 7".
+        * @return A newly created {@link JavaScriptContentHeaderItem} for the 
given content.
+        */
+       public static JavaScriptContentHeaderItem forScript(CharSequence 
javascript, String id, String condition)
+       {
+               return new JavaScriptContentHeaderItem(javascript, id, 
condition);
        }
 
        /**
@@ -198,14 +260,49 @@ public abstract class JavaScriptHeaderItem extends 
HeaderItem
        public static JavaScriptUrlReferenceHeaderItem forUrl(String url, 
String id, boolean defer,
                String charset)
        {
-               return new JavaScriptUrlReferenceHeaderItem(url, id, defer, 
charset);
+               return forUrl(url, id, defer, charset, null);
+       }
+
+       /**
+        * Creates a {@link JavaScriptUrlReferenceHeaderItem} for the given url.
+        *
+        * @param url
+        *            context-relative url of the the javascript resource
+        * @param id
+        *            id that will be used to filter duplicate reference (it's 
still filtered by URL
+        *            too)
+        * @param defer
+        *            specifies that the execution of a script should be 
deferred (delayed) until after
+        *            the page has been loaded.
+        * @param charset
+        *            a non null value specifies the charset attribute of the 
script tag
+        * @return A newly created {@link JavaScriptUrlReferenceHeaderItem} for 
the given url.
+        */
+       public static JavaScriptUrlReferenceHeaderItem forUrl(String url, 
String id, boolean defer,
+               String charset, String condition)
+       {
+               return new JavaScriptUrlReferenceHeaderItem(url, id, defer, 
charset, condition);
        }
 
        protected static void internalRenderJavaScriptReference(Response 
response, String url,
-               String id, boolean defer, String charset)
+               String id, boolean defer, String charset, String condition)
        {
                Args.notEmpty(url, "url");
-
+               
+               boolean hasCondition = Strings.isEmpty(condition) == false; 
+               if (hasCondition)
+               {
+                       response.write("<!--[if ");
+                       response.write(condition);
+                       response.write("]>");
+               }
+               
                JavaScriptUtils.writeJavaScriptUrl(response, 
Strings.stripJSessionId(url), id, defer, charset);
+               
+               if (hasCondition)
+               {
+                       response.write("<![endif]-->");
+                       response.write("\n");
+               }
        }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/f97fb9c8/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceHeaderItem.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceHeaderItem.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceHeaderItem.java
index 1e5da96..ff0dac6 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceHeaderItem.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceHeaderItem.java
@@ -60,8 +60,9 @@ public class JavaScriptReferenceHeaderItem extends 
JavaScriptHeaderItem
         *            a non null value specifies the charset attribute of the 
script tag
         */
        public JavaScriptReferenceHeaderItem(ResourceReference reference,
-               PageParameters pageParameters, String id, boolean defer, String 
charset)
+               PageParameters pageParameters, String id, boolean defer, String 
charset, String condition)
        {
+               super(condition);
                this.reference = reference;
                this.pageParameters = pageParameters;
                this.id = id;
@@ -129,7 +130,7 @@ public class JavaScriptReferenceHeaderItem extends 
JavaScriptHeaderItem
        @Override
        public void render(Response response)
        {
-               internalRenderJavaScriptReference(response, getUrl(), getId(), 
isDefer(), getCharset());
+               internalRenderJavaScriptReference(response, getUrl(), getId(), 
isDefer(), getCharset(), getCondition());
        }
 
        @Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/f97fb9c8/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptUrlReferenceHeaderItem.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptUrlReferenceHeaderItem.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptUrlReferenceHeaderItem.java
index 6081c8e..ec00d33 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptUrlReferenceHeaderItem.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptUrlReferenceHeaderItem.java
@@ -50,9 +50,12 @@ public class JavaScriptUrlReferenceHeaderItem extends 
JavaScriptHeaderItem
         *            the page has been loaded.
         * @param charset
         *            a non null value specifies the charset attribute of the 
script tag
+        * @param condition
+        *            the condition to use for Internet Explorer conditional 
comments. E.g. "IE 7".
         */
-       public JavaScriptUrlReferenceHeaderItem(String url, String id, boolean 
defer, String charset)
+       public JavaScriptUrlReferenceHeaderItem(String url, String id, boolean 
defer, String charset, String condition)
        {
+               super(condition);
                this.url = url;
                this.id = id;
                this.defer = defer;
@@ -98,7 +101,7 @@ public class JavaScriptUrlReferenceHeaderItem extends 
JavaScriptHeaderItem
        {
                internalRenderJavaScriptReference(response,
                        UrlUtils.rewriteToContextRelative(getUrl(), 
RequestCycle.get()), getId(), isDefer(),
-                       getCharset());
+                       getCharset(), getCondition());
        }
 
        @Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/f97fb9c8/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HeaderResponseTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HeaderResponseTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HeaderResponseTest.java
index c4bcc43..d2f3be2 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HeaderResponseTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HeaderResponseTest.java
@@ -33,6 +33,7 @@ import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Response;
 import org.apache.wicket.request.UrlRenderer;
 import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.request.resource.ResourceReference;
 import org.apache.wicket.markup.head.CssHeaderItem;
@@ -124,12 +125,26 @@ public class HeaderResponseTest
     public void conditionalRenderCSSReferenceWithUrl()
     {
         headerResponse.render(CssHeaderItem.forUrl("resource.css", "screen", 
"lt IE 8"));
-        String expected = "<!--[if lt IE 8]><link rel=\"stylesheet\" 
type=\"text/css\" href=\"" +
-            RESOURCE_NAME + "\" media=\"screen\" /><![endif]-->\n";
+        String expected = "<!--[if lt IE 8]><link rel=\"stylesheet\" 
type=\"text/css\" href=\""+RESOURCE_NAME+"\" media=\"screen\" /><![endif]-->\n";
         String actual = headerResponse.getResponse().toString();
         Assert.assertEquals(expected, actual);
     }
 
+
+       /**
+        * Tests the creation of a proper IE conditional comment
+        */
+       @Test
+       public void conditionalRenderCSSContent()
+       {
+               headerResponse.render(CssHeaderItem.forCSS(".className { 
font-size: 10px}", "id", "lt IE 8"));
+               String expected = "<!--[if lt IE 8]><style type=\"text/css\" 
id=\"id\"><!--\n" +
+                               ".className { font-size: 10px}--></style>\n" +
+                               "<![endif]-->\n";
+               String actual = headerResponse.getResponse().toString();
+               Assert.assertEquals(expected, actual);
+       }
+
     /**
      * Tests setting of 'defer' attribute
      * <p>
@@ -210,4 +225,58 @@ public class HeaderResponseTest
             tester.destroy();
         }
     }
+
+
+       /**
+        * Tests the creation of a proper IE conditional comment
+        */
+       @Test
+       public void conditionalRenderJSReference()
+       {
+               headerResponse.render(
+                               JavaScriptHeaderItem.forReference(reference, 
new PageParameters(), "id", false, null, "lt IE 8"));
+
+               String expected = "<!--[if lt IE 8]><script 
type=\"text/javascript\" id=\"id\" 
src=\""+RESOURCE_NAME+"\"></script>\n<![endif]-->\n";
+
+               String actual = headerResponse.getResponse().toString();
+
+               Assert.assertEquals(expected, actual);
+       }
+
+       /**
+        * Tests the creation of a proper IE conditional comment
+        */
+       @Test
+       public void conditionalRenderJSReferenceWithUrl()
+       {
+               
headerResponse.render(JavaScriptHeaderItem.forUrl("js-resource.js", "id", true, 
"cp1251", "lt IE 8"));
+
+               String expected = "<!--[if lt IE 8]><script 
type=\"text/javascript\" id=\"id\" defer=\"defer\" charset=\"cp1251\" 
src=\""+RESOURCE_NAME+"\"></script>\n" +
+                               "<![endif]-->\n";
+
+               String actual = headerResponse.getResponse().toString();
+
+               Assert.assertEquals(expected, actual);
+       }
+
+
+       /**
+        * Tests the creation of a proper IE conditional comment
+        */
+       @Test
+       public void conditionalRenderJSContent()
+       {
+               
headerResponse.render(JavaScriptHeaderItem.forScript("someJSMethod();", "id", 
"lt IE 8"));
+
+               String expected = "<!--[if lt IE 8]><script 
type=\"text/javascript\" id=\"id\">\n" +
+                               "/*<![CDATA[*/\n" +
+                               "someJSMethod();\n" +
+                               "/*]]>*/\n" +
+                               "</script>\n" +
+                               "<![endif]-->\n";
+
+               String actual = headerResponse.getResponse().toString();
+
+               Assert.assertEquals(expected, actual);
+       }
 }

Reply via email to