Title: [115275] trunk
Revision
115275
Author
hc...@chromium.org
Date
2012-04-25 18:18:31 -0700 (Wed, 25 Apr 2012)

Log Message

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.

Source/WebCore:

* Modules/indexeddb/IDBLevelDBBackingStore.cpp:
(WebCore):
* platform/leveldb/LevelDBTransaction.cpp:
(WebCore::LevelDBTransaction::TransactionIterator::refreshTreeIterator):
(WebCore::LevelDBTransaction::TransactionIterator::handleConflictsAndDeletes):
* platform/leveldb/LevelDBTransaction.h:
(TransactionIterator):

LayoutTests:

* storage/indexeddb/cursor-added-bug-expected.txt: Removed.
* storage/indexeddb/cursor-added-bug.html: Removed.
* storage/indexeddb/resources/cursor-added-bug.js: Removed.

Modified Paths

Removed Paths

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;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to