blob: e6fdae9f30ff6f4740a90bacb6857ce9b56d2b80 [file] [log] [blame]
// 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_