Commit f21d9b65 authored by Jari Jalkanen's avatar Jari Jalkanen
Browse files

Bug 1895951 - Use a better alias for spec conformance. r=dom-storage-reviewers,janv

parent 06ef42c7
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -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
@@ -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;
@@ -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]].
@@ -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]].

@@ -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.