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
12 namespace mojo {
13 namespace {
14
AdaptGetCookiesCallback(const Callback<void (String)> & callback,const std::string & cookies)15 void AdaptGetCookiesCallback(const Callback<void(String)>& callback,
16 const std::string& cookies) {
17 callback.Run(cookies);
18 }
19
AdaptSetCookieCallback(const Callback<void (bool)> & callback,bool success)20 void AdaptSetCookieCallback(const Callback<void(bool)>& callback,
21 bool success) {
22 callback.Run(success);
23 }
24
25 } // namespace
26
CookieStoreImpl(NetworkContext * context,const GURL & origin)27 CookieStoreImpl::CookieStoreImpl(NetworkContext* context,
28 const GURL& origin)
29 : context_(context),
30 origin_(origin) {
31 }
32
~CookieStoreImpl()33 CookieStoreImpl::~CookieStoreImpl() {
34 }
35
Get(const String & url,const Callback<void (String)> & callback)36 void 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
Set(const String & url,const String & cookie,const Callback<void (bool)> & callback)50 void 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