Title: [107278] trunk
Revision
107278
Author
[email protected]
Date
2012-02-09 12:49:34 -0800 (Thu, 09 Feb 2012)

Log Message

[Chromium] IndexedDB: IDBVersionChangeRequest V8 wrapper not generated as ActiveDOMObject
https://bugs.webkit.org/show_bug.cgi?id=78167

Source/WebCore:

Add ActiveDOMObject annotation to IDBVersionChangeRequest.idl; it is not
automagically inherited from IDBRequest.idl.

Reviewed by Adam Barth.

Test: storage/indexeddb/versionchangerequest-activedomobject.html

* storage/IDBVersionChangeRequest.idl:

LayoutTests:

Reviewed by Adam Barth.

* storage/indexeddb/versionchangerequest-activedomobject-expected.txt: Added.
* storage/indexeddb/versionchangerequest-activedomobject.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (107277 => 107278)


--- trunk/LayoutTests/ChangeLog	2012-02-09 20:44:05 UTC (rev 107277)
+++ trunk/LayoutTests/ChangeLog	2012-02-09 20:49:34 UTC (rev 107278)
@@ -1,3 +1,13 @@
+2012-02-09  Joshua Bell  <[email protected]>
+
+        [Chromium] IndexedDB: IDBVersionChangeRequest V8 wrapper not generated as ActiveDOMObject
+        https://bugs.webkit.org/show_bug.cgi?id=78167
+
+        Reviewed by Adam Barth.
+
+        * storage/indexeddb/versionchangerequest-activedomobject-expected.txt: Added.
+        * storage/indexeddb/versionchangerequest-activedomobject.html: Added.
+
 2012-02-09  Julien Chaffraix  <[email protected]>
 
         Unreviewed gardening.

Added: trunk/LayoutTests/storage/indexeddb/versionchangerequest-activedomobject-expected.txt (0 => 107278)


--- trunk/LayoutTests/storage/indexeddb/versionchangerequest-activedomobject-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/versionchangerequest-activedomobject-expected.txt	2012-02-09 20:49:34 UTC (rev 107278)
@@ -0,0 +1,25 @@
+Ensure that IDBVersionChangeRequest objects are not GC'd if they have pending events
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;
+PASS indexedDB == null is false
+
+window.dbname = 'versionchangerequest-activedomobject'
+
+testDeleteDatabase():
+indexedDB.deleteDatabase(window.dbname)
+window.gc()
+PASS deleteDatabase's IDBVersionChangeRequest.onsuccess event fired
+
+testSetVersion():
+openRequest = indexedDB.open(window.dbname)
+db = openRequest.result
+db.setVersion('1')
+window.gc()
+PASS setVersion's IDBVersionChangeRequest.onsuccess event fired
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/storage/indexeddb/versionchangerequest-activedomobject.html (0 => 107278)


--- trunk/LayoutTests/storage/indexeddb/versionchangerequest-activedomobject.html	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/versionchangerequest-activedomobject.html	2012-02-09 20:49:34 UTC (rev 107278)
@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src=""
+<script src=""
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script>
+
+description("Ensure that IDBVersionChangeRequest objects are not GC'd if they have pending events");
+if (window.layoutTestController)
+    layoutTestController.waitUntilDone();
+
+function test() {
+    evalAndLog("indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;");
+    shouldBeFalse("indexedDB == null");
+
+    debug("");
+    evalAndLog("window.dbname = 'versionchangerequest-activedomobject'");
+
+    testDeleteDatabase();
+}
+
+function testDeleteDatabase()
+{
+    debug("");
+    debug("testDeleteDatabase():");
+    // NOTE: deleteRequest is local variable so it is not captured in global scope.
+    var deleteRequest = evalAndLog("indexedDB.deleteDatabase(window.dbname)");
+    deleteRequest._onerror_ = unexpectedErrorCallback;
+    deleteRequest._onblocked_ = unexpectedBlockedCallback;
+    deleteRequest._onsuccess_ = function() { deleteSuccess(); };
+    deleteRequest = null;
+    if (window.gc) {
+        evalAndLog("window.gc()");
+    }
+}
+
+function deleteSuccess()
+{
+    testPassed("deleteDatabase's IDBVersionChangeRequest.onsuccess event fired");
+    testSetVersion();
+}
+
+function testSetVersion()
+{
+    debug("");
+    debug("testSetVersion():");
+
+    // NOTE: This is just an IDBRequest, it can be global.
+    evalAndLog("openRequest = indexedDB.open(window.dbname)");
+    openRequest._onerror_ = unexpectedErrorCallback;
+    openRequest._onsuccess_ = function () {
+        evalAndLog("db = openRequest.result");
+
+        // NOTE: versionRequest is local variable so it is not captured in global scope.
+        var versionRequest = evalAndLog("db.setVersion('1')");
+        versionRequest._onerror_ = unexpectedErrorCallback;
+        versionRequest._onblocked_ = unexpectedBlockedCallback;
+        versionRequest._onsuccess_ = function() { versionSuccess(); };
+        versionRequest = null;
+        if (window.gc) {
+            evalAndLog("window.gc()");
+        }
+    };
+}
+
+function versionSuccess()
+{
+    testPassed("setVersion's IDBVersionChangeRequest.onsuccess event fired");
+    done();
+}
+
+test();
+
+</script>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (107277 => 107278)


--- trunk/Source/WebCore/ChangeLog	2012-02-09 20:44:05 UTC (rev 107277)
+++ trunk/Source/WebCore/ChangeLog	2012-02-09 20:49:34 UTC (rev 107278)
@@ -1,3 +1,17 @@
+2012-02-09  Joshua Bell  <[email protected]>
+
+        [Chromium] IndexedDB: IDBVersionChangeRequest V8 wrapper not generated as ActiveDOMObject
+        https://bugs.webkit.org/show_bug.cgi?id=78167
+
+        Add ActiveDOMObject annotation to IDBVersionChangeRequest.idl; it is not
+        automagically inherited from IDBRequest.idl.
+
+        Reviewed by Adam Barth.
+
+        Test: storage/indexeddb/versionchangerequest-activedomobject.html
+
+        * storage/IDBVersionChangeRequest.idl:
+
 2012-02-09  Anders Carlsson  <[email protected]>
 
         The scrolling tree should know more about the scrollbar state

Modified: trunk/Source/WebCore/storage/IDBVersionChangeRequest.idl (107277 => 107278)


--- trunk/Source/WebCore/storage/IDBVersionChangeRequest.idl	2012-02-09 20:44:05 UTC (rev 107277)
+++ trunk/Source/WebCore/storage/IDBVersionChangeRequest.idl	2012-02-09 20:49:34 UTC (rev 107278)
@@ -27,6 +27,7 @@
 
     interface [
         Conditional=INDEXED_DATABASE,
+        ActiveDOMObject,
         EventTarget
     ] IDBVersionChangeRequest : IDBRequest {
         attribute EventListener onblocked;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to