15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2010 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/renderer/renderer_webcookiejar_impl.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/common/cookie_data.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/view_messages.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/renderer/content_renderer_client.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/renderer/render_view_impl.h" 12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebCookie.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebCookie; 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebString; 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebURL; 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebVector; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RendererWebCookieJarImpl::setCookie( 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const WebURL& url, const WebURL& first_party_for_cookies, 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const WebString& value) { 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string value_utf8 = base::UTF16ToUTF8(value); 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) sender_->Send(new ViewHostMsg_SetCookie( 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) sender_->GetRoutingID(), url, first_party_for_cookies, value_utf8)); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebString RendererWebCookieJarImpl::cookies( 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const WebURL& url, const WebURL& first_party_for_cookies) { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string value_utf8; 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) sender_->Send(new ViewHostMsg_GetCookies( 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) sender_->GetRoutingID(), url, first_party_for_cookies, &value_utf8)); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return WebString::fromUTF8(value_utf8); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebString RendererWebCookieJarImpl::cookieRequestHeaderFieldValue( 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const WebURL& url, const WebURL& first_party_for_cookies) { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return cookies(url, first_party_for_cookies); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RendererWebCookieJarImpl::rawCookies( 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const WebURL& url, const WebURL& first_party_for_cookies, 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebVector<WebCookie>& raw_cookies) { 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::vector<CookieData> cookies; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sender_->Send(new ViewHostMsg_GetRawCookies( 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) url, first_party_for_cookies, &cookies)); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebVector<WebCookie> result(cookies.size()); 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch for (size_t i = 0; i < cookies.size(); ++i) { 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const CookieData& c = cookies[i]; 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch result[i] = WebCookie(WebString::fromUTF8(c.name), 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch WebString::fromUTF8(c.value), 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch WebString::fromUTF8(c.domain), 55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch WebString::fromUTF8(c.path), 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch c.expires, 57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch c.http_only, 58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch c.secure, 59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch c.session); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) raw_cookies.swap(result); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RendererWebCookieJarImpl::deleteCookie( 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const WebURL& url, const WebString& cookie_name) { 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string cookie_name_utf8 = base::UTF16ToUTF8(cookie_name); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sender_->Send(new ViewHostMsg_DeleteCookie(url, cookie_name_utf8)); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool RendererWebCookieJarImpl::cookiesEnabled( 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const WebURL& url, const WebURL& first_party_for_cookies) { 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool cookies_enabled = false; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sender_->Send(new ViewHostMsg_CookiesEnabled( 74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) sender_->GetRoutingID(), url, first_party_for_cookies, &cookies_enabled)); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return cookies_enabled; 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 79