2011-05-25 Hans Wennborg <hans@chromium.org>
authorhans@chromium.org <hans@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 26 May 2011 08:48:09 +0000 (08:48 +0000)
committerhans@chromium.org <hans@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 26 May 2011 08:48:09 +0000 (08:48 +0000)
commit86acd8879e17efc371e435127358aa8ea4e03633
treef1d7c7987741281d751f03cb985c0b9cf7c42a01
parenta5669e7c4dd59c471a65f9eff19c1151158cd6f9
2011-05-25  Hans Wennborg  <hans@chromium.org>

        Reviewed by Steve Block.

        IndexedDB: Support LevelDB transactions.
        https://bugs.webkit.org/show_bug.cgi?id=61270

        Introduce LevelDBTransaction, which implements in-memory transaction
        support on top of LevelDB, and hook this up for IndexedDB to use.

        This is all covered by existing tests.

        * CMakeLists.txt:
        * GNUmakefile.list.am:
        * WebCore.gypi:
        * WebCore.pro:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/leveldb/LevelDBDatabase.cpp:
        (WebCore::LevelDBDatabase::open):
        (WebCore::LevelDBDatabase::put):
        (WebCore::LevelDBDatabase::remove):
        (WebCore::LevelDBDatabase::write):
        (WebCore::IteratorImpl::IteratorImpl):
        (WebCore::IteratorImpl::isValid):
        (WebCore::IteratorImpl::seekToLast):
        (WebCore::IteratorImpl::seek):
        (WebCore::IteratorImpl::next):
        (WebCore::IteratorImpl::prev):
        (WebCore::IteratorImpl::key):
        (WebCore::IteratorImpl::value):
        (WebCore::LevelDBDatabase::createIterator):
        (WebCore::LevelDBDatabase::comparator):
        * platform/leveldb/LevelDBDatabase.h:
        * platform/leveldb/LevelDBIterator.h:
        (WebCore::LevelDBIterator::~LevelDBIterator):
        * platform/leveldb/LevelDBTransaction.cpp: Added.
        (WebCore::LevelDBTransaction::create):
        (WebCore::LevelDBTransaction::LevelDBTransaction):
        (WebCore::LevelDBTransaction::clearTree):
        (WebCore::LevelDBTransaction::~LevelDBTransaction):
        (WebCore::makeVector):
        (WebCore::LevelDBTransaction::set):
        (WebCore::LevelDBTransaction::put):
        (WebCore::LevelDBTransaction::remove):
        (WebCore::LevelDBTransaction::get):
        (WebCore::LevelDBTransaction::commit):
        (WebCore::LevelDBTransaction::rollback):
        (WebCore::LevelDBTransaction::createIterator):
        (WebCore::LevelDBTransaction::TreeIterator::create):
        (WebCore::LevelDBTransaction::TreeIterator::isValid):
        (WebCore::LevelDBTransaction::TreeIterator::seekToLast):
        (WebCore::LevelDBTransaction::TreeIterator::seek):
        (WebCore::LevelDBTransaction::TreeIterator::next):
        (WebCore::LevelDBTransaction::TreeIterator::prev):
        (WebCore::LevelDBTransaction::TreeIterator::key):
        (WebCore::LevelDBTransaction::TreeIterator::value):
        (WebCore::LevelDBTransaction::TreeIterator::isDeleted):
        (WebCore::LevelDBTransaction::TreeIterator::reset):
        (WebCore::LevelDBTransaction::TreeIterator::~TreeIterator):
        (WebCore::LevelDBTransaction::TreeIterator::TreeIterator):
        (WebCore::LevelDBTransaction::TransactionIterator::create):
        (WebCore::LevelDBTransaction::TransactionIterator::TransactionIterator):
        (WebCore::LevelDBTransaction::TransactionIterator::isValid):
        (WebCore::LevelDBTransaction::TransactionIterator::seekToLast):
        (WebCore::LevelDBTransaction::TransactionIterator::seek):
        (WebCore::LevelDBTransaction::TransactionIterator::next):
        (WebCore::LevelDBTransaction::TransactionIterator::prev):
        (WebCore::LevelDBTransaction::TransactionIterator::key):
        (WebCore::LevelDBTransaction::TransactionIterator::value):
        (WebCore::LevelDBTransaction::TransactionIterator::handleConflictsAndDeletes):
        (WebCore::LevelDBTransaction::TransactionIterator::setCurrentIteratorToSmallestKey):
        (WebCore::LevelDBTransaction::TransactionIterator::setCurrentIteratorToLargestKey):
        (WebCore::LevelDBTransaction::registerIterator):
        (WebCore::LevelDBTransaction::unregisterIterator):
        (WebCore::LevelDBTransaction::resetIterators):
        * platform/leveldb/LevelDBTransaction.h: Added.
        (WebCore::LevelDBTransaction::AVLTreeAbstractor::get_less):
        (WebCore::LevelDBTransaction::AVLTreeAbstractor::set_less):
        (WebCore::LevelDBTransaction::AVLTreeAbstractor::get_greater):
        (WebCore::LevelDBTransaction::AVLTreeAbstractor::set_greater):
        (WebCore::LevelDBTransaction::AVLTreeAbstractor::get_balance_factor):
        (WebCore::LevelDBTransaction::AVLTreeAbstractor::set_balance_factor):
        (WebCore::LevelDBTransaction::AVLTreeAbstractor::compare_key_key):
        (WebCore::LevelDBTransaction::AVLTreeAbstractor::compare_key_node):
        (WebCore::LevelDBTransaction::AVLTreeAbstractor::compare_node_node):
        (WebCore::LevelDBTransaction::AVLTreeAbstractor::null):
        (WebCore::LevelDBTransaction::TransactionIterator::~TransactionIterator):
        * platform/leveldb/LevelDBWriteBatch.cpp:
        (WebCore::LevelDBWriteBatch::create):
        (WebCore::LevelDBWriteBatch::LevelDBWriteBatch):
        (WebCore::LevelDBWriteBatch::~LevelDBWriteBatch):
        (WebCore::makeSlice):
        (WebCore::LevelDBWriteBatch::put):
        (WebCore::LevelDBWriteBatch::remove):
        (WebCore::LevelDBWriteBatch::clear):
        * storage/IDBLevelDBBackingStore.cpp:
        (WebCore::getInt):
        (WebCore::putInt):
        (WebCore::getString):
        (WebCore::putString):
        (WebCore::getNewObjectStoreId):
        (WebCore::IDBLevelDBBackingStore::createObjectStore):
        (WebCore::deleteRange):
        (WebCore::IDBLevelDBBackingStore::deleteObjectStore):
        (WebCore::IDBLevelDBBackingStore::getObjectStoreRecord):
        (WebCore::getNewVersionNumber):
        (WebCore::IDBLevelDBBackingStore::putObjectStoreRecord):
        (WebCore::IDBLevelDBBackingStore::clearObjectStore):
        (WebCore::IDBLevelDBBackingStore::deleteObjectStoreRecord):
        (WebCore::IDBLevelDBBackingStore::nextAutoIncrementNumber):
        (WebCore::IDBLevelDBBackingStore::keyExistsInObjectStore):
        (WebCore::IDBLevelDBBackingStore::forEachObjectStoreRecord):
        (WebCore::getNewIndexId):
        (WebCore::IDBLevelDBBackingStore::createIndex):
        (WebCore::IDBLevelDBBackingStore::putIndexDataForRecord):
        (WebCore::findGreatestKeyLessThan):
        (WebCore::versionExists):
        (WebCore::IDBLevelDBBackingStore::getPrimaryKeyViaIndex):
        (WebCore::IDBLevelDBBackingStore::keyExistsInIndex):
        (WebCore::findLastIndexKeyEqualTo):
        (WebCore::IDBLevelDBBackingStore::openObjectStoreCursor):
        (WebCore::IDBLevelDBBackingStore::openIndexKeyCursor):
        (WebCore::IDBLevelDBBackingStore::openIndexCursor):
        (WebCore::IDBLevelDBBackingStore::createTransaction):
        (WebCore::IDBLevelDBBackingStore::Transaction::create):
        (WebCore::IDBLevelDBBackingStore::Transaction::Transaction):
        (WebCore::IDBLevelDBBackingStore::Transaction::begin):
        (WebCore::IDBLevelDBBackingStore::Transaction::commit):
        (WebCore::IDBLevelDBBackingStore::Transaction::rollback):
        * storage/IDBLevelDBBackingStore.h:
        * storage/IDBTransactionBackendImpl.cpp:
        (WebCore::IDBTransactionBackendImpl::abort):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@87370 268f45cc-cd09-0410-ab3c-d52691b4dbfc
16 files changed:
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/GNUmakefile.list.am
Source/WebCore/WebCore.gypi
Source/WebCore/WebCore.pro
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebCore/platform/leveldb/LevelDBDatabase.cpp
Source/WebCore/platform/leveldb/LevelDBDatabase.h
Source/WebCore/platform/leveldb/LevelDBIterator.h
Source/WebCore/platform/leveldb/LevelDBTransaction.cpp [new file with mode: 0644]
Source/WebCore/platform/leveldb/LevelDBTransaction.h [new file with mode: 0644]
Source/WebCore/platform/leveldb/LevelDBWriteBatch.cpp [moved from Source/WebCore/platform/leveldb/LevelDBIterator.cpp with 57% similarity]
Source/WebCore/platform/leveldb/LevelDBWriteBatch.h [new file with mode: 0644]
Source/WebCore/storage/IDBLevelDBBackingStore.cpp
Source/WebCore/storage/IDBLevelDBBackingStore.h
Source/WebCore/storage/IDBTransactionBackendImpl.cpp