Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(257)

Unified Diff: LayoutTests/imported/web-platform-tests/IndexedDB/support.js

Issue 560893005: First checked-in import of the W3C's test suites. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: add new expectations for newly failing w3c tests Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
+}

Powered by Google App Engine
This is Rietveld 408576698