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

Side by Side Diff: third_party/WebKit/LayoutTests/storage/indexeddb/upgrade-transaction-lifecycle-committed.html

Issue 2556373003: Tests for exceptions related to IndexedDB upgrade transaction lifecycle. (Closed)
Patch Set: Addressed feedback. Created 3 years, 11 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
OLDNEW
(Empty)
1 <!doctype html>
2 <meta charset="utf8">
3 <title>IndexedDB: committed versionchange transaction lifecycle</title>
4 <link rel="help"
5 href="https://w3c.github.io/IndexedDB/#upgrade-transaction-steps">
6 <link rel="help"
7 href="https://w3c.github.io/IndexedDB/#dom-idbdatabase-createobjectstore">
8 <link rel="help"
9 href="https://w3c.github.io/IndexedDB/#dom-idbdatabase-deleteobjectstore">
10 <link rel="author" href="pwnall@chromium.org" title="Victor Costan">
11 <script src="../../resources/testharness.js"></script>
12 <script src="../../resources/testharnessreport.js"></script>
13 <script src="resources/support-promises.js"></script>
14 <script>
15 'use strict';
16
17 promise_test(t => {
18 return createDatabase(t, database => {
19 createBooksStore(t, database);
20 }).then(database => {
21 database.close();
22 }).then(() => migrateDatabase(t, 2, (database, transaction, request) => {
23 return new Promise((resolve, reject) => {
24 transaction.addEventListener('complete', () => {
25 resolve(new Promise((resolve, reject) => {
26 assert_equals(
27 request.transaction, transaction,
28 "The open request's transaction should be reset after " +
29 'oncomplete');
30 assert_throws(
31 'InvalidStateError',
32 () => { database.createObjectStore('books2'); },
33 'createObjectStore exception should reflect that the ' +
34 'transaction is no longer running');
35 assert_throws(
36 'InvalidStateError',
37 () => { database.deleteObjectStore('books'); },
38 'deleteObjectStore exception should reflect that the ' +
39 'transaction is no longer running');
40 resolve();
41 }));
42 }, false);
43 });
44 })).then(database => { database.close(); });
45 }, 'in the complete event handler for a committed transaction');
46
47 promise_test(t => {
48 return createDatabase(t, database => {
49 createBooksStore(t, database);
50 }).then(database => {
51 database.close();
52 }).then(() => migrateDatabase(t, 2, (database, transaction, request) => {
53 return new Promise((resolve, reject) => {
54 transaction.addEventListener('complete', () => {
55 setTimeout(() => {
56 resolve(new Promise((resolve, reject) => {
57 assert_equals(
58 request.transaction, null,
59 "The open request's transaction should be reset after " +
60 'oncomplete microtasks');
61 assert_throws(
62 'InvalidStateError',
63 () => { database.createObjectStore('books2'); },
64 'createObjectStore exception should reflect that the ' +
65 'transaction is no longer running');
66 assert_throws(
67 'InvalidStateError',
68 () => { database.deleteObjectStore('books'); },
69 'deleteObjectStore exception should reflect that the ' +
70 'transaction is no longer running');
71 resolve();
72 }));
73 }, 0);
74 }, false);
75 });
76 })).then(database => { database.close(); });
77 }, 'in a setTimeout(0) callback after the complete event is fired for a ' +
78 'committed transaction');
79
80 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698