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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 var databaseName = "database";
2 var databaseVersion = 1;
3
4 if (!window.indexedDB)
5 {
6 if (window.msIndexedDB)
7 {
8 window.indexedDB = window.msIndexedDB;
9 }
10 else if (window.mozIndexedDB)
11 {
12 window.indexedDB = window.mozIndexedDB;
13 }
14 else if (window.webkitIndexedDB)
15 {
16 window.indexedDB = webkitIndexedDB;
17 IDBCursor = webkitIDBCursor;
18 IDBDatabaseException = webkitIDBDatabaseException;
19 IDBIndex = webkitIDBIndex;
20 IDBObjectStore = webkitIDBObjectStore;
21 IDBRequest = webkitIDBRequest;
22 IDBKeyRange = webkitIDBKeyRange;
23 IDBTransaction = webkitIDBTransaction;
24 }
25 }
26
27 /* Delete created databases
28 *
29 * Go through each finished test, see if it has an associated database. Close
30 * that and delete the database. */
31 add_completion_callback(function(tests)
32 {
33 for (var i in tests)
34 {
35 if(tests[i].db)
36 {
37 tests[i].db.close();
38 window.indexedDB.deleteDatabase(tests[i].db.name);
39 }
40 }
41 });
42
43 function fail(test, desc) {
44 return test.step_func(function(e) {
45 if (e && e.message && e.target.error)
46 assert_unreached(desc + " (" + e.target.error.name + ": " + e.messag e + ")");
47 else if (e && e.message)
48 assert_unreached(desc + " (" + e.message + ")");
49 else if (e && e.target.readyState === 'done' && e.target.error)
50 assert_unreached(desc + " (" + e.target.error.name + ")");
51 else
52 assert_unreached(desc);
53 });
54 }
55
56 function createdb(test, dbname, version)
57 {
58 var rq_open = createdb_for_multiple_tests(dbname, version);
59 return rq_open.setTest(test);
60 }
61
62 function createdb_for_multiple_tests(dbname, version) {
63 var rq_open,
64 fake_open = {},
65 test = null,
66 dbname = (dbname ? dbname : "testdb-" + new Date().getTime() + Math.rand om() );
67
68 if (version)
69 rq_open = window.indexedDB.open(dbname, version);
70 else
71 rq_open = window.indexedDB.open(dbname);
72
73 function auto_fail(evt, current_test) {
74 /* Fail handlers, if we haven't set on/whatever/, don't
75 * expect to get event whatever. */
76 rq_open.manually_handled = {}
77
78 rq_open.addEventListener(evt, function(e) {
79 if (current_test !== test) {
80 return;
81 }
82
83 test.step(function() {
84 if (!rq_open.manually_handled[evt]) {
85 assert_unreached("unexpected open." + evt + " event");
86 }
87
88 if (e.target.result + "" == "[object IDBDatabase]" && !this.db) {
89 this.db = e.target.result;
90
91 this.db.onerror = fail(test, "unexpected db.error");
92 this.db.onabort = fail(test, "unexpected db.abort");
93 this.db.onversionchange = fail(test, "unexpected db.versionc hange");
94 }
95 })
96 })
97 rq_open.__defineSetter__("on" + evt, function(h) {
98 rq_open.manually_handled[evt] = true;
99 if (!h)
100 rq_open.addEventListener(evt, function() {});
101 else
102 rq_open.addEventListener(evt, test.step_func(h));
103 })
104 }
105
106 // add a .setTest method to the DB object
107 Object.defineProperty(rq_open, 'setTest', {
108 enumerable: false,
109 value: function(t) {
110 test = t;
111
112 auto_fail("upgradeneeded", test);
113 auto_fail("success", test);
114 auto_fail("blocked", test);
115 auto_fail("error", test);
116
117 return this;
118 }
119 });
120
121 return rq_open;
122 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698