diff options
author | Ben Murdoch <benm@google.com> | 2011-05-24 11:24:40 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-06-02 09:53:15 +0100 |
commit | 81bc750723a18f21cd17d1b173cd2a4dda9cea6e (patch) | |
tree | 7a9e5ed86ff429fd347a25153107221543909b19 /Source/WebCore/storage/IDBTransaction.cpp | |
parent | 94088a6d336c1dd80a1e734af51e96abcbb689a7 (diff) | |
download | external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.zip external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.tar.gz external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.tar.bz2 |
Merge WebKit at r80534: Intial merge by Git
Change-Id: Ia7a83357124c9e1cdb1debf55d9661ec0bd09a61
Diffstat (limited to 'Source/WebCore/storage/IDBTransaction.cpp')
-rw-r--r-- | Source/WebCore/storage/IDBTransaction.cpp | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/Source/WebCore/storage/IDBTransaction.cpp b/Source/WebCore/storage/IDBTransaction.cpp index 1f696b3..710bb76 100644 --- a/Source/WebCore/storage/IDBTransaction.cpp +++ b/Source/WebCore/storage/IDBTransaction.cpp @@ -31,10 +31,9 @@ #include "Document.h" #include "EventException.h" #include "EventQueue.h" -#include "IDBAbortEvent.h" -#include "IDBCompleteEvent.h" #include "IDBDatabase.h" #include "IDBDatabaseException.h" +#include "IDBEventDispatcher.h" #include "IDBIndex.h" #include "IDBObjectStore.h" #include "IDBObjectStoreBackendInterface.h" @@ -104,14 +103,31 @@ void IDBTransaction::abort() m_backend->abort(); } +void IDBTransaction::registerRequest(IDBRequest* request) +{ + m_childRequests.add(request); +} + +void IDBTransaction::unregisterRequest(IDBRequest* request) +{ + // If we aborted the request, it will already have been removed. + m_childRequests.remove(request); +} + void IDBTransaction::onAbort() { - enqueueEvent(IDBAbortEvent::create(IDBAny::create(this))); + while (!m_childRequests.isEmpty()) { + IDBRequest* request = *m_childRequests.begin(); + m_childRequests.remove(request); + request->abort(); + } + + enqueueEvent(Event::create(eventNames().abortEvent, true, false)); } void IDBTransaction::onComplete() { - enqueueEvent(IDBCompleteEvent::create(IDBAny::create(this))); + enqueueEvent(Event::create(eventNames().completeEvent, false, false)); } bool IDBTransaction::hasPendingActivity() const @@ -139,8 +155,9 @@ bool IDBTransaction::dispatchEvent(PassRefPtr<Event> event) targets.append(this); targets.append(db()); - ASSERT(event->isIDBAbortEvent() || event->isIDBCompleteEvent()); - return static_cast<IDBEvent*>(event.get())->dispatch(targets); + // FIXME: When we allow custom event dispatching, this will probably need to change. + ASSERT(event->type() == eventNames().completeEvent || event->type() == eventNames().abortEvent); + return IDBEventDispatcher::dispatch(event.get(), targets); } bool IDBTransaction::canSuspend() const |