diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-08-10 13:04:42 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2018-08-20 20:32:27 +0000 |
commit | 36ea464b3dcce6319c5252553d48dd5ac6ba8f41 (patch) | |
tree | 947dd32727ebbebd2e7d94a2306406c3f2b6ac82 /tests/auto/qml/ecmascripttests/qjstest/test262runner.cpp | |
parent | 59a90975bb7aa2dbbfe0986f19da1053275c6fef (diff) |
Implement the $262.detachArrayBuffer() method for testing
Change-Id: I30ddca4402254e1cde17712d07ea0bff2ea5f595
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'tests/auto/qml/ecmascripttests/qjstest/test262runner.cpp')
-rw-r--r-- | tests/auto/qml/ecmascripttests/qjstest/test262runner.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/auto/qml/ecmascripttests/qjstest/test262runner.cpp b/tests/auto/qml/ecmascripttests/qjstest/test262runner.cpp index 55c8f23dbd..9f23326d8c 100644 --- a/tests/auto/qml/ecmascripttests/qjstest/test262runner.cpp +++ b/tests/auto/qml/ecmascripttests/qjstest/test262runner.cpp @@ -37,6 +37,7 @@ #include <private/qv4script_p.h> #include "private/qv4globalobject_p.h" #include "private/qqmlbuiltinfunctions_p.h" +#include "private/qv4arraybuffer_p.h" #include "qrunnable.h" @@ -68,6 +69,42 @@ static const char *excludedFeatures[] = { nullptr }; +QT_BEGIN_NAMESPACE + +namespace QV4 { + +static ReturnedValue method_detachArrayBuffer(const FunctionObject *f, const Value *, const Value *argv, int argc) +{ + Scope scope(f); + if (!argc) + return scope.engine->throwTypeError(); + Scoped<ArrayBuffer> a(scope, argv[0]); + if (!a) + return scope.engine->throwTypeError(); + + if (a->isShared()) + return scope.engine->throwTypeError(); + + a->d()->detachArrayBuffer(); + + return Encode::null(); +} + +static void initD262(ExecutionEngine *e) +{ + Scope scope(e); + ScopedObject d262(scope, e->newObject()); + + d262->defineDefaultProperty(QStringLiteral("detachArrayBuffer"), method_detachArrayBuffer, 1); + + ScopedString s(scope, e->newString(QStringLiteral("$262"))); + e->globalObject->put(s, d262); +} + +} + +QT_END_NAMESPACE + Test262Runner::Test262Runner(const QString &command, const QString &dir) : command(command), testDir(dir) { @@ -450,6 +487,7 @@ static bool executeTest(const QByteArray &data, bool runAsModule = false, const QV4::Scope scope(&vm); QV4::GlobalExtensions::init(vm.globalObject, QJSEngine::ConsoleExtension | QJSEngine::GarbageCollectionExtension); + QV4::initD262(&vm); if (runAsModule) { const QUrl rootModuleUrl = QUrl::fromLocalFile(testCasePath); |