1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "content/renderer/renderer_webcookiejar_impl.h" 6 7 #include "base/strings/utf_string_conversions.h" 8 #include "content/common/cookie_data.h" 9 #include "content/common/view_messages.h" 10 #include "content/public/renderer/content_renderer_client.h" 11 #include "content/renderer/render_view_impl.h" 12 #include "third_party/WebKit/public/platform/WebCookie.h" 13 14 using WebKit::WebCookie; 15 using WebKit::WebString; 16 using WebKit::WebURL; 17 using WebKit::WebVector; 18 19 namespace content { 20 21 void RendererWebCookieJarImpl::setCookie( 22 const WebURL& url, const WebURL& first_party_for_cookies, 23 const WebString& value) { 24 std::string value_utf8 = UTF16ToUTF8(value); 25 if (!GetContentClient()->renderer()->HandleSetCookieRequest( 26 sender_, url, first_party_for_cookies, value_utf8)) { 27 sender_->Send(new ViewHostMsg_SetCookie( 28 MSG_ROUTING_NONE, url, first_party_for_cookies, value_utf8)); 29 } 30 } 31 32 WebString RendererWebCookieJarImpl::cookies( 33 const WebURL& url, const WebURL& first_party_for_cookies) { 34 std::string value_utf8; 35 36 if (!GetContentClient()->renderer()->HandleGetCookieRequest( 37 sender_, url, first_party_for_cookies, &value_utf8)) { 38 // NOTE: This may pump events (see RenderThread::Send). 39 sender_->Send(new ViewHostMsg_GetCookies( 40 MSG_ROUTING_NONE, url, first_party_for_cookies, &value_utf8)); 41 } 42 return WebString::fromUTF8(value_utf8); 43 } 44 45 WebString RendererWebCookieJarImpl::cookieRequestHeaderFieldValue( 46 const WebURL& url, const WebURL& first_party_for_cookies) { 47 return cookies(url, first_party_for_cookies); 48 } 49 50 void RendererWebCookieJarImpl::rawCookies( 51 const WebURL& url, const WebURL& first_party_for_cookies, 52 WebVector<WebCookie>& raw_cookies) { 53 std::vector<CookieData> cookies; 54 // NOTE: This may pump events (see RenderThread::Send). 55 sender_->Send(new ViewHostMsg_GetRawCookies( 56 url, first_party_for_cookies, &cookies)); 57 58 WebVector<WebCookie> result(cookies.size()); 59 for (size_t i = 0; i < cookies.size(); ++i) { 60 const CookieData& c = cookies[i]; 61 result[i] = WebCookie(WebString::fromUTF8(c.name), 62 WebString::fromUTF8(c.value), 63 WebString::fromUTF8(c.domain), 64 WebString::fromUTF8(c.path), 65 c.expires, 66 c.http_only, 67 c.secure, 68 c.session); 69 } 70 raw_cookies.swap(result); 71 } 72 73 void RendererWebCookieJarImpl::deleteCookie( 74 const WebURL& url, const WebString& cookie_name) { 75 std::string cookie_name_utf8 = UTF16ToUTF8(cookie_name); 76 sender_->Send(new ViewHostMsg_DeleteCookie(url, cookie_name_utf8)); 77 } 78 79 bool RendererWebCookieJarImpl::cookiesEnabled( 80 const WebURL& url, const WebURL& first_party_for_cookies) { 81 bool cookies_enabled; 82 // NOTE: This may pump events (see RenderThread::Send). 83 sender_->Send(new ViewHostMsg_CookiesEnabled( 84 url, first_party_for_cookies, &cookies_enabled)); 85 return cookies_enabled; 86 } 87 88 } // namespace content 89