Spec has:
Let transaction be the upgrade transaction associated with database. If one does not exist or it is finished, throw an "InvalidStateError" DOMException.
But in this case, a TransactionInactiveError is thrown instead in Chrome/Firefox and asserted as such in tests:
tx.abort();
db.createObjectStore('s'); // throws TransactionInactiveError
Noted by the ever vigilant @brettz9 over in web-platform-tests/wpt#5612 but it's the spec that's wrong here since impls/tests match.
Unfortunately, the "finished" notion for transactions is a bit squishy. Spec-wise we may be able to just drop the "or it is finished" bit from these methods and then tidy up the transaction lifecycle at some point in the future.
Spec has:
But in this case, a TransactionInactiveError is thrown instead in Chrome/Firefox and asserted as such in tests:
Noted by the ever vigilant @brettz9 over in web-platform-tests/wpt#5612 but it's the spec that's wrong here since impls/tests match.
Unfortunately, the "finished" notion for transactions is a bit squishy. Spec-wise we may be able to just drop the "or it is finished" bit from these methods and then tidy up the transaction lifecycle at some point in the future.