void SharedMessagePortMessage::Write(JSContext* aCx, JS::Handle<JS::Value> aValue, JS::Handle<JS::Value> aTransfer, ErrorResult& aRv) { StructuredCloneHelper::Write(aCx, aValue, aTransfer, aRv); if (NS_WARN_IF(aRv.Failed())) { return; } const nsTArray<nsRefPtr<BlobImpl>>& blobImpls = BlobImpls(); for (uint32_t i = 0, len = blobImpls.Length(); i < len; ++i) { if (!blobImpls[i]->MayBeClonedToOtherThreads()) { aRv.Throw(NS_ERROR_DOM_DATA_CLONE_ERR); return; } } FallibleTArray<uint8_t> cloneData; MoveBufferDataToArray(cloneData, aRv); if (NS_WARN_IF(aRv.Failed())) { return; } MOZ_ASSERT(mData.IsEmpty()); mData.SwapElements(cloneData); }
void SharedMessagePortMessage::Write(JSContext* aCx, JS::Handle<JS::Value> aValue, JS::Handle<JS::Value> aTransfer, ErrorResult& aRv) { StructuredCloneHolder::Write(aCx, aValue, aTransfer, aRv); if (NS_WARN_IF(aRv.Failed())) { return; } FallibleTArray<uint8_t> cloneData; MoveBufferDataToArray(cloneData, aRv); if (NS_WARN_IF(aRv.Failed())) { return; } MOZ_ASSERT(mData.IsEmpty()); mData.SwapElements(cloneData); }