| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "mojo/services/network/cookie_store_impl.h" |
| |
| #include "mojo/common/common_type_converters.h" |
| #include "mojo/services/network/network_context.h" |
| #include "net/cookies/cookie_store.h" |
| #include "net/url_request/url_request_context.h" |
| |
| namespace mojo { |
| namespace { |
| |
| void AdaptGetCookiesCallback(const Callback<void(String)>& callback, |
| const std::string& cookies) { |
| callback.Run(cookies); |
| } |
| |
| void AdaptSetCookieCallback(const Callback<void(bool)>& callback, |
| bool success) { |
| callback.Run(success); |
| } |
| |
| } // namespace |
| |
| CookieStoreImpl::CookieStoreImpl(NetworkContext* context, |
| const GURL& origin) |
| : context_(context), |
| origin_(origin) { |
| } |
| |
| CookieStoreImpl::~CookieStoreImpl() { |
| } |
| |
| void CookieStoreImpl::Get(const String& url, |
| const Callback<void(String)>& callback) { |
| // TODO(darin): Perform origin restriction. |
| net::CookieStore* store = context_->url_request_context()->cookie_store(); |
| if (!store) { |
| callback.Run(String()); |
| return; |
| } |
| store->GetCookiesWithOptionsAsync( |
| url.To<GURL>(), |
| net::CookieOptions(), |
| base::Bind(&AdaptGetCookiesCallback, callback)); |
| } |
| |
| void CookieStoreImpl::Set(const String& url, |
| const String& cookie, |
| const Callback<void(bool)>& callback) { |
| // TODO(darin): Perform origin restriction. |
| net::CookieStore* store = context_->url_request_context()->cookie_store(); |
| if (!store) { |
| callback.Run(false); |
| return; |
| } |
| store->SetCookieWithOptionsAsync( |
| url.To<GURL>(), |
| cookie, |
| net::CookieOptions(), |
| base::Bind(&AdaptSetCookieCallback, callback)); |
| } |
| |
| } // namespace mojo |