| // Copyright (c) 2017 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. |
| |
| #ifndef IOS_NET_COOKIES_NS_HTTP_SYSTEM_COOKIE_STORE_H_ |
| #define IOS_NET_COOKIES_NS_HTTP_SYSTEM_COOKIE_STORE_H_ |
| |
| #import <Foundation/Foundation.h> |
| |
| #import "ios/net/cookies/system_cookie_store.h" |
| |
| namespace net { |
| |
| // This class is an implementation of SystemCookieStore, NSHTTPSystemCookieStore |
| // uses NSHTTPCookieStorage as the underlying system cookie store. |
| class NSHTTPSystemCookieStore : public net::SystemCookieStore { |
| public: |
| // By default the underlying cookiestore is |
| // |NSHTTPCookieStorage sharedHTTPCookieStorage| |
| NSHTTPSystemCookieStore(); |
| |
| explicit NSHTTPSystemCookieStore(NSHTTPCookieStorage* cookie_store); |
| |
| ~NSHTTPSystemCookieStore() override; |
| |
| // Gets cookies for URL and calls |callback| async on these cookies. |
| void GetCookiesForURLAsync(const GURL& url, |
| SystemCookieCallbackForCookies callback) override; |
| |
| // Gets all cookies and calls |callback| async on these cookies. |
| void GetAllCookiesAsync(SystemCookieCallbackForCookies callback) override; |
| |
| // Deletes specific cookie and calls |callback| async after that. |
| void DeleteCookieAsync(NSHTTPCookie* cookie, |
| SystemCookieCallback callback) override; |
| |
| // Sets cookie, and calls |callback| async after that. |
| void SetCookieAsync(NSHTTPCookie* cookie, |
| const base::Time* optional_creation_time, |
| SystemCookieCallback callback) override; |
| |
| // Clears all cookies from the store and call |callback| after all cookies are |
| // deleted. |
| void ClearStoreAsync(SystemCookieCallback callback) override; |
| |
| NSHTTPCookieAcceptPolicy GetCookieAcceptPolicy() override; |
| |
| private: |
| // Returns all cookies for a specific |url| from the internal cookie store. |
| // Cookies are sorted, as per RFC6265. |
| NSArray* GetCookiesForURL(const GURL& url); |
| |
| // Returns all cookies from the internal http cookie store. |
| // Cookies are sorted, as per RFC6265. |
| NSArray* GetAllCookies(); |
| |
| // Deletes a specific cookie from the internal http cookie store. |
| void DeleteCookie(NSHTTPCookie* cookie); |
| |
| // Sets a specific cookie to the internal http cookie store. |
| // if the |optional_creation_time| is nullptr, uses Time::Now() as the |
| // creation time. |
| void SetCookie(NSHTTPCookie* cookie, |
| const base::Time* optional_creation_time); |
| |
| // Clears all cookies from the internal cookie store. |
| void ClearStore(); |
| |
| NSHTTPCookieStorage* cookie_store_; |
| |
| DISALLOW_COPY_AND_ASSIGN(NSHTTPSystemCookieStore); |
| }; |
| |
| } // namespace net |
| |
| #endif // IOS_NET_COOKIES_NS_HTTP_SYSTEM_COOKIE_STORE_H_ |