Reviewers: Dan Rice,

Description:
Cookies weren't being escaped despite uriEscaping being set.  This
addresses the problem and adds to the tests.

Please review this at http://gwt-code-reviews.appspot.com/128801

Affected files:
   user/src/com/google/gwt/user/client/Cookies.java
   user/test/com/google/gwt/user/client/CookieTest.java


Index: user/test/com/google/gwt/user/client/CookieTest.java
===================================================================
--- user/test/com/google/gwt/user/client/CookieTest.java        (revision 7348)
+++ user/test/com/google/gwt/user/client/CookieTest.java        (working copy)
@@ -151,7 +151,24 @@
      Cookies.removeCookie("test1+test1");
      cookies = Cookies.getCookieNames();
      assertEquals(curCount, cookies.size());
+
+    // Make sure cookie names are URI encoded
+    Cookies.setUriEncode(true);
+    Cookies.setCookie("test1.,/?:@&=+$#", "value1");
+    assertEquals(curCount + 1, Cookies.getCookieNames().size());
+    Cookies.setUriEncode(false);
+    Cookies.removeCookie("test1.,/?:@&=+$#");
+    assertEquals(curCount + 1, Cookies.getCookieNames().size());
+    Cookies.setUriEncode(true);
+    Cookies.removeCookie("test1.,/?:@&=+$#");
+    assertEquals(curCount, Cookies.getCookieNames().size());

+    // Make sure cookie values are URI encoded
+    Cookies.setCookie("testencodedvalue", "value1,/?:@&=+$#");
+    Cookies.setUriEncode(false);
+    String encodedValue = Cookies.getCookie("testencodedvalue");
+     
assertTrue(encodedValue.compareTo("value1%2C%2F%3F%3A%40%26%3D%2B%24%23")  
== 0);
+
      // Make sure unencoded cookies with bogus format are not added
      try {
        Cookies.setCookie("test1=test1", "value1");
Index: user/src/com/google/gwt/user/client/Cookies.java
===================================================================
--- user/src/com/google/gwt/user/client/Cookies.java    (revision 7348)
+++ user/src/com/google/gwt/user/client/Cookies.java    (working copy)
@@ -110,9 +110,11 @@
     */
    public static void removeCookie(String name) {
      if (uriEncoding) {
-      uriEncode(name);
+      removeCookieNative(uriEncode(name));
      }
-    removeCookieNative(name);
+    else {
+      removeCookieNative(name);
+    }
    }

    /**
@@ -124,9 +126,11 @@
     */
    public static void removeCookie(String name, String path) {
      if (uriEncoding) {
-      uriEncode(name);
+      removeCookieNative(uriEncode(name), path);
      }
-    removeCookieNative(name, path);
+    else {
+      removeCookieNative(name, path);
+    }
    }

    /**
@@ -174,8 +178,8 @@
    public static void setCookie(String name, String value, Date expires,
        String domain, String path, boolean secure) {
      if (uriEncoding) {
-      uriEncode(name);
-      uriEncode(value);
+      name = uriEncode(name);
+      value = uriEncode(value);
      } else if (!isValidCookieName(name) || !isValidCookieValue(value)) {
        throw new IllegalArgumentException("Illegal cookie format.");
      }


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to