void setCookiesFromDOM(const NetworkStorageSession& session, const URL& firstParty, const URL& url, const String& value) { SoupCookieJar* jar = cookieJarForSession(session); if (!jar) return; GUniquePtr<SoupURI> origin = url.createSoupURI(); GUniquePtr<SoupURI> firstPartyURI = firstParty.createSoupURI(); // Get existing cookies for this origin. GSList* existingCookies = soup_cookie_jar_get_cookie_list(jar, origin.get(), TRUE); Vector<String> cookies; value.split('\n', cookies); const size_t cookiesCount = cookies.size(); for (size_t i = 0; i < cookiesCount; ++i) { GUniquePtr<SoupCookie> cookie(soup_cookie_parse(cookies[i].utf8().data(), origin.get())); if (!cookie) continue; // Make sure the cookie is not httpOnly since such cookies should not be set from JavaScript. if (soup_cookie_get_http_only(cookie.get())) continue; // Make sure we do not overwrite httpOnly cookies from JavaScript. if (httpOnlyCookieExists(existingCookies, soup_cookie_get_name(cookie.get()), soup_cookie_get_path(cookie.get()))) continue; soup_cookie_jar_add_cookie_with_first_party(jar, firstPartyURI.get(), cookie.release()); } soup_cookies_free(existingCookies); }
static void t5_http_req_callback (SoupSession *session, SoupMessage *msg, gpointer data) { guint status_code; gchar *method; SoupURI *uri; const gchar *header; g_object_get (G_OBJECT (msg), "method", &method, "status-code", &status_code, "uri", &uri, NULL); GST_WARNING ("%s %s status code: %d, expected %d", method, soup_uri_get_path (uri), status_code, SOUP_STATUS_CANCELLED); BOOST_CHECK (status_code == SOUP_STATUS_CANCELLED); /* TODO: Check why soup_cookies_from_response does not work */ header = soup_message_headers_get_list (msg->response_headers, "Set-Cookie"); BOOST_CHECK (header != NULL); cookie = soup_cookie_parse (header, NULL); BOOST_CHECK (cookie != NULL); t5_send_get_request_2(); soup_uri_free (uri); g_free (method); }
JNIEXPORT jintLong JNICALL WebKitGTK_NATIVE(_1soup_1cookie_1parse) (JNIEnv *env, jclass that, jbyteArray arg0, jintLong arg1) { jbyte *lparg0=NULL; jintLong rc = 0; WebKitGTK_NATIVE_ENTER(env, that, _1soup_1cookie_1parse_FUNC); if (arg0) if ((lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL)) == NULL) goto fail; rc = (jintLong)soup_cookie_parse((const char *)lparg0, (SoupURI *)arg1); fail: if (arg0 && lparg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0); WebKitGTK_NATIVE_EXIT(env, that, _1soup_1cookie_1parse_FUNC); return rc; }