| 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;
|
| +}
|
|
|