Loading dom/indexedDB/Key.cpp +10 −8 Original line number Diff line number Diff line Loading @@ -105,14 +105,15 @@ IDBResult<Ok, IDBSpecialValue::Invalid> ConvertArrayValueToKey( } bool IsDetachedBuffer(JSContext* aCx, JS::Handle<JSObject*> aJsBufferSource) { if (JS_IsArrayBufferViewObject(aJsBufferSource)) { JS::Rooted<JSObject*> jsBufferSource(aCx, aJsBufferSource); if (JS_IsArrayBufferViewObject(jsBufferSource)) { bool unused = false; JS::Rooted<JSObject*> viewedArrayBuffer( aCx, JS_GetArrayBufferViewBuffer(aCx, aJsBufferSource, &unused)); aCx, JS_GetArrayBufferViewBuffer(aCx, jsBufferSource, &unused)); return JS::IsDetachedArrayBufferObject(viewedArrayBuffer); } return JS::IsDetachedArrayBufferObject(aJsBufferSource); return JS::IsDetachedArrayBufferObject(jsBufferSource); } // To get a copy of the bytes held by the buffer source given a buffer source Loading @@ -122,9 +123,10 @@ GetByteSpanFromJSBufferSource(JSContext* aCx, JS::Handle<JSObject*> aJsBufferSource) { // 1. Let jsBufferSource be the result of converting bufferSource to a // JavaScript value. JS::Rooted<JSObject*> jsBufferSource(aCx, aJsBufferSource); // 2. Let jsArrayBuffer be jsBufferSource. JS::Handle<JSObject*>& jsArrayBuffer = aJsBufferSource; JS::Rooted<JSObject*>& jsArrayBuffer = jsBufferSource; // 3. Let offset be 0. size_t offset = 0u; Loading @@ -136,7 +138,7 @@ GetByteSpanFromJSBufferSource(JSContext* aCx, uint8_t* bytes = nullptr; // Note: Copy is deferred, no allocation here // 5. If jsBufferSource has a [[ViewedArrayBuffer]] internal slot, then: if (JS_IsArrayBufferViewObject(aJsBufferSource)) { if (JS_IsArrayBufferViewObject(jsBufferSource)) { // 5.1 Set jsArrayBuffer to jsBufferSource.[[ViewedArrayBuffer]]. // 5.2 Set offset to jsBufferSource.[[ByteOffset]]. // 5.3 Set length to jsBufferSource.[[ByteLength]]. Loading @@ -154,8 +156,8 @@ GetByteSpanFromJSBufferSource(JSContext* aCx, // 6. Otherwise: } else { // 6.1 Assert: jsBufferSource is an ArrayBuffer or SharedArrayBuffer object. MOZ_RELEASE_ASSERT(JS::IsArrayBufferObject(aJsBufferSource) || JS::IsSharedArrayBufferObject(aJsBufferSource)); MOZ_RELEASE_ASSERT(JS::IsArrayBufferObject(jsBufferSource) || JS::IsSharedArrayBufferObject(jsBufferSource)); // 6.2 Set length to jsBufferSource.[[ArrayBufferByteLength]]. Loading @@ -170,7 +172,7 @@ GetByteSpanFromJSBufferSource(JSContext* aCx, // 7. If IsDetachedBuffer(jsArrayBuffer) is true, then return the empty byte // sequence. if (IsDetachedBuffer(aCx, aJsBufferSource)) { if (IsDetachedBuffer(aCx, jsArrayBuffer)) { // Note: As the web platform tests assume, and as has been discussed at // https://github.com/w3c/IndexedDB/issues/417 - we are better off by // throwing a DataCloneError. The spec language is about to be revised. Loading Loading
dom/indexedDB/Key.cpp +10 −8 Original line number Diff line number Diff line Loading @@ -105,14 +105,15 @@ IDBResult<Ok, IDBSpecialValue::Invalid> ConvertArrayValueToKey( } bool IsDetachedBuffer(JSContext* aCx, JS::Handle<JSObject*> aJsBufferSource) { if (JS_IsArrayBufferViewObject(aJsBufferSource)) { JS::Rooted<JSObject*> jsBufferSource(aCx, aJsBufferSource); if (JS_IsArrayBufferViewObject(jsBufferSource)) { bool unused = false; JS::Rooted<JSObject*> viewedArrayBuffer( aCx, JS_GetArrayBufferViewBuffer(aCx, aJsBufferSource, &unused)); aCx, JS_GetArrayBufferViewBuffer(aCx, jsBufferSource, &unused)); return JS::IsDetachedArrayBufferObject(viewedArrayBuffer); } return JS::IsDetachedArrayBufferObject(aJsBufferSource); return JS::IsDetachedArrayBufferObject(jsBufferSource); } // To get a copy of the bytes held by the buffer source given a buffer source Loading @@ -122,9 +123,10 @@ GetByteSpanFromJSBufferSource(JSContext* aCx, JS::Handle<JSObject*> aJsBufferSource) { // 1. Let jsBufferSource be the result of converting bufferSource to a // JavaScript value. JS::Rooted<JSObject*> jsBufferSource(aCx, aJsBufferSource); // 2. Let jsArrayBuffer be jsBufferSource. JS::Handle<JSObject*>& jsArrayBuffer = aJsBufferSource; JS::Rooted<JSObject*>& jsArrayBuffer = jsBufferSource; // 3. Let offset be 0. size_t offset = 0u; Loading @@ -136,7 +138,7 @@ GetByteSpanFromJSBufferSource(JSContext* aCx, uint8_t* bytes = nullptr; // Note: Copy is deferred, no allocation here // 5. If jsBufferSource has a [[ViewedArrayBuffer]] internal slot, then: if (JS_IsArrayBufferViewObject(aJsBufferSource)) { if (JS_IsArrayBufferViewObject(jsBufferSource)) { // 5.1 Set jsArrayBuffer to jsBufferSource.[[ViewedArrayBuffer]]. // 5.2 Set offset to jsBufferSource.[[ByteOffset]]. // 5.3 Set length to jsBufferSource.[[ByteLength]]. Loading @@ -154,8 +156,8 @@ GetByteSpanFromJSBufferSource(JSContext* aCx, // 6. Otherwise: } else { // 6.1 Assert: jsBufferSource is an ArrayBuffer or SharedArrayBuffer object. MOZ_RELEASE_ASSERT(JS::IsArrayBufferObject(aJsBufferSource) || JS::IsSharedArrayBufferObject(aJsBufferSource)); MOZ_RELEASE_ASSERT(JS::IsArrayBufferObject(jsBufferSource) || JS::IsSharedArrayBufferObject(jsBufferSource)); // 6.2 Set length to jsBufferSource.[[ArrayBufferByteLength]]. Loading @@ -170,7 +172,7 @@ GetByteSpanFromJSBufferSource(JSContext* aCx, // 7. If IsDetachedBuffer(jsArrayBuffer) is true, then return the empty byte // sequence. if (IsDetachedBuffer(aCx, aJsBufferSource)) { if (IsDetachedBuffer(aCx, jsArrayBuffer)) { // Note: As the web platform tests assume, and as has been discussed at // https://github.com/w3c/IndexedDB/issues/417 - we are better off by // throwing a DataCloneError. The spec language is about to be revised. Loading