forked from mirrors/gecko-dev
Bug 1878148 - fix the WPT IndexedDB/serialize-sharedarraybuffer-throws.https.html to trigger a data clone error per spec, and send the correct DataCloneError it expects; r=jari,dom-storage-reviewers,janv
Differential Revision: https://phabricator.services.mozilla.com/D208506
This commit is contained in:
parent
7cd5a89960
commit
c9f56fc858
4 changed files with 17 additions and 19 deletions
|
|
@ -276,12 +276,22 @@ bool CopyingStructuredCloneWriteCallback(JSContext* aCx,
|
||||||
aObj);
|
aObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StructuredCloneErrorCallback(JSContext* aCx, uint32_t aErrorId,
|
||||||
|
void* aClosure, const char* aErrorMessage) {
|
||||||
|
// This callback is only used to prevent the default cloning TypeErrors
|
||||||
|
// from being thrown, as we will throw DataCloneErrors instead per spec.
|
||||||
|
}
|
||||||
|
|
||||||
nsresult GetAddInfoCallback(JSContext* aCx, void* aClosure) {
|
nsresult GetAddInfoCallback(JSContext* aCx, void* aClosure) {
|
||||||
static const JSStructuredCloneCallbacks kStructuredCloneCallbacks = {
|
static const JSStructuredCloneCallbacks kStructuredCloneCallbacks = {
|
||||||
nullptr /* read */, StructuredCloneWriteCallback /* write */,
|
nullptr /* read */,
|
||||||
nullptr /* reportError */, nullptr /* readTransfer */,
|
StructuredCloneWriteCallback /* write */,
|
||||||
nullptr /* writeTransfer */, nullptr /* freeTransfer */,
|
StructuredCloneErrorCallback /* reportError */,
|
||||||
nullptr /* canTransfer */, nullptr /* sabCloned */
|
nullptr /* readTransfer */,
|
||||||
|
nullptr /* writeTransfer */,
|
||||||
|
nullptr /* freeTransfer */,
|
||||||
|
nullptr /* canTransfer */,
|
||||||
|
nullptr /* sabCloned */
|
||||||
};
|
};
|
||||||
|
|
||||||
MOZ_ASSERT(aCx);
|
MOZ_ASSERT(aCx);
|
||||||
|
|
@ -555,7 +565,7 @@ bool IDBObjectStore::DeserializeValue(
|
||||||
static const JSStructuredCloneCallbacks callbacks = {
|
static const JSStructuredCloneCallbacks callbacks = {
|
||||||
StructuredCloneReadCallback<StructuredCloneReadInfoChild>,
|
StructuredCloneReadCallback<StructuredCloneReadInfoChild>,
|
||||||
nullptr,
|
nullptr,
|
||||||
nullptr,
|
StructuredCloneErrorCallback,
|
||||||
nullptr,
|
nullptr,
|
||||||
nullptr,
|
nullptr,
|
||||||
nullptr,
|
nullptr,
|
||||||
|
|
@ -1751,7 +1761,7 @@ bool IDBObjectStore::ValueWrapper::Clone(JSContext* aCx) {
|
||||||
static const JSStructuredCloneCallbacks callbacks = {
|
static const JSStructuredCloneCallbacks callbacks = {
|
||||||
CopyingStructuredCloneReadCallback /* read */,
|
CopyingStructuredCloneReadCallback /* read */,
|
||||||
CopyingStructuredCloneWriteCallback /* write */,
|
CopyingStructuredCloneWriteCallback /* write */,
|
||||||
nullptr /* reportError */,
|
StructuredCloneErrorCallback /* reportError */,
|
||||||
nullptr /* readTransfer */,
|
nullptr /* readTransfer */,
|
||||||
nullptr /* writeTransfer */,
|
nullptr /* writeTransfer */,
|
||||||
nullptr /* freeTransfer */,
|
nullptr /* freeTransfer */,
|
||||||
|
|
|
||||||
|
|
@ -2,5 +2,3 @@
|
||||||
expected:
|
expected:
|
||||||
if (os == "android") and not debug: [OK, TIMEOUT]
|
if (os == "android") and not debug: [OK, TIMEOUT]
|
||||||
if (os == "android") and debug: [OK, TIMEOUT]
|
if (os == "android") and debug: [OK, TIMEOUT]
|
||||||
[IndexedDB: Attempting to serialize a SharedArrayBuffer should throw]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
||||||
|
|
@ -4,17 +4,7 @@
|
||||||
[SharedArrayBuffer cloning via IndexedDB: basic case]
|
[SharedArrayBuffer cloning via IndexedDB: basic case]
|
||||||
expected:
|
expected:
|
||||||
if (processor == "x86") and (os == "win") and not debug: [FAIL, TIMEOUT]
|
if (processor == "x86") and (os == "win") and not debug: [FAIL, TIMEOUT]
|
||||||
FAIL
|
|
||||||
|
|
||||||
[SharedArrayBuffer cloning via the IndexedDB: is interleaved correctly]
|
[SharedArrayBuffer cloning via the IndexedDB: is interleaved correctly]
|
||||||
expected:
|
expected:
|
||||||
if (processor == "x86") and (os == "win") and not debug: [FAIL, TIMEOUT]
|
if (processor == "x86") and (os == "win") and not debug: [FAIL, TIMEOUT]
|
||||||
FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[serialization-via-idb.any.html]
|
|
||||||
[SharedArrayBuffer cloning via IndexedDB: basic case]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[SharedArrayBuffer cloning via the IndexedDB: is interleaved correctly]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
let open_rq = createdb(t);
|
let open_rq = createdb(t);
|
||||||
open_rq.onupgradeneeded = function(e) {
|
open_rq.onupgradeneeded = function(e) {
|
||||||
let db = e.target.result;
|
let db = e.target.result;
|
||||||
let objStore = db.createObjectStore("test", { keyPath:"pKey" });
|
let objStore = db.createObjectStore("test");
|
||||||
|
|
||||||
let sab = new SharedArrayBuffer(256);
|
let sab = new SharedArrayBuffer(256);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue