https://bugs.webkit.org/show_bug.cgi?id=123124
Enthusiastically reviewed by Tim Horton.
* CMakeLists.txt:
* GNUmakefile.list.am:
* WebCore.xcodeproj/project.pbxproj:
Make more methods pure virtual in the interface:
* Modules/indexeddb/IDBTransactionBackendInterface.h:
* Modules/indexeddb/leveldb/IDBTransactionBackendLevelDB.cpp:
* Modules/indexeddb/leveldb/IDBTransactionBackendLevelDB.h:
Update the name of the class, and use IDBTransactionBackendInterface instead of IDBTransactionBackendLeveDB:
* Modules/indexeddb/IDBTransactionCoordinator.cpp: Renamed from Source/WebCore/Modules/indexeddb/leveldb/IDBTransactionCoordinatorLevelDB.cpp.
(WebCore::IDBTransactionCoordinator::create):
(WebCore::IDBTransactionCoordinator::IDBTransactionCoordinator):
(WebCore::IDBTransactionCoordinator::~IDBTransactionCoordinator):
(WebCore::IDBTransactionCoordinator::didCreateTransaction):
(WebCore::IDBTransactionCoordinator::didStartTransaction):
(WebCore::IDBTransactionCoordinator::didFinishTransaction):
(WebCore::IDBTransactionCoordinator::isActive):
(WebCore::IDBTransactionCoordinator::processStartedTransactions):
(WebCore::doScopesOverlap):
(WebCore::IDBTransactionCoordinator::canRunTransaction):
* Modules/indexeddb/IDBTransactionCoordinator.h: Renamed from Source/WebCore/Modules/indexeddb/leveldb/IDBTransactionCoordinatorLevelDB.h.
Update the name of the class elsewhere:
* Modules/indexeddb/leveldb/IDBDatabaseBackendLevelDB.cpp:
(WebCore::IDBDatabaseBackendLevelDB::IDBDatabaseBackendLevelDB):
* Modules/indexeddb/leveldb/IDBDatabaseBackendLevelDB.h:
(WebCore::IDBDatabaseBackendLevelDB::transactionCoordinator):
* Modules/indexeddb/leveldb/IDBFactoryBackendLevelDB.cpp:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@157766
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
Modules/indexeddb/IDBPendingTransactionMonitor.cpp
Modules/indexeddb/IDBRequest.cpp
Modules/indexeddb/IDBTransaction.cpp
+ Modules/indexeddb/IDBTransactionCoordinator.cpp
Modules/indexeddb/IDBVersionChangeEvent.cpp
Modules/indexeddb/PageGroupIndexedDatabase.cpp
Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.cpp
Modules/indexeddb/leveldb/IDBObjectStoreBackendLevelDB.cpp
Modules/indexeddb/leveldb/IDBTransactionBackendLevelDB.cpp
Modules/indexeddb/leveldb/IDBTransactionBackendLevelDBOperations.cpp
- Modules/indexeddb/leveldb/IDBTransactionCoordinatorLevelDB.cpp
Modules/mediasource/MediaSource.cpp
Modules/mediasource/MediaSourceRegistry.cpp
+2013-10-21 Brady Eidson <beidson@apple.com>
+
+ Make IDBTransactionCoordinatorLevelDB cross platform
+ https://bugs.webkit.org/show_bug.cgi?id=123124
+
+ Enthusiastically reviewed by Tim Horton.
+
+ * CMakeLists.txt:
+ * GNUmakefile.list.am:
+ * WebCore.xcodeproj/project.pbxproj:
+
+ Make more methods pure virtual in the interface:
+ * Modules/indexeddb/IDBTransactionBackendInterface.h:
+ * Modules/indexeddb/leveldb/IDBTransactionBackendLevelDB.cpp:
+ * Modules/indexeddb/leveldb/IDBTransactionBackendLevelDB.h:
+
+ Update the name of the class, and use IDBTransactionBackendInterface instead of IDBTransactionBackendLeveDB:
+ * Modules/indexeddb/IDBTransactionCoordinator.cpp: Renamed from Source/WebCore/Modules/indexeddb/leveldb/IDBTransactionCoordinatorLevelDB.cpp.
+ (WebCore::IDBTransactionCoordinator::create):
+ (WebCore::IDBTransactionCoordinator::IDBTransactionCoordinator):
+ (WebCore::IDBTransactionCoordinator::~IDBTransactionCoordinator):
+ (WebCore::IDBTransactionCoordinator::didCreateTransaction):
+ (WebCore::IDBTransactionCoordinator::didStartTransaction):
+ (WebCore::IDBTransactionCoordinator::didFinishTransaction):
+ (WebCore::IDBTransactionCoordinator::isActive):
+ (WebCore::IDBTransactionCoordinator::processStartedTransactions):
+ (WebCore::doScopesOverlap):
+ (WebCore::IDBTransactionCoordinator::canRunTransaction):
+ * Modules/indexeddb/IDBTransactionCoordinator.h: Renamed from Source/WebCore/Modules/indexeddb/leveldb/IDBTransactionCoordinatorLevelDB.h.
+
+ Update the name of the class elsewhere:
+ * Modules/indexeddb/leveldb/IDBDatabaseBackendLevelDB.cpp:
+ (WebCore::IDBDatabaseBackendLevelDB::IDBDatabaseBackendLevelDB):
+ * Modules/indexeddb/leveldb/IDBDatabaseBackendLevelDB.h:
+ (WebCore::IDBDatabaseBackendLevelDB::transactionCoordinator):
+ * Modules/indexeddb/leveldb/IDBFactoryBackendLevelDB.cpp:
+
2013-10-21 Daniel Bates <dabates@apple.com>
[iOS] Upstream JSGlobalObject::shouldInterruptScriptBeforeTimeout()
Source/WebCore/Modules/indexeddb/leveldb/IDBTransactionBackendLevelDB.h \
Source/WebCore/Modules/indexeddb/leveldb/IDBTransactionBackendLevelDBOperations.cpp \
Source/WebCore/Modules/indexeddb/leveldb/IDBTransactionBackendLevelDBOperations.h \
- Source/WebCore/Modules/indexeddb/leveldb/IDBTransactionCoordinatorLevelDB.cpp \
- Source/WebCore/Modules/indexeddb/leveldb/IDBTransactionCoordinatorLevelDB.h \
Source/WebCore/Modules/indexeddb/IDBTransaction.cpp \
Source/WebCore/Modules/indexeddb/IDBTransaction.h \
Source/WebCore/Modules/indexeddb/IDBTransactionBackendInterface.h \
+ Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp \
+ Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.h \
Source/WebCore/Modules/indexeddb/IDBVersionChangeEvent.cpp \
Source/WebCore/Modules/indexeddb/IDBVersionChangeEvent.h \
Source/WebCore/Modules/indexeddb/IndexedDB.h \
virtual IndexedDB::TransactionMode mode() const = 0;
+ virtual void run() = 0;
virtual void commit() = 0;
virtual void abort() = 0;
virtual void abort(PassRefPtr<IDBDatabaseError>) = 0;
+ virtual const HashSet<int64_t>& scope() const = 0;
virtual void scheduleCreateObjectStoreOperation(const IDBObjectStoreMetadata&) = 0;
virtual void scheduleDeleteObjectStoreOperation(const IDBObjectStoreMetadata&) = 0;
*/
#include "config.h"
-#include "IDBTransactionCoordinatorLevelDB.h"
+#include "IDBTransactionCoordinator.h"
-#if ENABLE(INDEXED_DATABASE) && USE(LEVELDB)
+#if ENABLE(INDEXED_DATABASE)
-#include "IDBDatabaseBackendLevelDB.h"
#include "IDBDatabaseCallbacks.h"
-#include "IDBTransactionBackendLevelDB.h"
+#include "IDBTransactionBackendInterface.h"
namespace WebCore {
-PassOwnPtr<IDBTransactionCoordinatorLevelDB> IDBTransactionCoordinatorLevelDB::create()
+PassOwnPtr<IDBTransactionCoordinator> IDBTransactionCoordinator::create()
{
- return adoptPtr(new IDBTransactionCoordinatorLevelDB());
+ return adoptPtr(new IDBTransactionCoordinator());
}
-IDBTransactionCoordinatorLevelDB::IDBTransactionCoordinatorLevelDB()
+IDBTransactionCoordinator::IDBTransactionCoordinator()
{
}
-IDBTransactionCoordinatorLevelDB::~IDBTransactionCoordinatorLevelDB()
+IDBTransactionCoordinator::~IDBTransactionCoordinator()
{
}
-void IDBTransactionCoordinatorLevelDB::didCreateTransaction(IDBTransactionBackendLevelDB* transaction)
+void IDBTransactionCoordinator::didCreateTransaction(IDBTransactionBackendInterface* transaction)
{
ASSERT(!m_transactions.contains(transaction));
m_transactions.add(transaction, transaction);
}
-void IDBTransactionCoordinatorLevelDB::didStartTransaction(IDBTransactionBackendLevelDB* transaction)
+void IDBTransactionCoordinator::didStartTransaction(IDBTransactionBackendInterface* transaction)
{
ASSERT(m_transactions.contains(transaction));
processStartedTransactions();
}
-void IDBTransactionCoordinatorLevelDB::didFinishTransaction(IDBTransactionBackendLevelDB* transaction)
+void IDBTransactionCoordinator::didFinishTransaction(IDBTransactionBackendInterface* transaction)
{
ASSERT(m_transactions.contains(transaction));
#ifndef NDEBUG
// Verifies internal consistiency while returning whether anything is found.
-bool IDBTransactionCoordinatorLevelDB::isActive(IDBTransactionBackendLevelDB* transaction)
+bool IDBTransactionCoordinator::isActive(IDBTransactionBackendInterface* transaction)
{
bool found = false;
if (m_queuedTransactions.contains(transaction))
}
#endif
-void IDBTransactionCoordinatorLevelDB::processStartedTransactions()
+void IDBTransactionCoordinator::processStartedTransactions()
{
if (m_queuedTransactions.isEmpty())
return;
ASSERT(m_startedTransactions.isEmpty() || (*m_startedTransactions.begin())->mode() != IndexedDB::TransactionVersionChange);
- ListHashSet<IDBTransactionBackendLevelDB*>::const_iterator it = m_queuedTransactions.begin();
+ ListHashSet<IDBTransactionBackendInterface*>::const_iterator it = m_queuedTransactions.begin();
while (it != m_queuedTransactions.end()) {
- IDBTransactionBackendLevelDB* transaction = *it;
+ IDBTransactionBackendInterface* transaction = *it;
++it;
if (canRunTransaction(transaction)) {
m_queuedTransactions.remove(transaction);
return false;
}
-bool IDBTransactionCoordinatorLevelDB::canRunTransaction(IDBTransactionBackendLevelDB* transaction)
+bool IDBTransactionCoordinator::canRunTransaction(IDBTransactionBackendInterface* transaction)
{
ASSERT(m_queuedTransactions.contains(transaction));
switch (transaction->mode()) {
return true;
case IndexedDB::TransactionReadWrite:
- for (HashSet<IDBTransactionBackendLevelDB*>::const_iterator it = m_startedTransactions.begin(); it != m_startedTransactions.end(); ++it) {
+ for (HashSet<IDBTransactionBackendInterface*>::const_iterator it = m_startedTransactions.begin(); it != m_startedTransactions.end(); ++it) {
if ((*it)->mode() == IndexedDB::TransactionReadWrite && doScopesOverlap(transaction->scope(), (*it)->scope()))
return false;
}
- for (ListHashSet<IDBTransactionBackendLevelDB*>::const_iterator it = m_queuedTransactions.begin(); *it != transaction; ++it) {
+ for (ListHashSet<IDBTransactionBackendInterface*>::const_iterator it = m_queuedTransactions.begin(); *it != transaction; ++it) {
ASSERT(it != m_queuedTransactions.end());
if ((*it)->mode() == IndexedDB::TransactionReadWrite && doScopesOverlap(transaction->scope(), (*it)->scope()))
return false;
};
-#endif // ENABLE(INDEXED_DATABASE) && USE(LEVELDB)
+#endif // ENABLE(INDEXED_DATABASE)
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef IDBTransactionCoordinatorLevelDB_h
-#define IDBTransactionCoordinatorLevelDB_h
+#ifndef IDBTransactionCoordinator_h
+#define IDBTransactionCoordinator_h
#if ENABLE(INDEXED_DATABASE)
namespace WebCore {
-class IDBTransactionBackendLevelDB;
+class IDBTransactionBackendInterface;
// Transactions are executed in the order the were created.
-class IDBTransactionCoordinatorLevelDB {
+class IDBTransactionCoordinator {
public:
- static PassOwnPtr<IDBTransactionCoordinatorLevelDB> create();
- virtual ~IDBTransactionCoordinatorLevelDB();
+ static PassOwnPtr<IDBTransactionCoordinator> create();
+ virtual ~IDBTransactionCoordinator();
// Called by transactions as they start and finish.
- void didCreateTransaction(IDBTransactionBackendLevelDB*);
- void didStartTransaction(IDBTransactionBackendLevelDB*);
- void didFinishTransaction(IDBTransactionBackendLevelDB*);
+ void didCreateTransaction(IDBTransactionBackendInterface*);
+ void didStartTransaction(IDBTransactionBackendInterface*);
+ void didFinishTransaction(IDBTransactionBackendInterface*);
#ifndef NDEBUG
- bool isActive(IDBTransactionBackendLevelDB*);
+ bool isActive(IDBTransactionBackendInterface*);
#endif
private:
- IDBTransactionCoordinatorLevelDB();
+ IDBTransactionCoordinator();
void processStartedTransactions();
- bool canRunTransaction(IDBTransactionBackendLevelDB*);
+ bool canRunTransaction(IDBTransactionBackendInterface*);
// This is just an efficient way to keep references to all transactions.
- HashMap<IDBTransactionBackendLevelDB*, RefPtr<IDBTransactionBackendLevelDB> > m_transactions;
+ HashMap<IDBTransactionBackendInterface*, RefPtr<IDBTransactionBackendInterface> > m_transactions;
// Transactions in different states are grouped below.
- ListHashSet<IDBTransactionBackendLevelDB*> m_queuedTransactions;
- HashSet<IDBTransactionBackendLevelDB*> m_startedTransactions;
+ ListHashSet<IDBTransactionBackendInterface*> m_queuedTransactions;
+ HashSet<IDBTransactionBackendInterface*> m_startedTransactions;
};
} // namespace WebCore
#endif // ENABLE(INDEXED_DATABASE)
-#endif // IDBTransactionCoordinatorLevelDB_h
+#endif // IDBTransactionCoordinator_h
#include "IDBKeyRange.h"
#include "IDBObjectStoreBackendLevelDB.h"
#include "IDBTransactionBackendLevelDB.h"
-#include "IDBTransactionCoordinatorLevelDB.h"
+#include "IDBTransactionCoordinator.h"
#include "Logging.h"
#include "SharedBuffer.h"
#include <wtf/TemporaryChange.h>
, m_metadata(name, InvalidId, 0, InvalidId)
, m_identifier(uniqueIdentifier)
, m_factory(factory)
- , m_transactionCoordinator(IDBTransactionCoordinatorLevelDB::create())
+ , m_transactionCoordinator(IDBTransactionCoordinator::create())
, m_closingConnection(false)
{
ASSERT(!m_metadata.name.isNull());
class IDBDatabase;
class IDBFactoryBackendInterface;
class IDBTransactionBackendInterface;
-class IDBTransactionCoordinatorLevelDB;
+class IDBTransactionCoordinator;
class IDBDatabaseBackendLevelDB : public IDBDatabaseBackendInterface {
public:
virtual void createIndex(int64_t transactionId, int64_t objectStoreId, int64_t indexId, const String& name, const IDBKeyPath&, bool unique, bool multiEntry);
virtual void deleteIndex(int64_t transactionId, int64_t objectStoreId, int64_t indexId);
- IDBTransactionCoordinatorLevelDB* transactionCoordinator() const { return m_transactionCoordinator.get(); }
+ IDBTransactionCoordinator* transactionCoordinator() const { return m_transactionCoordinator.get(); }
void transactionStarted(IDBTransactionBackendInterface*);
void transactionFinished(IDBTransactionBackendInterface*);
void transactionFinishedAndCompleteFired(IDBTransactionBackendInterface*);
// This might not need to be a RefPtr since the factory's lifetime is that of the page group, but it's better to be conservitive than sorry.
RefPtr<IDBFactoryBackendInterface> m_factory;
- OwnPtr<IDBTransactionCoordinatorLevelDB> m_transactionCoordinator;
+ OwnPtr<IDBTransactionCoordinator> m_transactionCoordinator;
RefPtr<IDBTransactionBackendInterface> m_runningVersionChangeTransaction;
typedef HashMap<int64_t, IDBTransactionBackendInterface*> TransactionMap;
#include "IDBDatabaseBackendLevelDB.h"
#include "IDBDatabaseException.h"
#include "IDBTransactionBackendLevelDB.h"
-#include "IDBTransactionCoordinatorLevelDB.h"
+#include "IDBTransactionCoordinator.h"
#include "Logging.h"
#include "SecurityOrigin.h"
#include "IDBDatabaseException.h"
#include "IDBKeyRange.h"
#include "IDBTransactionBackendLevelDBOperations.h"
-#include "IDBTransactionCoordinatorLevelDB.h"
+#include "IDBTransactionCoordinator.h"
#include "Logging.h"
namespace WebCore {
class IDBCursorBackendLevelDB;
class IDBDatabaseCallbacks;
-class IDBTransactionBackendLevelDB : public IDBTransactionBackendInterface {
+class IDBTransactionBackendLevelDB FINAL : public IDBTransactionBackendInterface {
public:
static PassRefPtr<IDBTransactionBackendLevelDB> create(IDBDatabaseBackendLevelDB*, int64_t transactionId, PassRefPtr<IDBDatabaseCallbacks>, const Vector<int64_t>& objectStoreIds, IndexedDB::TransactionMode);
virtual ~IDBTransactionBackendLevelDB();
virtual void perform() = 0;
};
- void run();
+ virtual void run() OVERRIDE;
virtual IndexedDB::TransactionMode mode() const OVERRIDE FINAL { return m_mode; }
- const HashSet<int64_t>& scope() const { return m_objectStoreIds; }
+ const HashSet<int64_t>& scope() const OVERRIDE { return m_objectStoreIds; }
void scheduleTask(PassOwnPtr<Operation> task, PassOwnPtr<Operation> abortTask = nullptr) { scheduleTask(IDBDatabaseBackendInterface::NormalTask, task, abortTask); }
void scheduleTask(IDBDatabaseBackendInterface::TaskType, PassOwnPtr<Operation>, PassOwnPtr<Operation> abortTask = nullptr);
void registerOpenCursor(IDBCursorBackendLevelDB*);
51E3F9D60DA05E1D00250911 /* JSStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51E3F9D40DA05E1D00250911 /* JSStorage.cpp */; };
51E4143416A6596300C633C7 /* ResourceHandleTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E4143216A6595100C633C7 /* ResourceHandleTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
51E6821016387302003BBF3C /* LoaderStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E6820F16387302003BBF3C /* LoaderStrategy.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 51EAC5671815ED3E004F1BA4 /* IDBTransactionCoordinator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51EAC5651815ED3E004F1BA4 /* IDBTransactionCoordinator.cpp */; };
+ 51EAC5681815ED3E004F1BA4 /* IDBTransactionCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 51EAC5661815ED3E004F1BA4 /* IDBTransactionCoordinator.h */; settings = {ATTRIBUTES = (Private, ); }; };
51EC92650CE90DD400F90308 /* JSCustomSQLStatementErrorCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51EC925D0CE90DD400F90308 /* JSCustomSQLStatementErrorCallback.cpp */; };
51F6E0A31811D2520058A00A /* IDBTransactionBackendInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F6E08F1811D2520058A00A /* IDBTransactionBackendInterface.h */; settings = {ATTRIBUTES = (Private, ); }; };
51FA2D78152132B300C1BA0B /* DOMWindowExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 517FBA18151AA71B00B57959 /* DOMWindowExtension.h */; settings = {ATTRIBUTES = (Private, ); }; };
51E3F9D50DA05E1D00250911 /* JSStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStorage.h; sourceTree = "<group>"; };
51E4143216A6595100C633C7 /* ResourceHandleTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceHandleTypes.h; sourceTree = "<group>"; };
51E6820F16387302003BBF3C /* LoaderStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoaderStrategy.h; sourceTree = "<group>"; };
+ 51EAC5651815ED3E004F1BA4 /* IDBTransactionCoordinator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBTransactionCoordinator.cpp; sourceTree = "<group>"; };
+ 51EAC5661815ED3E004F1BA4 /* IDBTransactionCoordinator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBTransactionCoordinator.h; sourceTree = "<group>"; };
51EC925D0CE90DD400F90308 /* JSCustomSQLStatementErrorCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCustomSQLStatementErrorCallback.cpp; sourceTree = "<group>"; };
51F6A3D50663BF04004D2919 /* HTMLCanvasElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLCanvasElement.cpp; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
51F6A3D60663BF04004D2919 /* HTMLCanvasElement.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = HTMLCanvasElement.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
51D719A5181106E00016DC51 /* IDBTransaction.h */,
51D719A6181106E00016DC51 /* IDBTransaction.idl */,
51F6E08F1811D2520058A00A /* IDBTransactionBackendInterface.h */,
+ 51EAC5651815ED3E004F1BA4 /* IDBTransactionCoordinator.cpp */,
+ 51EAC5661815ED3E004F1BA4 /* IDBTransactionCoordinator.h */,
51D719AB181106E00016DC51 /* IDBVersionChangeEvent.cpp */,
51D719AC181106E00016DC51 /* IDBVersionChangeEvent.h */,
51D719AD181106E00016DC51 /* IDBVersionChangeEvent.idl */,
2E2D99CE10E2BBDA00496337 /* JSBlob.h in Headers */,
1449E24C107D4A8400B5793F /* JSCallbackData.h in Headers */,
65DF323A09D1DE65000BE325 /* JSCanvasGradient.h in Headers */,
+ 51EAC5681815ED3E004F1BA4 /* IDBTransactionCoordinator.h in Headers */,
65DF323C09D1DE65000BE325 /* JSCanvasPattern.h in Headers */,
65DF323C09D1DE65001BE325 /* JSCanvasProxy.h in Headers */,
E4D58EB517B4DBDC00CBDCA8 /* StyleResolveForDocument.h in Headers */,
1AE82FEC0CAB07EE002237AE /* JSSQLResultSet.cpp in Sources */,
1AFE11990CBFFCC4003017FA /* JSSQLResultSetRowList.cpp in Sources */,
51DCE8020CAC9F1C00488358 /* JSSQLResultSetRowListCustom.cpp in Sources */,
+ 51EAC5671815ED3E004F1BA4 /* IDBTransactionCoordinator.cpp in Sources */,
B59DD6A611902A62007E9684 /* JSSQLStatementCallback.cpp in Sources */,
B59DD6AA11902A71007E9684 /* JSSQLStatementErrorCallback.cpp in Sources */,
514C76380CE9225E007EF3CD /* JSSQLTransaction.cpp in Sources */,