Skip to content

Commit

Permalink
- Fix: Ensure AbortError sent to IDBOpenDBRequest.onerror upon a
Browse files Browse the repository at this point in the history
    transaction aborting or a connection being closed within an upgrade
    transaction
- Fix: Set `IDBOpenDBRequest.transaction` to `null` upon `AbortError` due to
    closed connection
  • Loading branch information
brettz9 committed Oct 27, 2016
1 parent 47b5099 commit a53531d
Show file tree
Hide file tree
Showing 13 changed files with 60 additions and 20 deletions.
5 changes: 5 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@
also remove unused `__multiEntryOffset`
- Deprecate: Numeric constants as second arguments to
`IDBDatabase.prototype.transaction` (use `readonly`/`readwrite` instead).
- Fix: Ensure `AbortError` sent to `IDBOpenDBRequest.onerror` upon a
transaction aborting or a connection being closed within an upgrade
transaction
- Fix: Set `IDBOpenDBRequest.transaction` to `null` upon `AbortError` due to
closed connection
- Fix: Set `error` property of `IDBTransaction` for certain tx aborts
- Fix: 'error' and 'abort' bubbling events
((`IDBRequest`->) `IDBTransaction`->`IDBDatabase`),
Expand Down
9 changes: 8 additions & 1 deletion dist/indexeddbshim-UnicodeIdentifiers-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -18097,11 +18097,17 @@ IDBFactory.prototype.open = function (name, version) {
req.transaction.on__beforecomplete = function () {
req.result.__versionTransaction = null;
};
req.transaction.on__abort = function () {
var err = (0, _DOMException.createDOMException)('AbortError', 'The upgrade transaction was aborted.');
dbCreateError(err);
};
req.transaction.on__complete = function () {
req.__transaction = null;
if (req.__result.__closed) {
var _err = (0, _DOMException.createDOMException)('AbortError', 'The connection has been closed.');
dbCreateError(_err);
return;
}
req.__transaction = null;
var e = (0, _Event.createEvent)('success');
req.dispatchEvent(e);
};
Expand Down Expand Up @@ -20138,6 +20144,7 @@ IDBTransaction.prototype.__abortTransaction = function (err) {
var evt = (0, _Event.createEvent)('abort', err, { bubbles: true, cancelable: false });
me.dispatchEvent(evt);
me.__storeClones = {};
me.dispatchEvent((0, _Event.createEvent)('__abort'));
});
}

Expand Down
6 changes: 3 additions & 3 deletions dist/indexeddbshim-UnicodeIdentifiers-node.min.js

Large diffs are not rendered by default.

9 changes: 8 additions & 1 deletion dist/indexeddbshim-UnicodeIdentifiers.js
Original file line number Diff line number Diff line change
Expand Up @@ -10600,11 +10600,17 @@ IDBFactory.prototype.open = function (name, version) {
req.transaction.on__beforecomplete = function () {
req.result.__versionTransaction = null;
};
req.transaction.on__abort = function () {
var err = (0, _DOMException.createDOMException)('AbortError', 'The upgrade transaction was aborted.');
dbCreateError(err);
};
req.transaction.on__complete = function () {
req.__transaction = null;
if (req.__result.__closed) {
var _err = (0, _DOMException.createDOMException)('AbortError', 'The connection has been closed.');
dbCreateError(_err);
return;
}
req.__transaction = null;
var e = (0, _Event.createEvent)('success');
req.dispatchEvent(e);
};
Expand Down Expand Up @@ -12641,6 +12647,7 @@ IDBTransaction.prototype.__abortTransaction = function (err) {
var evt = (0, _Event.createEvent)('abort', err, { bubbles: true, cancelable: false });
me.dispatchEvent(evt);
me.__storeClones = {};
me.dispatchEvent((0, _Event.createEvent)('__abort'));
});
}

Expand Down
8 changes: 4 additions & 4 deletions dist/indexeddbshim-UnicodeIdentifiers.min.js

Large diffs are not rendered by default.

9 changes: 8 additions & 1 deletion dist/indexeddbshim-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -18097,11 +18097,17 @@ IDBFactory.prototype.open = function (name, version) {
req.transaction.on__beforecomplete = function () {
req.result.__versionTransaction = null;
};
req.transaction.on__abort = function () {
var err = (0, _DOMException.createDOMException)('AbortError', 'The upgrade transaction was aborted.');
dbCreateError(err);
};
req.transaction.on__complete = function () {
req.__transaction = null;
if (req.__result.__closed) {
var _err = (0, _DOMException.createDOMException)('AbortError', 'The connection has been closed.');
dbCreateError(_err);
return;
}
req.__transaction = null;
var e = (0, _Event.createEvent)('success');
req.dispatchEvent(e);
};
Expand Down Expand Up @@ -20138,6 +20144,7 @@ IDBTransaction.prototype.__abortTransaction = function (err) {
var evt = (0, _Event.createEvent)('abort', err, { bubbles: true, cancelable: false });
me.dispatchEvent(evt);
me.__storeClones = {};
me.dispatchEvent((0, _Event.createEvent)('__abort'));
});
}

Expand Down
6 changes: 3 additions & 3 deletions dist/indexeddbshim-node.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/indexeddbshim-node.min.js.map

Large diffs are not rendered by default.

9 changes: 8 additions & 1 deletion dist/indexeddbshim.js
Original file line number Diff line number Diff line change
Expand Up @@ -10600,11 +10600,17 @@ IDBFactory.prototype.open = function (name, version) {
req.transaction.on__beforecomplete = function () {
req.result.__versionTransaction = null;
};
req.transaction.on__abort = function () {
var err = (0, _DOMException.createDOMException)('AbortError', 'The upgrade transaction was aborted.');
dbCreateError(err);
};
req.transaction.on__complete = function () {
req.__transaction = null;
if (req.__result.__closed) {
var _err = (0, _DOMException.createDOMException)('AbortError', 'The connection has been closed.');
dbCreateError(_err);
return;
}
req.__transaction = null;
var e = (0, _Event.createEvent)('success');
req.dispatchEvent(e);
};
Expand Down Expand Up @@ -12641,6 +12647,7 @@ IDBTransaction.prototype.__abortTransaction = function (err) {
var evt = (0, _Event.createEvent)('abort', err, { bubbles: true, cancelable: false });
me.dispatchEvent(evt);
me.__storeClones = {};
me.dispatchEvent((0, _Event.createEvent)('__abort'));
});
}

Expand Down
6 changes: 3 additions & 3 deletions dist/indexeddbshim.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/indexeddbshim.min.js.map

Large diffs are not rendered by default.

8 changes: 7 additions & 1 deletion src/IDBFactory.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,17 @@ IDBFactory.prototype.open = function (name, version) {
req.transaction.on__beforecomplete = function () {
req.result.__versionTransaction = null;
};
req.transaction.on__abort = function () {
const err = createDOMException('AbortError', 'The upgrade transaction was aborted.');
dbCreateError(err);
};
req.transaction.on__complete = function () {
req.__transaction = null;
if (req.__result.__closed) {
const err = createDOMException('AbortError', 'The connection has been closed.');
dbCreateError(err);
return;
}
req.__transaction = null;
const e = createEvent('success');
req.dispatchEvent(e);
};
Expand Down
1 change: 1 addition & 0 deletions src/IDBTransaction.js
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,7 @@ IDBTransaction.prototype.__abortTransaction = function (err) {
const evt = createEvent('abort', err, {bubbles: true, cancelable: false});
me.dispatchEvent(evt);
me.__storeClones = {};
me.dispatchEvent(createEvent('__abort'));
});
}

Expand Down

0 comments on commit a53531d

Please sign in to comment.