summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/LayoutTests/fast/filesystem/script-tests/flags-passing.js
blob: d2d06b202cff212e39eedbc27e497f756122b817 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
description("Passing Flags parameter tests. This test checks if passing Flags parameters (in Object format or in JSON format) to DirectoryEntry.getFile does not crash and works as expected.");

var testFileName = '/non_existent_file';
var fileSystem = null;
var expectedCallbacksCount = 0;
var unexpectedCallbacksCount = 0;
var expected = function(e) { expectedCallbacksCount++; };
var unexpected = function(e) { unexpectedCallbacksCount++; };

var testsList = [
    'runObjectTest',
    'runObjectTestWithExclusive',
    'cleanupAndRunNext',
    'runJSONTest',
    'runJSONTestWithExclusive',
    'runNullTest'
];
var testCounter = 0;

function runNextTest(v) {
    if (testCounter == testsList.length) {
        debug("Finished running tests.");
        shouldBe('expectedCallbacksCount', '3');
        shouldBe('unexpectedCallbacksCount', '0');
        finishJSTest();
    } else
        this[testsList[testCounter++]]();
}

function errorCallback(error) {
    debug("Error occured during requesting Temporary FileSystem:" + error.code);
    finishJSTest();
}

// Test body functions ----------------------------------------------------
function runNullTest(v) {
    debug("* Passing null as a WebKitFlags parameter.");

    // This should be ok and we treat it as {false, false} Flags.
    fileSystem.root.getFile(testFileName, null, runNextTest, errorCallback);
}

function runObjectTest(v) {
    debug("* Passing a WebKitFlags object.");
    var flags = new WebKitFlags();
    flags.create = false;

    fileSystem.root.getFile(testFileName, flags, unexpected, expected);

    debug("* Recycling the same WebKitFlags object.");

    fileSystem.root.getFile(testFileName, flags, unexpected, expected);

    flags.create = true;
    fileSystem.root.getFile(testFileName, flags, runNextTest, errorCallback);
}

function runObjectTestWithExclusive(v) {
    debug("* Passing a WebKitFlags object (with exclusive=true).");
    var flags = new WebKitFlags;
    flags.create = true;
    flags.exclusive = true;

    // This should fail.
    fileSystem.root.getFile(testFileName, flags, errorCallback, runNextTest);
}

function runJSONTest(v) {
    debug("* Passing JSON Flags object.");

    fileSystem.root.getFile(testFileName, {create:false}, unexpected, expected);
    fileSystem.root.getFile(testFileName, {create:true}, runNextTest, errorCallback);
}

function runJSONTestWithExclusive(v) {
    debug("* Passing JSON Flags object (with exclusive=true).");

    // This should fail.
    fileSystem.root.getFile(testFileName, {create:true, exclusive:true}, errorCallback, runNextTest);
}

// End of test body functions ---------------------------------------------

function cleanupAndRunNext(v) {
    fileSystem.root.getFile(testFileName, {create:false}, function(entry) {
        // Remove the entry before start testing.
        entry.remove(runNextTest, errorCallback);
    }, runNextTest);
}

function fileSystemCallback(fs) {
    fileSystem = fs;
    cleanupAndRunNext();
}

if (window.webkitRequestFileSystem) {
    window.jsTestIsAsync = true;
    webkitRequestFileSystem(window.TEMPORARY, 100, fileSystemCallback, errorCallback);
} else
    debug("This test requires FileSystem API support.");