зеркало из https://github.com/mozilla/gecko-dev.git
Bug 991080. Add an overload of Promise::ArgumentToJSValue that lets callers pass in an nsTArray to MaybeResolve() a promise with a JS array. r=khuey
This commit is contained in:
Родитель
e74e09a7f2
Коммит
7eca30f98c
|
@ -17,6 +17,7 @@
|
|||
#include "nsWrapperCache.h"
|
||||
#include "nsAutoPtr.h"
|
||||
#include "js/TypeDecls.h"
|
||||
#include "jsapi.h"
|
||||
|
||||
#include "mozilla/dom/workers/bindings/WorkerFeature.h"
|
||||
|
||||
|
@ -267,6 +268,30 @@ private:
|
|||
return ArgumentToJSValue(*aArgument.get(), aCx, aValue);
|
||||
}
|
||||
|
||||
// Accept arrays of other things we accept
|
||||
template <typename T>
|
||||
bool
|
||||
ArgumentToJSValue(const nsTArray<T>& aArgument,
|
||||
JSContext* aCx,
|
||||
JS::MutableHandle<JS::Value> aValue)
|
||||
{
|
||||
JS::AutoValueVector v(aCx);
|
||||
if (!v.resize(aArgument.Length())) {
|
||||
return false;
|
||||
}
|
||||
for (uint32_t i = 0; i < aArgument.Length(); ++i) {
|
||||
if (!ArgumentToJSValue(aArgument[i], aCx, v.handleAt(i))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
JSObject* arrayObj = JS_NewArrayObject(aCx, v);
|
||||
if (!arrayObj) {
|
||||
return false;
|
||||
}
|
||||
aValue.setObject(*arrayObj);
|
||||
return true;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void MaybeSomething(T& aArgument, MaybeFunc aFunc) {
|
||||
ThreadsafeAutoJSContext cx;
|
||||
|
|
Загрузка…
Ссылка в новой задаче