Title: [201940] trunk/LayoutTests
Revision
201940
Author
[email protected]
Date
2016-06-10 14:01:55 -0700 (Fri, 10 Jun 2016)

Log Message

Add an IDB leak test.
https://bugs.webkit.org/show_bug.cgi?id=158632

Reviewed by Alex Christensen.

* storage/indexeddb/modern/leak-1-expected.txt: Added.
* storage/indexeddb/modern/leak-1.html: Added.
* storage/indexeddb/modern/resources/leak-1.js: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (201939 => 201940)


--- trunk/LayoutTests/ChangeLog	2016-06-10 20:59:38 UTC (rev 201939)
+++ trunk/LayoutTests/ChangeLog	2016-06-10 21:01:55 UTC (rev 201940)
@@ -1,3 +1,14 @@
+2016-06-10  Brady Eidson  <[email protected]>
+
+        Add an IDB leak test.
+        https://bugs.webkit.org/show_bug.cgi?id=158632
+
+        Reviewed by Alex Christensen.
+
+        * storage/indexeddb/modern/leak-1-expected.txt: Added.
+        * storage/indexeddb/modern/leak-1.html: Added.
+        * storage/indexeddb/modern/resources/leak-1.js: Added.
+
 2016-06-10  Carlos Alberto Lopez Perez  <[email protected]>
 
         [GTK] Unreviewed gardening.

Added: trunk/LayoutTests/storage/indexeddb/modern/leak-1-expected.txt (0 => 201940)


--- trunk/LayoutTests/storage/indexeddb/modern/leak-1-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/modern/leak-1-expected.txt	2016-06-10 21:01:55 UTC (rev 201940)
@@ -0,0 +1,18 @@
+This tests that certain IDB object relationships don't cause leaks.
+
+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.deleteDatabase(dbname)
+indexedDB.open(dbname)
+Initial upgrade needed: Old version - 0 New version - 1
+Issuing a simple request to the object store
+Observing GC on the transaction and request. 
+PASS txObserver.wasCollected is true
+PASS reqObserver.wasCollected is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/storage/indexeddb/modern/leak-1.html (0 => 201940)


--- trunk/LayoutTests/storage/indexeddb/modern/leak-1.html	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/modern/leak-1.html	2016-06-10 21:01:55 UTC (rev 201940)
@@ -0,0 +1,10 @@
+<html>
+<head>
+<script src=""
+<script src=""
+</head>
+<body>
+
+<script src=""
+</body>
+</html>

Added: trunk/LayoutTests/storage/indexeddb/modern/resources/leak-1.js (0 => 201940)


--- trunk/LayoutTests/storage/indexeddb/modern/resources/leak-1.js	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/modern/resources/leak-1.js	2016-06-10 21:01:55 UTC (rev 201940)
@@ -0,0 +1,66 @@
+description("This tests that certain IDB object relationships don't cause leaks.");
+
+indexedDBTest(prepareDatabase);
+
+function log(message)
+{
+    debug(message);
+}
+
+var testGenerator;
+function next()
+{
+    testGenerator.next();
+}
+
+function asyncNext()
+{
+    setTimeout("testGenerator.next();", 0);
+}
+
+var db;
+
+function prepareDatabase(event)
+{
+    debug("Initial upgrade needed: Old version - " + event.oldVersion + " New version - " + event.newVersion);
+
+    db = event.target.result;
+    db.createObjectStore("foo");
+    event.target._onsuccess_ = function() {
+        testGenerator = testSteps();
+        testGenerator.next();
+    };
+}
+
+function* testSteps()
+{
+    log("Issuing a simple request to the object store");
+    
+    tx = db.transaction("foo");
+    tx._oncomplete_ = next;
+    req = tx.objectStore("foo").get("foo");
+    req._onsuccess_ = next;
+    
+    yield; // For the request success.
+    yield; // For the transaction's completion.
+    
+    log("Observing GC on the transaction and request. ");
+    
+    txObserver = internals.observeGC(tx);
+    reqObserver = internals.observeGC(req);
+    
+    tx = null;
+    req = null;
+    
+    // Make sure we are no longer handling any IDB events.
+    asyncNext();
+    yield;
+    
+    gc();
+    
+    shouldBeTrue("txObserver.wasCollected");
+    shouldBeTrue("reqObserver.wasCollected");
+
+    finishJSTest();
+ }
+ 
\ No newline at end of file
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to