aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/ecmascripttests/qjstest/test262runner.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-08-10 13:04:42 +0200
committerSimon Hausmann <simon.hausmann@qt.io>2018-08-20 20:32:27 +0000
commit36ea464b3dcce6319c5252553d48dd5ac6ba8f41 (patch)
tree947dd32727ebbebd2e7d94a2306406c3f2b6ac82 /tests/auto/qml/ecmascripttests/qjstest/test262runner.cpp
parent59a90975bb7aa2dbbfe0986f19da1053275c6fef (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.cpp38
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);