Title: [192686] trunk
Revision
192686
Author
beid...@apple.com
Date
2015-11-20 10:55:11 -0800 (Fri, 20 Nov 2015)

Log Message

Modern IDB: Get IDBRequest.readyState right.
https://bugs.webkit.org/show_bug.cgi?id=151484

Reviewed by Alex Christensen.

Source/WebCore:

Test: storage/indexeddb/modern/request-readystate.html

* Modules/indexeddb/client/IDBRequestImpl.cpp:
(WebCore::IDBClient::IDBRequest::readyState):

LayoutTests:

* storage/indexeddb/modern/request-readystate-expected.txt: Added.
* storage/indexeddb/modern/request-readystate.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (192685 => 192686)


--- trunk/LayoutTests/ChangeLog	2015-11-20 15:17:36 UTC (rev 192685)
+++ trunk/LayoutTests/ChangeLog	2015-11-20 18:55:11 UTC (rev 192686)
@@ -1,3 +1,13 @@
+2015-11-20  Brady Eidson  <beid...@apple.com>
+
+        Modern IDB: Get IDBRequest.readyState right.
+        https://bugs.webkit.org/show_bug.cgi?id=151484
+
+        Reviewed by Alex Christensen.
+
+        * storage/indexeddb/modern/request-readystate-expected.txt: Added.
+        * storage/indexeddb/modern/request-readystate.html: Added.
+
 2015-11-20  Youenn Fablet  <youenn.fab...@crf.canon.fr>
 
         Changing some imported/w3c/web-platform-tests/html/semantics expectations from Timeout/Failure to Pass

Added: trunk/LayoutTests/storage/indexeddb/modern/request-readystate-expected.txt (0 => 192686)


--- trunk/LayoutTests/storage/indexeddb/modern/request-readystate-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/modern/request-readystate-expected.txt	2015-11-20 18:55:11 UTC (rev 192686)
@@ -0,0 +1,11 @@
+This test makes sure that IDBRequest.readyState returns expected values.
+After calling indexedDB.open(), create request readyState is: pending
+Initial upgrade needed: Old version - 0 New version - 1
+Create request readyState is: done
+After calling openCursor, request readyState is: pending
+After successful opening of the cursor, request readyState is: done
+After calling continue(), request readyState is: pending
+After continue() completed, request readyState is: done
+Initial upgrade versionchange transaction complete
+Done
+

Added: trunk/LayoutTests/storage/indexeddb/modern/request-readystate.html (0 => 192686)


--- trunk/LayoutTests/storage/indexeddb/modern/request-readystate.html	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/modern/request-readystate.html	2015-11-20 18:55:11 UTC (rev 192686)
@@ -0,0 +1,65 @@
+This test makes sure that IDBRequest.readyState returns expected values.<br>
+<div id="logger"></div>
+<script>
+
+if (window.testRunner) {
+    testRunner.waitUntilDone();
+    testRunner.dumpAsText();
+}
+
+function done()
+{
+    log("Done");
+    if (window.testRunner)
+        testRunner.notifyDone();
+}
+
+function log(message)
+{
+    document.getElementById("logger").innerHTML += message + "<br>";
+}
+
+var createRequest = window.indexedDB.open("RequestReadyStateDatabase", 1);
+log("After calling indexedDB.open(), create request readyState is: " + createRequest.readyState);
+
+createRequest._onupgradeneeded_ = function(event) {
+    log("Initial upgrade needed: Old version - " + event.oldVersion + " New version - " + event.newVersion);
+    log("Create request readyState is: " + createRequest.readyState);
+
+    var versionTransaction = createRequest.transaction;
+    var database = event.target.result;
+    var objectStore = database.createObjectStore("TestObjectStore");
+
+    for (var i = 0; i < 2; ++i)
+        objectStore.put("Record " + i, i);
+    
+    var request = objectStore.openCursor();
+    log("After calling openCursor, request readyState is: " + request.readyState);
+    request._onsuccess_ = function() {
+        log("After successful opening of the cursor, request readyState is: " + request.readyState);
+
+        request._onsuccess_ = function() {
+            log("After continue() completed, request readyState is: " + request.readyState);
+        }
+
+        request.result.continue();
+        log("After calling continue(), request readyState is: " + request.readyState);
+    }
+          
+    versionTransaction._onabort_ = function(event) {
+        log("Initial upgrade versionchange transaction unexpected aborted");
+        done();
+    }
+
+    versionTransaction._oncomplete_ = function(event) {
+        log("Initial upgrade versionchange transaction complete");
+        done();
+    }
+
+    versionTransaction._onerror_ = function(event) {
+        log("Initial upgrade versionchange transaction unexpected error" + event);
+        done();
+    }
+}
+
+</script>

Modified: trunk/Source/WebCore/ChangeLog (192685 => 192686)


--- trunk/Source/WebCore/ChangeLog	2015-11-20 15:17:36 UTC (rev 192685)
+++ trunk/Source/WebCore/ChangeLog	2015-11-20 18:55:11 UTC (rev 192686)
@@ -1,3 +1,15 @@
+2015-11-20  Brady Eidson  <beid...@apple.com>
+
+        Modern IDB: Get IDBRequest.readyState right.
+        https://bugs.webkit.org/show_bug.cgi?id=151484
+
+        Reviewed by Alex Christensen.
+
+        Test: storage/indexeddb/modern/request-readystate.html
+
+        * Modules/indexeddb/client/IDBRequestImpl.cpp:
+        (WebCore::IDBClient::IDBRequest::readyState):
+
 2015-11-20  Youenn Fablet  <youenn.fab...@crf.canon.fr>
 
         Use HTTPHeaderName as much as possible in XMLHttpRequest

Modified: trunk/Source/WebCore/Modules/indexeddb/client/IDBRequestImpl.cpp (192685 => 192686)


--- trunk/Source/WebCore/Modules/indexeddb/client/IDBRequestImpl.cpp	2015-11-20 15:17:36 UTC (rev 192685)
+++ trunk/Source/WebCore/Modules/indexeddb/client/IDBRequestImpl.cpp	2015-11-20 18:55:11 UTC (rev 192686)
@@ -150,8 +150,17 @@
 
 const String& IDBRequest::readyState() const
 {
-    static WTF::NeverDestroyed<String> readyState;
-    return readyState;
+    static WTF::NeverDestroyed<String> pendingString("pending");
+    static WTF::NeverDestroyed<String> doneString("done");
+
+    switch (m_readyState) {
+    case IDBRequestReadyState::Pending:
+        return pendingString;
+    case IDBRequestReadyState::Done:
+        return doneString;
+    default:
+        RELEASE_ASSERT_NOT_REACHED();
+    }
 }
 
 uint64_t IDBRequest::sourceObjectStoreIdentifier() const
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to