| Index: LayoutTests/imported/web-platform-tests/IndexedDB/support.js
 | 
| diff --git a/LayoutTests/imported/web-platform-tests/IndexedDB/support.js b/LayoutTests/imported/web-platform-tests/IndexedDB/support.js
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..858fe5d770118aa73eb4f2a7702f7d5558a3bcda
 | 
| --- /dev/null
 | 
| +++ b/LayoutTests/imported/web-platform-tests/IndexedDB/support.js
 | 
| @@ -0,0 +1,122 @@
 | 
| +var databaseName = "database";
 | 
| +var databaseVersion = 1;
 | 
| +
 | 
| +if (!window.indexedDB)
 | 
| +{
 | 
| +    if (window.msIndexedDB)
 | 
| +    {
 | 
| +        window.indexedDB = window.msIndexedDB;
 | 
| +    }
 | 
| +    else if (window.mozIndexedDB)
 | 
| +    {
 | 
| +        window.indexedDB = window.mozIndexedDB;
 | 
| +    }
 | 
| +    else if (window.webkitIndexedDB)
 | 
| +    {
 | 
| +        window.indexedDB        = webkitIndexedDB;
 | 
| +        IDBCursor               = webkitIDBCursor;
 | 
| +        IDBDatabaseException    = webkitIDBDatabaseException;
 | 
| +        IDBIndex                = webkitIDBIndex;
 | 
| +        IDBObjectStore          = webkitIDBObjectStore;
 | 
| +        IDBRequest              = webkitIDBRequest;
 | 
| +        IDBKeyRange             = webkitIDBKeyRange;
 | 
| +        IDBTransaction          = webkitIDBTransaction;
 | 
| +    }
 | 
| +}
 | 
| +
 | 
| +/* Delete created databases
 | 
| + *
 | 
| + * Go through each finished test, see if it has an associated database. Close
 | 
| + * that and delete the database. */
 | 
| +add_completion_callback(function(tests)
 | 
| +{
 | 
| +    for (var i in tests)
 | 
| +    {
 | 
| +        if(tests[i].db)
 | 
| +        {
 | 
| +            tests[i].db.close();
 | 
| +            window.indexedDB.deleteDatabase(tests[i].db.name);
 | 
| +        }
 | 
| +    }
 | 
| +});
 | 
| +
 | 
| +function fail(test, desc) {
 | 
| +    return test.step_func(function(e) {
 | 
| +        if (e && e.message && e.target.error)
 | 
| +            assert_unreached(desc + " (" + e.target.error.name + ": " + e.message + ")");
 | 
| +        else if (e && e.message)
 | 
| +            assert_unreached(desc + " (" + e.message + ")");
 | 
| +        else if (e && e.target.readyState === 'done' && e.target.error)
 | 
| +            assert_unreached(desc + " (" + e.target.error.name + ")");
 | 
| +        else
 | 
| +            assert_unreached(desc);
 | 
| +    });
 | 
| +}
 | 
| +
 | 
| +function createdb(test, dbname, version)
 | 
| +{
 | 
| +    var rq_open = createdb_for_multiple_tests(dbname, version);
 | 
| +    return rq_open.setTest(test);
 | 
| +}
 | 
| +
 | 
| +function createdb_for_multiple_tests(dbname, version) {
 | 
| +    var rq_open,
 | 
| +        fake_open = {},
 | 
| +        test = null,
 | 
| +        dbname = (dbname ? dbname : "testdb-" + new Date().getTime() + Math.random() );
 | 
| +
 | 
| +    if (version)
 | 
| +        rq_open = window.indexedDB.open(dbname, version);
 | 
| +    else
 | 
| +        rq_open = window.indexedDB.open(dbname);
 | 
| +
 | 
| +    function auto_fail(evt, current_test) {
 | 
| +        /* Fail handlers, if we haven't set on/whatever/, don't
 | 
| +         * expect to get event whatever. */
 | 
| +        rq_open.manually_handled = {}
 | 
| +
 | 
| +        rq_open.addEventListener(evt, function(e) {
 | 
| +            if (current_test !== test) {
 | 
| +                return;
 | 
| +            }
 | 
| +
 | 
| +            test.step(function() {
 | 
| +                if (!rq_open.manually_handled[evt]) {
 | 
| +                    assert_unreached("unexpected open." + evt + " event");
 | 
| +                }
 | 
| +
 | 
| +                if (e.target.result + "" == "[object IDBDatabase]" && !this.db) {
 | 
| +                    this.db = e.target.result;
 | 
| +
 | 
| +                    this.db.onerror = fail(test, "unexpected db.error");
 | 
| +                    this.db.onabort = fail(test, "unexpected db.abort");
 | 
| +                    this.db.onversionchange = fail(test, "unexpected db.versionchange");
 | 
| +                }
 | 
| +            })
 | 
| +        })
 | 
| +        rq_open.__defineSetter__("on" + evt, function(h) {
 | 
| +            rq_open.manually_handled[evt] = true;
 | 
| +            if (!h)
 | 
| +                rq_open.addEventListener(evt, function() {});
 | 
| +            else
 | 
| +                rq_open.addEventListener(evt, test.step_func(h));
 | 
| +        })
 | 
| +    }
 | 
| +
 | 
| +    // add a .setTest method to the DB object
 | 
| +    Object.defineProperty(rq_open, 'setTest', {
 | 
| +        enumerable: false,
 | 
| +        value: function(t) {
 | 
| +            test = t;
 | 
| +
 | 
| +            auto_fail("upgradeneeded", test);
 | 
| +            auto_fail("success", test);
 | 
| +            auto_fail("blocked", test);
 | 
| +            auto_fail("error", test);
 | 
| +
 | 
| +            return this;
 | 
| +        }
 | 
| +    });
 | 
| +
 | 
| +    return rq_open;
 | 
| +}
 | 
| 
 |