Diff
Modified: trunk/LayoutTests/ChangeLog (115274 => 115275)
--- trunk/LayoutTests/ChangeLog 2012-04-26 01:17:36 UTC (rev 115274)
+++ trunk/LayoutTests/ChangeLog 2012-04-26 01:18:31 UTC (rev 115275)
@@ -1,3 +1,15 @@
+2012-04-25 Alpha Lam <hc...@chromium.org>
+
+ Unreviewed, rolling out r115260.
+ http://trac.webkit.org/changeset/115260
+ https://bugs.webkit.org/show_bug.cgi?id=84467
+
+ r115260 is crashing a list of IndexDB tests, revert.
+
+ * storage/indexeddb/cursor-added-bug-expected.txt: Removed.
+ * storage/indexeddb/cursor-added-bug.html: Removed.
+ * storage/indexeddb/resources/cursor-added-bug.js: Removed.
+
2012-04-25 Dimitri Glazkov <dglaz...@chromium.org>
Remove unnecessary timeouts (and closures) from content-element-in-* tests.
Deleted: trunk/LayoutTests/storage/indexeddb/cursor-added-bug-expected.txt (115274 => 115275)
--- trunk/LayoutTests/storage/indexeddb/cursor-added-bug-expected.txt 2012-04-26 01:17:36 UTC (rev 115274)
+++ trunk/LayoutTests/storage/indexeddb/cursor-added-bug-expected.txt 2012-04-26 01:18:31 UTC (rev 115275)
@@ -1,39 +0,0 @@
-Test IndexedDB cursor iterates correctly over values added during iteration.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
-
-indexedDB.open('cursor-delete')
-db = event.target.result
-db.setVersion('new version')
-trans = event.target.result
-PASS trans !== null is true
-Deleted all object stores.
-objectStore = db.createObjectStore('test')
-objectStore.add(1, 1)
-objectStore.add(2, 2)
-objectStore.add(3, 3)
-trans = db.transaction(['test'], IDBTransaction.READ_WRITE)
-trans.objectStore('test').openCursor()
-PASS event.target.result.key is 1
-trans.objectStore('test').add(6, 6)
-event.target.result.continue()
-PASS event.target.result.key is 2
-trans.objectStore('test').add(5, 5)
-event.target.result.continue()
-PASS event.target.result.key is 3
-trans.objectStore('test').add(4, 4)
-event.target.result.continue()
-PASS event.target.result.key is 4
-event.target.result.continue()
-PASS event.target.result.key is 5
-event.target.result.continue()
-PASS event.target.result.key is 6
-event.target.result.continue()
-PASS counter is 6
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
Deleted: trunk/LayoutTests/storage/indexeddb/cursor-added-bug.html (115274 => 115275)
--- trunk/LayoutTests/storage/indexeddb/cursor-added-bug.html 2012-04-26 01:17:36 UTC (rev 115274)
+++ trunk/LayoutTests/storage/indexeddb/cursor-added-bug.html 2012-04-26 01:18:31 UTC (rev 115275)
@@ -1,10 +0,0 @@
-<html>
-<head>
-<script src=""
-<script src=""
-</head>
-<body>
-<script src=""
-<script src=""
-</body>
-</html>
Deleted: trunk/LayoutTests/storage/indexeddb/resources/cursor-added-bug.js (115274 => 115275)
--- trunk/LayoutTests/storage/indexeddb/resources/cursor-added-bug.js 2012-04-26 01:17:36 UTC (rev 115274)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-added-bug.js 2012-04-26 01:18:31 UTC (rev 115275)
@@ -1,74 +0,0 @@
-if (this.importScripts) {
- importScripts('../../../fast/js/resources/js-test-pre.js');
- importScripts('shared.js');
-}
-
-description("Test IndexedDB cursor iterates correctly over values added during iteration.");
-
-test();
-
-function test()
-{
- removeVendorPrefixes();
- request = evalAndLog("indexedDB.open('cursor-delete')");
- request._onsuccess_ = openSuccess;
- request._onerror_ = unexpectedErrorCallback;
-}
-
-function openSuccess()
-{
- var db = evalAndLog("db = event.target.result");
-
- request = evalAndLog("db.setVersion('new version')");
- request._onsuccess_ = setVersionSuccess;
- request._onerror_ = unexpectedErrorCallback;
-}
-
-function setVersionSuccess()
-{
- trans = evalAndLog("trans = event.target.result");
- shouldBeTrue("trans !== null");
- trans._onabort_ = unexpectedAbortCallback;
- trans._oncomplete_ = openCursor;
-
- deleteAllObjectStores(db);
-
- var objectStore = evalAndLog("objectStore = db.createObjectStore('test')");
- evalAndLog("objectStore.add(1, 1)");
- evalAndLog("objectStore.add(2, 2)");
- evalAndLog("objectStore.add(3, 3)");
-}
-
-function openCursor()
-{
- evalAndLog("trans = db.transaction(['test'], IDBTransaction.READ_WRITE)");
- trans._onabort_ = finishJSTest;
- trans._oncomplete_ = finishJSTest;
- request = evalAndLog("trans.objectStore('test').openCursor()");
- request._onsuccess_ = cursorSuccess;
- request._onerror_ = unexpectedErrorCallback;
- counter = 0;
-}
-
-function cursorSuccess()
-{
- if (event.target.result == null) {
- shouldBe("counter", "6");
- return;
- }
-
- counter = counter + 1;
-
- shouldBe("event.target.result.key", String(counter));
- if (event.target.result.key == 1) {
- evalAndLog("trans.objectStore('test').add(6, 6)");
- }
- if (event.target.result.key == 2) {
- evalAndLog("trans.objectStore('test').add(5, 5)");
- }
- if (event.target.result.key == 3) {
- evalAndLog("trans.objectStore('test').add(4, 4)");
- }
-
- evalAndLog("event.target.result.continue()");
-}
Modified: trunk/Source/WebCore/ChangeLog (115274 => 115275)
--- trunk/Source/WebCore/ChangeLog 2012-04-26 01:17:36 UTC (rev 115274)
+++ trunk/Source/WebCore/ChangeLog 2012-04-26 01:18:31 UTC (rev 115275)
@@ -1,3 +1,19 @@
+2012-04-25 Alpha Lam <hc...@chromium.org>
+
+ Unreviewed, rolling out r115260.
+ http://trac.webkit.org/changeset/115260
+ https://bugs.webkit.org/show_bug.cgi?id=84467
+
+ r115260 is crashing a list of IndexDB tests, revert.
+
+ * Modules/indexeddb/IDBLevelDBBackingStore.cpp:
+ (WebCore):
+ * platform/leveldb/LevelDBTransaction.cpp:
+ (WebCore::LevelDBTransaction::TransactionIterator::refreshTreeIterator):
+ (WebCore::LevelDBTransaction::TransactionIterator::handleConflictsAndDeletes):
+ * platform/leveldb/LevelDBTransaction.h:
+ (TransactionIterator):
+
2012-04-25 James Simonsen <simon...@chromium.org>
[Web Timing] Add a vendor-prefixed Performance Timeline API
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp (115274 => 115275)
--- trunk/Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp 2012-04-26 01:17:36 UTC (rev 115274)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp 2012-04-26 01:18:31 UTC (rev 115275)
@@ -1066,6 +1066,11 @@
return false;
}
+ // The iterator will contain values deleted during iteration.
+ Vector<char> trash;
+ if (!m_transaction->get(m_iterator->key(), trash))
+ continue;
+
if (isPastBounds()) {
if (!forward && lastDuplicateKey.get()) {
// We need to walk forward because now we're beyond the
Modified: trunk/Source/WebCore/platform/leveldb/LevelDBTransaction.cpp (115274 => 115275)
--- trunk/Source/WebCore/platform/leveldb/LevelDBTransaction.cpp 2012-04-26 01:17:36 UTC (rev 115274)
+++ trunk/Source/WebCore/platform/leveldb/LevelDBTransaction.cpp 2012-04-26 01:18:31 UTC (rev 115275)
@@ -370,9 +370,7 @@
{
ASSERT(m_treeChanged);
- m_treeChanged = false;
-
- if (m_treeIterator->isValid() && m_treeIterator == m_current) {
+ if (m_treeIterator->isValid()) {
m_treeIterator->reset();
return;
}
@@ -395,18 +393,10 @@
m_treeIterator->prev();
}
}
-}
-bool LevelDBTransaction::TransactionIterator::treeIteratorIsLower() const
-{
- return m_comparator->compare(m_treeIterator->key(), m_dbIterator->key()) < 0;
+ m_treeChanged = false;
}
-bool LevelDBTransaction::TransactionIterator::treeIteratorIsHigher() const
-{
- return m_comparator->compare(m_treeIterator->key(), m_dbIterator->key()) > 0;
-}
-
void LevelDBTransaction::TransactionIterator::handleConflictsAndDeletes()
{
bool loop = true;
@@ -422,15 +412,14 @@
m_dbIterator->prev();
}
- // Skip over delete markers in the tree iterator until it catches up with the db iterator.
if (m_treeIterator->isValid() && m_treeIterator->isDeleted()) {
- if (m_direction == kForward && (!m_dbIterator->isValid() || treeIteratorIsLower())) {
+ // If the tree iterator is on a delete marker, take another step.
+ if (m_direction == kForward)
m_treeIterator->next();
- loop = true;
- } else if (m_direction == kReverse && (!m_dbIterator->isValid() || treeIteratorIsHigher())) {
+ else
m_treeIterator->prev();
- loop = true;
- }
+
+ loop = true;
}
}
}
Modified: trunk/Source/WebCore/platform/leveldb/LevelDBTransaction.h (115274 => 115275)
--- trunk/Source/WebCore/platform/leveldb/LevelDBTransaction.h 2012-04-26 01:17:36 UTC (rev 115274)
+++ trunk/Source/WebCore/platform/leveldb/LevelDBTransaction.h 2012-04-26 01:18:31 UTC (rev 115275)
@@ -139,8 +139,6 @@
void setCurrentIteratorToSmallestKey();
void setCurrentIteratorToLargestKey();
void refreshTreeIterator() const;
- bool treeIteratorIsLower() const;
- bool treeIteratorIsHigher() const;
RefPtr<LevelDBTransaction> m_transaction;
const LevelDBComparator* m_comparator;