1// Copyright 2014 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 "mojo/services/network/cookie_store_impl.h" 6 7#include "mojo/common/common_type_converters.h" 8#include "mojo/services/network/network_context.h" 9#include "net/cookies/cookie_store.h" 10#include "net/url_request/url_request_context.h" 11 12namespace mojo { 13namespace { 14 15void AdaptGetCookiesCallback(const Callback<void(String)>& callback, 16 const std::string& cookies) { 17 callback.Run(cookies); 18} 19 20void AdaptSetCookieCallback(const Callback<void(bool)>& callback, 21 bool success) { 22 callback.Run(success); 23} 24 25} // namespace 26 27CookieStoreImpl::CookieStoreImpl(NetworkContext* context, 28 const GURL& origin) 29 : context_(context), 30 origin_(origin) { 31} 32 33CookieStoreImpl::~CookieStoreImpl() { 34} 35 36void CookieStoreImpl::Get(const String& url, 37 const Callback<void(String)>& callback) { 38 // TODO(darin): Perform origin restriction. 39 net::CookieStore* store = context_->url_request_context()->cookie_store(); 40 if (!store) { 41 callback.Run(String()); 42 return; 43 } 44 store->GetCookiesWithOptionsAsync( 45 url.To<GURL>(), 46 net::CookieOptions(), 47 base::Bind(&AdaptGetCookiesCallback, callback)); 48} 49 50void CookieStoreImpl::Set(const String& url, 51 const String& cookie, 52 const Callback<void(bool)>& callback) { 53 // TODO(darin): Perform origin restriction. 54 net::CookieStore* store = context_->url_request_context()->cookie_store(); 55 if (!store) { 56 callback.Run(false); 57 return; 58 } 59 store->SetCookieWithOptionsAsync( 60 url.To<GURL>(), 61 cookie, 62 net::CookieOptions(), 63 base::Bind(&AdaptSetCookieCallback, callback)); 64} 65 66} // namespace mojo 67