-
hans@chromium.org authored
Reviewed by Tony Gentilcore. IndexedDB: Support mutating cursors on top of LevelDB https://bugs.webkit.org/show_bug.cgi?id=61615 New test for adding new entries to an objecet store while running a cursor over it. * storage/indexeddb/mutating-cursor-expected.txt: Added. * storage/indexeddb/mutating-cursor.html: Added. 2011-05-27 Hans Wennborg <hans@chromium.org> Reviewed by Tony Gentilcore. IndexedDB: Support mutating cursors on top of LevelDB https://bugs.webkit.org/show_bug.cgi?id=61615 We need to support the case where a new node is added to the tree in a transaction after the TreeIterator has covered the whole tree. Since this is done lazily, i.e. we set a flag that the tree might have changed, and act upon it later, some members need to be mutable, because we might need to re-seek the tree iterator in a const function. Test: storage/indexeddb/mutating-cursor.html storage/indexeddb/mozilla/cursor-mutation-objectstore-only.html (existing) * platform/leveldb/LevelDBTransaction.cpp: (WebCore::LevelDBTransaction::set): (WebCore::LevelDBTransaction::TreeIterator::reset): (WebCore::LevelDBTransaction::TreeIterator::~TreeIterator): (WebCore::LevelDBTransaction::TreeIterator::TreeIterator): (WebCore::LevelDBTransaction::TransactionIterator::TransactionIterator): (WebCore::LevelDBTransaction::TransactionIterator::~TransactionIterator): (WebCore::LevelDBTransaction::TransactionIterator::next): (WebCore::LevelDBTransaction::TransactionIterator::prev): (WebCore::LevelDBTransaction::TransactionIterator::key): (WebCore::LevelDBTransaction::TransactionIterator::value): (WebCore::LevelDBTransaction::TransactionIterator::treeChanged): (WebCore::LevelDBTransaction::TransactionIterator::refreshTreeIterator): (WebCore::LevelDBTransaction::registerIterator): (WebCore::LevelDBTransaction::unregisterIterator): (WebCore::LevelDBTransaction::notifyIteratorsOfTreeChange): * platform/leveldb/LevelDBTransaction.h: * storage/IDBFactoryBackendImpl.cpp: (WebCore::IDBFactoryBackendImpl::open): * storage/IDBLevelDBBackingStore.cpp: (WebCore::IDBLevelDBBackingStore::open): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@87508 268f45cc-cd09-0410-ab3c-d52691b4dbfc
84895b03