Issue #2197 - Part 1b: Transferables should be arrays of objects

Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1336020
This commit is contained in:
FranklinDM 2023-04-07 12:04:38 +08:00 committed by roytam1
commit 47147d58b0
24 changed files with 118 additions and 129 deletions

View file

@ -190,7 +190,7 @@ private:
void
ServiceWorkerClient::PostMessage(JSContext* aCx, JS::Handle<JS::Value> aMessage,
const Sequence<JS::Value>& aTransferable,
const Sequence<JSObject*>& aTransferable,
ErrorResult& aRv)
{
WorkerPrivate* workerPrivate = GetCurrentThreadWorkerPrivate();
@ -198,18 +198,11 @@ ServiceWorkerClient::PostMessage(JSContext* aCx, JS::Handle<JS::Value> aMessage,
workerPrivate->AssertIsOnWorkerThread();
JS::Rooted<JS::Value> transferable(aCx, JS::UndefinedValue());
if (!aTransferable.IsEmpty()) {
JS::HandleValueArray elements =
JS::HandleValueArray::fromMarkedLocation(aTransferable.Length(),
aTransferable.Elements());
JSObject* array = JS_NewArrayObject(aCx, elements);
if (!array) {
aRv.Throw(NS_ERROR_OUT_OF_MEMORY);
return;
}
transferable.setObject(*array);
aRv = nsContentUtils::CreateJSValueFromSequenceOfObject(aCx,
aTransferable,
&transferable);
if (NS_WARN_IF(aRv.Failed())) {
return;
}
RefPtr<ServiceWorkerClientPostMessageRunnable> runnable =