[libsoup/tingping/same-site-api-change] Simplify soup_cookie_jar_get_cookie_list_with_same_site_info() API
- From: Patrick Griffis <pgriffis src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libsoup/tingping/same-site-api-change] Simplify soup_cookie_jar_get_cookie_list_with_same_site_info() API
- Date: Wed, 29 Jan 2020 06:26:14 +0000 (UTC)
commit b8c06d3b339bd3ea3cd401c8b45758937975b74c
Author: Patrick Griffis <pgriffis igalia com>
Date: Tue Jan 28 03:29:27 2020 -0800
Simplify soup_cookie_jar_get_cookie_list_with_same_site_info() API
This changes passing an HTTP method string to just passing a boolean
for if it is a safe method or not. This slightly simplifies usage
within WebKit.
libsoup/soup-cookie-jar.c | 29 ++++++++++++++---------------
libsoup/soup-cookie-jar.h | 2 +-
tests/samesite-test.c | 2 +-
3 files changed, 16 insertions(+), 17 deletions(-)
---
diff --git a/libsoup/soup-cookie-jar.c b/libsoup/soup-cookie-jar.c
index d7b2d7dc..7feaff34 100644
--- a/libsoup/soup-cookie-jar.c
+++ b/libsoup/soup-cookie-jar.c
@@ -302,7 +302,7 @@ compare_cookies (gconstpointer a, gconstpointer b, gpointer jar)
static gboolean
cookie_is_valid_for_same_site_policy (SoupCookie *cookie,
- const char *method,
+ gboolean is_safe_method,
SoupURI *uri,
SoupURI *top_level,
SoupURI *cookie_uri,
@@ -318,7 +318,7 @@ cookie_is_valid_for_same_site_policy (SoupCookie *cookie,
return TRUE;
if (policy == SOUP_SAME_SITE_POLICY_LAX && is_top_level_navigation &&
- (SOUP_METHOD_IS_SAFE (method) || for_http == FALSE))
+ (is_safe_method || for_http == FALSE))
return TRUE;
if (is_top_level_navigation && cookie_uri == NULL)
@@ -332,7 +332,7 @@ get_cookies (SoupCookieJar *jar,
SoupURI *uri,
SoupURI *top_level,
SoupURI *site_for_cookies,
- const char *method,
+ gboolean is_safe_method,
gboolean for_http,
gboolean is_top_level_navigation,
gboolean copy_cookies)
@@ -369,7 +369,7 @@ get_cookies (SoupCookieJar *jar,
g_strdup (cur),
new_head);
} else if (soup_cookie_applies_to_uri (cookie, uri) &&
- cookie_is_valid_for_same_site_policy (cookie, method, uri, top_level,
+ cookie_is_valid_for_same_site_policy (cookie, is_safe_method, uri,
top_level,
site_for_cookies,
is_top_level_navigation,
for_http) &&
(for_http || !cookie->http_only))
@@ -426,7 +426,7 @@ soup_cookie_jar_get_cookies (SoupCookieJar *jar, SoupURI *uri,
g_return_val_if_fail (SOUP_IS_COOKIE_JAR (jar), NULL);
g_return_val_if_fail (uri != NULL, NULL);
- cookies = get_cookies (jar, uri, NULL, NULL, NULL, for_http, FALSE, FALSE);
+ cookies = get_cookies (jar, uri, NULL, NULL, TRUE, for_http, FALSE, FALSE);
if (cookies) {
char *result = soup_cookies_to_cookie_header (cookies);
@@ -470,7 +470,7 @@ soup_cookie_jar_get_cookie_list (SoupCookieJar *jar, SoupURI *uri, gboolean for_
g_return_val_if_fail (SOUP_IS_COOKIE_JAR (jar), NULL);
g_return_val_if_fail (uri != NULL, NULL);
- return get_cookies (jar, uri, NULL, NULL, NULL, for_http, FALSE, TRUE);
+ return get_cookies (jar, uri, NULL, NULL, TRUE, for_http, FALSE, TRUE);
}
/**
@@ -479,10 +479,9 @@ soup_cookie_jar_get_cookie_list (SoupCookieJar *jar, SoupURI *uri, gboolean for_
* @uri: a #SoupURI
* @top_level: (nullable): a #SoupURI for the top level document
* @site_for_cookies: (nullable): a #SoupURI indicating the origin to get cookies for
- * @method: (nullable): the HTTP method requesting the cookies, this
- * should only be %NULL when @for_http is %FALSE
* @for_http: whether or not the return value is being passed directly
* to an HTTP operation
+ * @is_safe_method: if the HTTP method is safe, as defined by RFC 7231, ignored when @for_http is %FALSE
* @is_top_level_navigation: whether or not the HTTP request is part of
* top level navigation
*
@@ -501,15 +500,14 @@ soup_cookie_jar_get_cookie_list_with_same_site_info (SoupCookieJar *jar,
SoupURI *uri,
SoupURI *top_level,
SoupURI *site_for_cookies,
- const char *method,
- gboolean for_http,
- gboolean is_top_level_navigation)
+ gboolean for_http,
+ gboolean is_safe_method,
+ gboolean is_top_level_navigation)
{
g_return_val_if_fail (SOUP_IS_COOKIE_JAR (jar), NULL);
g_return_val_if_fail (uri != NULL, NULL);
- g_return_val_if_fail (method != NULL || for_http == FALSE, NULL);
- return get_cookies (jar, uri, top_level, site_for_cookies, g_intern_string (method), for_http,
is_top_level_navigation, TRUE);
+ return get_cookies (jar, uri, top_level, site_for_cookies, is_safe_method, for_http,
is_top_level_navigation, TRUE);
}
static const char *
@@ -806,8 +804,9 @@ msg_starting_cb (SoupMessage *msg, gpointer feature)
cookies = soup_cookie_jar_get_cookie_list_with_same_site_info (jar, soup_message_get_uri (msg),
soup_message_get_first_party (msg),
soup_message_get_site_for_cookies
(msg),
- msg->method,
- TRUE,
soup_message_get_is_top_level_navigation (msg));
+ TRUE,
+ SOUP_METHOD_IS_SAFE (msg->method),
+
soup_message_get_is_top_level_navigation (msg));
if (cookies != NULL) {
char *cookie_header = soup_cookies_to_cookie_header (cookies);
soup_message_headers_replace (msg->request_headers, "Cookie", cookie_header);
diff --git a/libsoup/soup-cookie-jar.h b/libsoup/soup-cookie-jar.h
index 639df342..9161cd46 100644
--- a/libsoup/soup-cookie-jar.h
+++ b/libsoup/soup-cookie-jar.h
@@ -65,8 +65,8 @@ GSList * soup_cookie_jar_get_cookie_list_with_same_site_info (
SoupURI *uri,
SoupURI *top_level,
SoupURI
*site_for_cookies,
- const char *method,
gboolean for_http,
+ gboolean
is_safe_method,
gboolean
is_top_level_navigation);
SOUP_AVAILABLE_IN_2_24
void soup_cookie_jar_set_cookie (SoupCookieJar *jar,
diff --git a/tests/samesite-test.c b/tests/samesite-test.c
index 675f1e57..0b081b2b 100644
--- a/tests/samesite-test.c
+++ b/tests/samesite-test.c
@@ -82,8 +82,8 @@ same_site_test (SameSiteFixture *fixture, gconstpointer user_data)
fixture->cookies = soup_cookie_jar_get_cookie_list_with_same_site_info (fixture->jar,
fixture->origin_uri,
test->cross_origin ?
fixture->cross_uri : fixture->origin_uri,
test->cookie_uri_is_origin ?
fixture->origin_uri : NULL,
- test->unsafe_method ? "POST"
: "GET",
test->javascript ? FALSE :
TRUE,
+ !test->unsafe_method,
test->top_level_nav);
assert_highest_policy_visible (fixture->cookies, test->visible_policy);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]