#ifndef WEBDRIVER_COOKIEMANAGER_H_
#define WEBDRIVER_COOKIEMANAGER_H_
#include <map>
#include <string>
#include <vector>
namespace webdriver {
class BrowserCookie;
class HookProcessor;
class CookieManager {
public:
CookieManager(void);
virtual ~CookieManager(void);
static unsigned int WINAPI ThreadProc(LPVOID lpParameter);
void Initialize(HWND window_handle);
int GetCookies(const std::string& url,
std::vector<BrowserCookie>* all_cookies);
int SetCookie(const std::string& url, const BrowserCookie& cookie);
bool DeleteCookie(const std::string& url, const BrowserCookie& cookie);
private:
std::wstring SendGetCookieMessage(const std::wstring& url,
const unsigned int message,
HookProcessor* hook);
void ParseCookieString(const std::wstring& cookie_string,
std::map<std::string, std::string>* cookies);
BrowserCookie ParseSingleCookie(const std::string& cookie);
void ParseCookieList(const std::string& cookie_file_contents,
const bool include_secure_cookies,
std::map<std::string, BrowserCookie>* cookies);
std::string ReadCookieFile(const std::wstring& file_name);
bool RecursivelyDeleteCookie(const std::string& url, const BrowserCookie& cookie);
bool RecurseCookiePath(const std::string& url, const BrowserCookie& cookie);
bool RecurseCookieDomain(const std::string& url, const BrowserCookie& cookie);
bool IsAdvancedCookiesApi(void);
HWND window_handle_;
};
}
#endif