summaryrefslogtreecommitdiffstats
path: root/WebCore/storage/IDBTransactionBackendImpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/storage/IDBTransactionBackendImpl.h')
-rw-r--r--WebCore/storage/IDBTransactionBackendImpl.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/WebCore/storage/IDBTransactionBackendImpl.h b/WebCore/storage/IDBTransactionBackendImpl.h
index c037a11..5f7409b 100644
--- a/WebCore/storage/IDBTransactionBackendImpl.h
+++ b/WebCore/storage/IDBTransactionBackendImpl.h
@@ -47,28 +47,29 @@ public:
virtual PassRefPtr<IDBObjectStoreBackendInterface> objectStore(const String& name);
virtual unsigned short mode() const { return m_mode; }
- virtual bool scheduleTask(PassOwnPtr<ScriptExecutionContext::Task>);
+ virtual bool scheduleTask(PassOwnPtr<ScriptExecutionContext::Task> task, PassOwnPtr<ScriptExecutionContext::Task> abortTask);
virtual void didCompleteTaskEvents();
virtual void abort();
virtual int id() const { return m_id; }
virtual void setCallbacks(IDBTransactionCallbacks* callbacks) { m_callbacks = callbacks; }
void run();
- bool isFinished() const { return m_state == Finished; }
private:
IDBTransactionBackendImpl(DOMStringList* objectStores, unsigned short mode, unsigned long timeout, int id, IDBDatabaseBackendImpl*);
enum State {
- NotStarted,
- Started,
- Finished,
+ Unused, // Created, but no tasks yet.
+ StartPending, // Enqueued tasks, but SQLite transaction not yet started.
+ Running, // SQLite transaction started but not yet finished.
+ Finished, // Either aborted or committed.
};
void start();
void commit();
- void timerFired(Timer<IDBTransactionBackendImpl>*);
+ void taskTimerFired(Timer<IDBTransactionBackendImpl>*);
+ void taskEventTimerFired(Timer<IDBTransactionBackendImpl>*);
RefPtr<DOMStringList> m_objectStoreNames;
unsigned short m_mode;
@@ -81,11 +82,13 @@ private:
typedef Deque<OwnPtr<ScriptExecutionContext::Task> > TaskQueue;
TaskQueue m_taskQueue;
+ TaskQueue m_abortTaskQueue;
OwnPtr<SQLiteTransaction> m_transaction;
// FIXME: delete the timer once we have threads instead.
- Timer<IDBTransactionBackendImpl> m_timer;
+ Timer<IDBTransactionBackendImpl> m_taskTimer;
+ Timer<IDBTransactionBackendImpl> m_taskEventTimer;
int m_pendingEvents;
};