Changeset 166924 in webkit


Ignore:
Timestamp:
Apr 8, 2014 5:09:51 AM (10 years ago)
Author:
commit-queue@webkit.org
Message:

[SOUP] Control cookie management according ResourceRequest.allowCookies()
https://bugs.webkit.org/show_bug.cgi?id=131026

Patch by Youenn Fablet <youenn.fablet@crf.canon.fr> on 2014-04-08
Reviewed by Sergio Villar Senin.

Source/WebCore:

Added per soup-message disabling of cookie jar manager when related ResourceRequest does not allow cookies (e.g. some cross-origin requests).

Patch is covered by unskipped test http/tests/xmlhttprequest/cross-origin-cookie-storage.html.

  • platform/network/soup/ResourceRequestSoup.cpp:

(WebCore::ResourceRequest::updateSoupMessageMembers): Added disabling of cookie jar manager if cookies are not allowed.

Source/WebKit2:

Added setting of accept cookies policy for the current soup network session cookie jar and all tracked sessions.
Moved the implementation of cookie policy setting from WebCookieManager to WebFrameNetworkingContext.

  • WebProcess/Cookies/soup/WebCookieManagerSoup.cpp:

(WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy): Moved implementation to WebCookieManager::platformSetHTTPCookieAcceptPolicy.

  • WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:

(WebKit::WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts): Moved implementation from WebCookieManager::platformSetHTTPCookieAcceptPolicy and set the cookie jar accept policy to the cookie jars of all sessions in addition to the default cookie jar.

  • WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h: Added method prototype.

LayoutTests:

  • platform/efl/TestExpectations: Unskipped test http/tests/xmlhttprequest/cross-origin-cookie-storage.html.
  • platform/gtk/TestExpectations: Ditto.
Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r166923 r166924  
     12014-04-08  Youenn Fablet  <youenn.fablet@crf.canon.fr>
     2
     3        [SOUP] Control cookie management according ResourceRequest.allowCookies()
     4        https://bugs.webkit.org/show_bug.cgi?id=131026
     5
     6        Reviewed by Sergio Villar Senin.
     7
     8        * platform/efl/TestExpectations: Unskipped test http/tests/xmlhttprequest/cross-origin-cookie-storage.html.
     9        * platform/gtk/TestExpectations: Ditto.
     10
    1112014-04-08  Sergio Villar Senin  <svillar@igalia.com>
    212
  • trunk/LayoutTests/platform/efl/TestExpectations

    r166872 r166924  
    238238http/tests/security/xss-DENIED-xsl-external-entity-redirect.xml
    239239http/tests/xmlhttprequest/access-control-basic-whitelist-request-headers.html
    240 http/tests/xmlhttprequest/cross-origin-cookie-storage.html
    241240http/tests/xmlhttprequest/cross-origin-no-authorization.html
    242241http/tests/xmlhttprequest/logout.html
  • trunk/LayoutTests/platform/gtk/TestExpectations

    r166912 r166924  
    12541254Bug(GTK) http/tests/xmlhttprequest/logout.html [ Failure ]
    12551255
    1256 # We don't seem to support neither of these for now
    1257 Bug(GTK) http/tests/xmlhttprequest/cross-origin-cookie-storage.html [ Failure ]
    12581256Bug(GTK) http/tests/xmlhttprequest/cross-origin-no-authorization.html [ Failure ]
    12591257
  • trunk/Source/WebCore/ChangeLog

    r166923 r166924  
     12014-04-08  Youenn Fablet  <youenn.fablet@crf.canon.fr>
     2
     3        [SOUP] Control cookie management according ResourceRequest.allowCookies()
     4        https://bugs.webkit.org/show_bug.cgi?id=131026
     5
     6        Reviewed by Sergio Villar Senin.
     7
     8        Added per soup-message disabling of cookie jar manager when related ResourceRequest does not allow cookies (e.g. some cross-origin requests).
     9
     10        Patch is covered by unskipped test http/tests/xmlhttprequest/cross-origin-cookie-storage.html.
     11
     12        * platform/network/soup/ResourceRequestSoup.cpp:
     13        (WebCore::ResourceRequest::updateSoupMessageMembers): Added disabling of cookie jar manager if cookies are not allowed.
     14
    1152014-04-08  Sergio Villar Senin  <svillar@igalia.com>
    216
  • trunk/Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp

    r166001 r166924  
    4444    if (!acceptEncoding())
    4545        soup_message_disable_feature(soupMessage, SOUP_TYPE_CONTENT_DECODER);
     46    if (!allowCookies())
     47        soup_message_disable_feature(soupMessage, SOUP_TYPE_COOKIE_JAR);
    4648}
    4749
  • trunk/Source/WebKit2/ChangeLog

    r166914 r166924  
     12014-04-08  Youenn Fablet  <youenn.fablet@crf.canon.fr>
     2
     3        [SOUP] Control cookie management according ResourceRequest.allowCookies()
     4        https://bugs.webkit.org/show_bug.cgi?id=131026
     5
     6        Reviewed by Sergio Villar Senin.
     7
     8        Added setting of accept cookies policy for the current soup network session cookie jar and all tracked sessions.
     9        Moved the implementation of cookie policy setting from WebCookieManager to WebFrameNetworkingContext.
     10
     11        * WebProcess/Cookies/soup/WebCookieManagerSoup.cpp:
     12        (WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy): Moved implementation to WebCookieManager::platformSetHTTPCookieAcceptPolicy.
     13        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
     14        (WebKit::WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts): Moved implementation from WebCookieManager::platformSetHTTPCookieAcceptPolicy and set the cookie jar accept policy to the cookie jars of all sessions in addition to the default cookie jar.
     15        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h: Added method prototype.
     16
    1172014-04-07  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
    218
  • trunk/Source/WebKit2/WebProcess/Cookies/soup/WebCookieManagerSoup.cpp

    r161890 r166924  
    2828
    2929#include "ChildProcess.h"
     30#include "WebFrameNetworkingContext.h"
    3031#include "WebKitSoupCookieJarSqlite.h"
    3132#include <WebCore/CookieJarSoup.h>
     
    4142void WebCookieManager::platformSetHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy policy)
    4243{
    43     SoupCookieJar* cookieJar = WebCore::soupCookieJar();
    44     SoupCookieJarAcceptPolicy soupPolicy;
    45 
    46     soupPolicy = SOUP_COOKIE_JAR_ACCEPT_ALWAYS;
    47     switch (policy) {
    48     case HTTPCookieAcceptPolicyAlways:
    49         soupPolicy = SOUP_COOKIE_JAR_ACCEPT_ALWAYS;
    50         break;
    51     case HTTPCookieAcceptPolicyNever:
    52         soupPolicy = SOUP_COOKIE_JAR_ACCEPT_NEVER;
    53         break;
    54     case HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain:
    55         soupPolicy = SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY;
    56         break;
    57     }
    58     soup_cookie_jar_set_accept_policy(cookieJar, soupPolicy);
     44    WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts(policy);
    5945}
    6046
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp

    r166661 r166924  
    3131#include "WebFrame.h"
    3232#include "WebPage.h"
     33#include <WebCore/CookieJarSoup.h>
     34#include <WebCore/NetworkStorageSession.h>
    3335#include <WebCore/SessionID.h>
    3436#include <WebCore/Settings.h>
     37#include <WebCore/SoupNetworkSession.h>
    3538#include <wtf/NeverDestroyed.h>
    3639
     
    4750
    4851    SessionTracker::setSession(sessionID, NetworkStorageSession::createPrivateBrowsingSession(String::number(sessionID.sessionID())));
     52}
     53
     54void WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts(HTTPCookieAcceptPolicy policy)
     55{
     56    SoupCookieJarAcceptPolicy soupPolicy = SOUP_COOKIE_JAR_ACCEPT_ALWAYS;
     57    switch (policy) {
     58    case HTTPCookieAcceptPolicyAlways:
     59        soupPolicy = SOUP_COOKIE_JAR_ACCEPT_ALWAYS;
     60        break;
     61    case HTTPCookieAcceptPolicyNever:
     62        soupPolicy = SOUP_COOKIE_JAR_ACCEPT_NEVER;
     63        break;
     64    case HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain:
     65        soupPolicy = SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY;
     66        break;
     67    }
     68
     69    SoupCookieJar* cookieJar = WebCore::soupCookieJar();
     70    soup_cookie_jar_set_accept_policy(cookieJar, soupPolicy);
     71
     72    SoupNetworkSession& soupSession = NetworkStorageSession::defaultStorageSession().soupNetworkSession();
     73    soup_cookie_jar_set_accept_policy(soupSession.cookieJar(), soupPolicy);
     74
     75    for (const auto& session : SessionTracker::sessionMap().values()) {
     76        if (session)
     77            soup_cookie_jar_set_accept_policy(session->soupNetworkSession().cookieJar(), soupPolicy);
     78    }
    4979}
    5080
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h

    r164726 r166924  
    2929#define WebFrameNetworkingContext_h
    3030
     31#include "HTTPCookieAcceptPolicy.h"
    3132#include <WebCore/FrameNetworkingContext.h>
    3233#include <WebCore/SessionID.h>
     
    4546
    4647    static void ensurePrivateBrowsingSession(WebCore::SessionID);
     48    static void setCookieAcceptPolicyForAllContexts(HTTPCookieAcceptPolicy);
    4749
    4850    WebFrameLoaderClient* webFrameLoaderClient() const;
Note: See TracChangeset for help on using the changeset viewer.