[BlackBerry] Cookies mismatch when login to gmail.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 26 Mar 2012 12:42:44 +0000 (12:42 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 26 Mar 2012 12:42:44 +0000 (12:42 +0000)
https://bugs.webkit.org/show_bug.cgi?id=82165

Redirection's response can add or update cookies. The cookies of ResourceRequest is dirty
in this case. We shouldn't copy the dirty cookie header from ResourceRequest to PlatformRequest
for redirection loading.

This issue didn't happen before because we used m_cookieData not the cookie header.
Now we use the cookie header to avoid storing double cookie's data, and m_cookieData is removed.

Patch by Jason Liu <jason.liu@torchmobile.com.cn> on 2012-03-26
Reviewed by George Staikos.

No new tests. It is a refactoring issue.

* platform/network/blackberry/ResourceRequestBlackBerry.cpp:
(WebCore::ResourceRequest::initializePlatformRequest):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@112080 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/network/blackberry/ResourceRequestBlackBerry.cpp

index 2e0fe2d865ef20b7186f31f255bd19ebb533f045..ccc766a53ec98243e37697901992136cb6864fec 100644 (file)
@@ -1,3 +1,22 @@
+2012-03-26  Jason Liu  <jason.liu@torchmobile.com.cn>
+
+        [BlackBerry] Cookies mismatch when login to gmail.
+        https://bugs.webkit.org/show_bug.cgi?id=82165
+
+        Redirection's response can add or update cookies. The cookies of ResourceRequest is dirty
+        in this case. We shouldn't copy the dirty cookie header from ResourceRequest to PlatformRequest
+        for redirection loading.
+
+        This issue didn't happen before because we used m_cookieData not the cookie header.
+        Now we use the cookie header to avoid storing double cookie's data, and m_cookieData is removed.
+
+        Reviewed by George Staikos.
+
+        No new tests. It is a refactoring issue.
+
+        * platform/network/blackberry/ResourceRequestBlackBerry.cpp:
+        (WebCore::ResourceRequest::initializePlatformRequest):
+
 2012-03-26  Alexis Menard  <alexis.menard@openbossa.org>
 
         Increase code sharing between StylePropertySet and CSSPropertyLonghand.
index ea408c277b0d62dbe32da12ada9b084935024c6a..2f29f0164971c01e5e75002f831c4aed5ee80c2e 100644 (file)
@@ -154,14 +154,15 @@ void ResourceRequest::initializePlatformRequest(NetworkRequest& platformRequest,
             String value = it->second;
             if (!key.isEmpty() && !value.isEmpty()) {
                 // We need to check the encoding and encode the cookie's value using latin1 or utf8 to support unicode characters.
-                if (equalIgnoringCase(key, "Cookie"))
-                    platformRequest.addHeader(key.latin1().data(), value.containsOnlyLatin1() ? value.latin1().data() : value.utf8().data());
-                else
+                // We wo't use the old cookies of resourceRequest for new location because these cookies may be changed by redirection.
+                if (!equalIgnoringCase(key, "Cookie"))
                     platformRequest.addHeader(key.latin1().data(), value.latin1().data());
+                else if (!isRedirect)
+                    platformRequest.addHeader(key.latin1().data(), value.containsOnlyLatin1() ? value.latin1().data() : value.utf8().data());
             }
         }
        
-        // Redirection's response may contain new cookies, so add cookies again.
+        // Redirection's response may add or update cookies, so we get cookies from CookieManager when redirection happens.
         // If there aren't cookies in the header list, we need trying to add cookies.
         if (cookiesEnabled && (isRedirect || !httpHeaderFields().contains("Cookie")) && !url().isNull()) {
             // Prepare a cookie header if there are cookies related to this url.