Skip to content

Commit

Permalink
Merge r166924 - [SOUP] Control cookie management according ResourceRe…
Browse files Browse the repository at this point in the history
…quest.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.
  • Loading branch information
youennf authored and carlosgcampos committed Apr 11, 2014
1 parent ff346f7 commit 0313250
Show file tree
Hide file tree
Showing 9 changed files with 76 additions and 19 deletions.
10 changes: 10 additions & 0 deletions LayoutTests/ChangeLog
@@ -1,3 +1,13 @@
2014-04-08 Youenn Fablet <youenn.fablet@crf.canon.fr>

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

Reviewed by Sergio Villar Senin.

* platform/efl/TestExpectations: Unskipped test http/tests/xmlhttprequest/cross-origin-cookie-storage.html.
* platform/gtk/TestExpectations: Ditto.

2014-02-11 Piotr Grad <p.grad@samsung.com>

[GStreamer] High playback rate causes crash
Expand Down
1 change: 0 additions & 1 deletion LayoutTests/platform/efl/TestExpectations
Expand Up @@ -234,7 +234,6 @@ http/tests/security/redirect-BLOCKED-to-localURL.html
http/tests/security/xss-DENIED-xsl-document-redirect.xml
http/tests/security/xss-DENIED-xsl-external-entity-redirect.xml
http/tests/xmlhttprequest/access-control-basic-whitelist-request-headers.html
http/tests/xmlhttprequest/cross-origin-cookie-storage.html
http/tests/xmlhttprequest/cross-origin-no-authorization.html
http/tests/xmlhttprequest/logout.html
http/tests/xmlhttprequest/redirect-cross-origin-tripmine.html
Expand Down
2 changes: 0 additions & 2 deletions LayoutTests/platform/gtk/TestExpectations
Expand Up @@ -1006,8 +1006,6 @@ Bug(GTK) http/tests/misc/redirect-to-external-url.html [ Failure ]

Bug(GTK) http/tests/xmlhttprequest/logout.html [ Failure ]

# We don't seem to support neither of these for now
Bug(GTK) http/tests/xmlhttprequest/cross-origin-cookie-storage.html [ Failure ]
Bug(GTK) http/tests/xmlhttprequest/cross-origin-no-authorization.html [ Failure ]

Bug(GTK) media/video-size-intrinsic-scale.html [ Failure ]
Expand Down
14 changes: 14 additions & 0 deletions Source/WebCore/ChangeLog
@@ -1,3 +1,17 @@
2014-04-08 Youenn Fablet <youenn.fablet@crf.canon.fr>

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

Reviewed by Sergio Villar Senin.

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.

2014-04-11 Carlos Garcia Campos <cgarcia@igalia.com>

Unreviewed. [GTK] Plugin process crashes when loading totem plugin
Expand Down
2 changes: 2 additions & 0 deletions Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp
Expand Up @@ -40,6 +40,8 @@ void ResourceRequest::updateSoupMessageMembers(SoupMessage* soupMessage) const

if (!acceptEncoding())
soup_message_disable_feature(soupMessage, SOUP_TYPE_CONTENT_DECODER);
if (!allowCookies())
soup_message_disable_feature(soupMessage, SOUP_TYPE_COOKIE_JAR);
}

void ResourceRequest::updateSoupMessageHeaders(SoupMessageHeaders* soupHeaders) const
Expand Down
16 changes: 16 additions & 0 deletions Source/WebKit2/ChangeLog
@@ -1,3 +1,19 @@
2014-04-08 Youenn Fablet <youenn.fablet@crf.canon.fr>

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

Reviewed by Sergio Villar Senin.

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.

2014-04-01 Zan Dobersek <zdobersek@igalia.com>

Don't copy the children map in webkitWebViewBaseContainerForall
Expand Down
18 changes: 2 additions & 16 deletions Source/WebKit2/WebProcess/Cookies/soup/WebCookieManagerSoup.cpp
Expand Up @@ -27,6 +27,7 @@
#include "WebCookieManager.h"

#include "ChildProcess.h"
#include "WebFrameNetworkingContext.h"
#include "WebKitSoupCookieJarSqlite.h"
#include <WebCore/CookieJarSoup.h>
#include <WebCore/SoupNetworkSession.h>
Expand All @@ -40,22 +41,7 @@ namespace WebKit {

void WebCookieManager::platformSetHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy policy)
{
SoupCookieJar* cookieJar = WebCore::soupCookieJar();
SoupCookieJarAcceptPolicy soupPolicy;

soupPolicy = SOUP_COOKIE_JAR_ACCEPT_ALWAYS;
switch (policy) {
case HTTPCookieAcceptPolicyAlways:
soupPolicy = SOUP_COOKIE_JAR_ACCEPT_ALWAYS;
break;
case HTTPCookieAcceptPolicyNever:
soupPolicy = SOUP_COOKIE_JAR_ACCEPT_NEVER;
break;
case HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain:
soupPolicy = SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY;
break;
}
soup_cookie_jar_set_accept_policy(cookieJar, soupPolicy);
WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts(policy);
}

HTTPCookieAcceptPolicy WebCookieManager::platformGetHTTPCookieAcceptPolicy()
Expand Down
Expand Up @@ -30,7 +30,10 @@
#include "SessionTracker.h"
#include "WebFrame.h"
#include "WebPage.h"
#include <WebCore/CookieJarSoup.h>
#include <WebCore/NetworkStorageSession.h>
#include <WebCore/Settings.h>
#include <WebCore/SoupNetworkSession.h>
#include <wtf/NeverDestroyed.h>

using namespace WebCore;
Expand All @@ -47,6 +50,33 @@ void WebFrameNetworkingContext::ensurePrivateBrowsingSession(uint64_t sessionID)
SessionTracker::setSession(sessionID, NetworkStorageSession::createPrivateBrowsingSession(String::number(sessionID)));
}

void WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts(HTTPCookieAcceptPolicy policy)
{
SoupCookieJarAcceptPolicy soupPolicy = SOUP_COOKIE_JAR_ACCEPT_ALWAYS;
switch (policy) {
case HTTPCookieAcceptPolicyAlways:
soupPolicy = SOUP_COOKIE_JAR_ACCEPT_ALWAYS;
break;
case HTTPCookieAcceptPolicyNever:
soupPolicy = SOUP_COOKIE_JAR_ACCEPT_NEVER;
break;
case HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain:
soupPolicy = SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY;
break;
}

SoupCookieJar* cookieJar = WebCore::soupCookieJar();
soup_cookie_jar_set_accept_policy(cookieJar, soupPolicy);

SoupNetworkSession& soupSession = NetworkStorageSession::defaultStorageSession().soupNetworkSession();
soup_cookie_jar_set_accept_policy(soupSession.cookieJar(), soupPolicy);

for (const auto& session : SessionTracker::sessionMap().values()) {
if (session)
soup_cookie_jar_set_accept_policy(session->soupNetworkSession().cookieJar(), soupPolicy);
}
}

WebFrameNetworkingContext::WebFrameNetworkingContext(WebFrame* frame)
: FrameNetworkingContext(frame->coreFrame())
{
Expand Down
Expand Up @@ -28,6 +28,7 @@
#ifndef WebFrameNetworkingContext_h
#define WebFrameNetworkingContext_h

#include "HTTPCookieAcceptPolicy.h"
#include <WebCore/FrameNetworkingContext.h>

namespace WebKit {
Expand All @@ -43,6 +44,7 @@ class WebFrameNetworkingContext : public WebCore::FrameNetworkingContext {
}

static void ensurePrivateBrowsingSession(uint64_t sessionID);
static void setCookieAcceptPolicyForAllContexts(HTTPCookieAcceptPolicy);

WebFrameLoaderClient* webFrameLoaderClient() const;

Expand Down

0 comments on commit 0313250

Please sign in to comment.