#ifndef CookieManager_h
#define CookieManager_h
#include "CookieMap.h"
#include "ParsedCookie.h"
#include "Timer.h"
#include <BlackBerryPlatformGuardedPointer.h>
#include <wtf/HashMap.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class CookieDatabaseBackingStore;
class KURL;
enum BackingStoreRemovalPolicy {
RemoveFromBackingStore,
BackingStoreCookieEntry,
DoNotRemoveFromBackingStore
};
enum CookieStorageAcceptPolicy {
CookieStorageAcceptPolicyAlways,
CookieStorageAcceptPolicyNever,
CookieStorageAcceptPolicyOnlyFromMainDocumentDomain
};
class CookieManager: public BlackBerry::Platform::GuardedPointerBase {
public:
bool canLocalAccessAllCookies() const { return m_shouldDumpAllCookies; }
void setCanLocalAccessAllCookies(bool enabled) { m_shouldDumpAllCookies = enabled; }
void setCookies(const KURL&, const String& value, CookieFilter = WithHttpOnlyCookies);
void setCookies(const KURL&, const Vector<String>& cookies, CookieFilter);
void removeAllCookies(BackingStoreRemovalPolicy);
void removeCookieWithName(const KURL&, const String& cookieName);
unsigned short cookiesCount() const { return m_count; }
void setCookieJar(const char*);
const String& cookieJar() const { return m_cookieJarFileName; }
void removedCookie()
{
ASSERT(m_count > 0);
--m_count;
}
void addedCookie() { ++m_count; }
static unsigned maxCookieLength() { return s_maxCookieLength; }
void setCookiePolicy(CookieStorageAcceptPolicy policy) { m_policy = policy; }
CookieStorageAcceptPolicy cookiePolicy() const { return m_policy; }
void setPrivateMode(bool);
String generateHtmlFragmentForCookies();
String getCookie(const KURL& requestURL, CookieFilter) const;
void getRawCookies(Vector<RefPtr<ParsedCookie> >& stackOfCookies, const KURL& requestURL, CookieFilter = WithHttpOnlyCookies) const;
private:
friend CookieManager& cookieManager();
friend class CookieDatabaseBackingStore;
CookieManager();
virtual ~CookieManager();
void checkAndTreatCookie(PassRefPtr<ParsedCookie> prpCandidateCookie, BackingStoreRemovalPolicy, CookieFilter = WithHttpOnlyCookies);
void addCookieToMap(CookieMap* targetMap, PassRefPtr<ParsedCookie> prpCandidateCookie, BackingStoreRemovalPolicy postToBackingStore, CookieFilter = WithHttpOnlyCookies);
CookieMap* findOrCreateCookieMap(CookieMap* protocolMap, const PassRefPtr<ParsedCookie> candidateCookie);
void initiateCookieLimitCleanUp();
void cookieLimitCleanUp(Timer<CookieManager>*);
HashMap<String, CookieMap*> m_managerMap;
unsigned short m_count;
bool m_privateMode;
bool m_shouldDumpAllCookies;
bool m_syncedWithDatabase;
String m_cookieJarFileName;
void getBackingStoreCookies();
static const unsigned s_maxCookieLength = 4096;
CookieStorageAcceptPolicy m_policy;
CookieDatabaseBackingStore* m_cookieBackingStore;
Timer<CookieManager> m_limitTimer;
DISABLE_COPY(CookieManager)
};
CookieManager& cookieManager();
}
#endif // CookieManager_h