CookieDatabaseBackingStore.h [plain text]
#ifndef CookieDatabaseBackingStore_h
#define CookieDatabaseBackingStore_h
#include "SQLiteDatabase.h"
#include "Timer.h"
#include <BlackBerryPlatformMessageClient.h>
#include <BlackBerryPlatformTimer.h>
#include <GenericTimerClient.h>
#include <ThreadTimerClient.h>
#include <wtf/ThreadingPrimitives.h>
#include <wtf/Vector.h>
#include <wtf/text/StringHash.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class ParsedCookie;
class CookieDatabaseBackingStore : public BlackBerry::Platform::MessageClient , public BlackBerry::Platform::ThreadTimerClient {
public:
static CookieDatabaseBackingStore* create() { return new CookieDatabaseBackingStore; }
void open(const String& cookieJar);
void insert(const PassRefPtr<ParsedCookie>);
void update(const PassRefPtr<ParsedCookie>);
void remove(const PassRefPtr<ParsedCookie>);
void removeAll();
void getCookiesFromDatabase(Vector<RefPtr<ParsedCookie> >& stackOfCookies, unsigned limit = 0);
void openAndLoadDatabaseSynchronously(const String& cookieJar);
void sendChangesToDatabaseSynchronously();
virtual void onThreadFinished();
virtual bool willFireTimer() { return true; }
virtual int getPulseCode() const { return pulseCode(); }
virtual int getConnectionId() const { return connectionId(); }
virtual int defaultTimerPriority() const { return threadPriority(); }
private:
enum UpdateParameter {
Insert,
Update,
Delete,
};
CookieDatabaseBackingStore();
~CookieDatabaseBackingStore();
void addToChangeQueue(const PassRefPtr<ParsedCookie> changedCookie, UpdateParameter actionParam);
void sendChangesToDatabase(int interval);
void sendChangesToDatabaseTimerFired();
void invokeOpen(const String& cookieJar);
void invokeRemoveAll();
Vector<RefPtr<ParsedCookie> >* invokeGetCookiesWithLimit(unsigned limit);
void invokeSendChangesToDatabase();
void close();
typedef pair<const RefPtr<ParsedCookie>, UpdateParameter> CookieAction;
Vector<CookieAction> m_changedCookies;
Mutex m_mutex;
String m_tableName;
BlackBerry::Platform::Timer<CookieDatabaseBackingStore> m_dbTimer;
BlackBerry::Platform::GenericTimerClient* m_dbTimerClient;
SQLiteDatabase m_db;
SQLiteStatement *m_insertStatement;
SQLiteStatement *m_updateStatement;
SQLiteStatement *m_deleteStatement;
};
CookieDatabaseBackingStore& cookieBackingStore();
}
#endif // CookieDatabaseBackingStore_h