Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / fast / filesystem / script-tests / filesystem-reference.js
blob0fb0109627487b136b8cadfb9f3276d6b9597c44
1 description("This tests if Entries returned by callbacks keep functioning even after we lose a reference to the filesystem in the script.");
3 var testDirectory = null;
4 var testEntries = null;
6 function errorCallback(error)
8     testFailed("Error occurred: " + error.name);
9     finishJSTest();
12 function runTest1(root)
14     debug("Running runTest1()...");
15     var helper = new JoinHelper();
16     var done = function() { helper.done(); };
18     helper.run(function() { root.getFile('a', {create:true}, done, errorCallback); });
19     helper.run(function() { root.getDirectory('b', {create:true}, done, errorCallback); });
20     helper.run(function() { root.getDirectory('c', {create:true}, done, errorCallback); });
22     gc();
23     helper.join(function() { runTest2(root); });
26 function runTest2(root)
28     debug("Running runTest2()...");
29     var helper = new JoinHelper();
30     var done = function() { helper.done(); };
32     helper.run(function() { root.getFile('/b/1', {create:true}, done, errorCallback); });
33     helper.run(function() { root.getFile('/b/2', {create:true}, done, errorCallback); });
34     helper.run(function() { root.getFile('/b/3', {create:true}, done, errorCallback); });
35     helper.run(function() { root.getFile('/b/4', {create:true}, done, errorCallback); });
36     helper.run(function() { root.getDirectory('b', {create:false}, function(entry) { testDirectory = entry; helper.done(); }, errorCallback); });
38     gc();
39     helper.join(function() { runTest3(); });
42 function runTest3()
44     debug("Running runTest3()...");
45     testDirectory.createReader().readEntries(entriesCallback, errorCallback);
46     testDirectory = null;
47     gc();
50 function entriesCallback(entries)
52     debug("Running runTest4()...");
53     testEntries = entries;
54     shouldBe("testEntries.length", "4");
55     finishJSTest();
58 function fileSystemCallback(fs)
60     var root = fs.root;
61     removeAllInDirectory(fs.root, function() { runTest1(root); }, errorCallback);
62     fs = null;
63     gc();
66 if (window.webkitRequestFileSystem) {
67     window.jsTestIsAsync = true;
68     webkitRequestFileSystem(window.TEMPORARY, 100, fileSystemCallback, errorCallback);
69 } else
70     debug("This test requires FileSystem API support.");