82 GOwnPtr<SoupCookie> newCookie(soup_cookie_parse(value.utf8().data(), origin.get()));
83 if (!newCookie)
84 return;
85
86 // Make sure the cookie is not httpOnly since such cookies should not be
87 // set from JavaScript (Bug 86067).
88 if (soup_cookie_get_http_only(newCookie.get()))
89 return;
90
91 // Make sure we do not overwrite httpOnly cookies from JavaScript (Bug 86067).
92 GOwnPtr<GSList> existingCookies(soup_cookie_jar_all_cookies(jar));
93 for (GSList* iter = existingCookies.get(); iter; iter = g_slist_next(iter)) {
94 GOwnPtr<SoupCookie> existingCookie(static_cast<SoupCookie*>(iter->data));
95 if (!soup_cookie_applies_to_uri(existingCookie.get(), origin.get()))
96 continue;
97 if (!strcmp(soup_cookie_get_name(existingCookie.get()), soup_cookie_get_name(newCookie.get()))
98 && !g_strcmp0(soup_cookie_get_path(existingCookie.get()), soup_cookie_get_path(newCookie.get()))) {
99 // Attempt to overwrite existing cookie
100 if (soup_cookie_get_http_only(existingCookie.get()))
101 return;
102 break;
103 }
104 }
105
106 // Check cookie jar policy and set cookie.
107 SoupCookieJarAcceptPolicy policy = soup_cookie_jar_get_accept_policy(jar);