In this migration guide we describe the changes in the API between 7.17 and 7.18.

Cookies

v7.17

When you delete a cookie, the CookieStore.delete(Cookie) method returns a boolean value indicating whether the given cookie was deleted or not.

if (!cookieStore.delete(cookie)) {
    // Error: The cookie hasn't been deleted.
}

v7.18

In this version we simplified this functionality. Now, the CookieStore.delete(Cookie) method returns void. If the cookie hasn’t been deleted because it’s invalid, or it doesn’t exist, the method does nothing:

cookieStore.delete(cookie);

v7.17

To set a cookie you use the CookieStore.put(String url, Cookie cookie) method. This method requires two parameters: the cookie and URL. If the given URL and the cookie’s domain are different, the cookie will not be set, and the method returns false. So, make sure that the given URL and the cookie domain are the same domains.

Cookie cookie = Cookie.newBuilder()
        .name("cookieName")
        .value("cookieValue")
        .domain(".google.com")
        .secure(true)
        .path("/")
        .build();
if (!cookieStore.put("https://www.google.com", cookie)) {
    // Error: The cookie hasn't been set.
}

v7.18

We figured out that the URL parameter is used by Chromium only to validate the given cookie and check its domain. We decided to simplify this API. Now, you don’t have to pass the URL parameter and make sure that the URL and cookie’s domain are the same. Now, you can set a cookie using the following way:

cookieStore.set(Cookie.newBuilder(".google.com")
        .name("cookieName")
        .value("cookieValue")
        .secure(true)
        .path("/")
        .build());

If the given cookie is invalid and cannot be set, the method throws java.lang.IllegalArgumentException.

Go Top