diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-09-23 15:52:10 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-26 09:05:16 +0200 |
commit | 12fd2ccd3fa2dc0133b5a3fb89f9fdf5cf721232 (patch) | |
tree | 880acb9c7c0d8289185b6aebe4339f439c707a0e /src/qml/jsapi | |
parent | 2e4f66caa8a5f9e887dbdb4e3f2ae5c9be9a7005 (diff) |
Fix Persistent/WeakValue API
Don't use unprotected Values in the API anymore.
Change-Id: I8851628227fca374de24701bc8ee0908b5ae3923
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsapi')
-rw-r--r-- | src/qml/jsapi/qjsengine.cpp | 15 | ||||
-rw-r--r-- | src/qml/jsapi/qjsvalue.cpp | 12 | ||||
-rw-r--r-- | src/qml/jsapi/qjsvalue_p.h | 17 |
3 files changed, 25 insertions, 19 deletions
diff --git a/src/qml/jsapi/qjsengine.cpp b/src/qml/jsapi/qjsengine.cpp index f99463256e..59a6a14e81 100644 --- a/src/qml/jsapi/qjsengine.cpp +++ b/src/qml/jsapi/qjsengine.cpp @@ -286,7 +286,9 @@ QJSValue QJSEngine::evaluate(const QString& program, const QString& fileName, in */ QJSValue QJSEngine::newObject() { - return new QJSValuePrivate(d->m_v4Engine->newObject()->getPointer()); + QV4::Scope scope(d->m_v4Engine); + QV4::ScopedValue v(scope, d->m_v4Engine->newObject()); + return new QJSValuePrivate(d->m_v4Engine, v); } /*! @@ -301,7 +303,7 @@ QJSValue QJSEngine::newArray(uint length) if (length < 0x1000) array->arrayReserve(length); array->setArrayLengthUnchecked(length); - return new QJSValuePrivate(d->m_v4Engine, array.asValue()); + return new QJSValuePrivate(d->m_v4Engine, array); } /*! @@ -346,7 +348,10 @@ QJSValue QJSEngine::newQObject(QObject *object) */ QJSValue QJSEngine::globalObject() const { - return new QJSValuePrivate(d->m_v4Engine->globalObject); + Q_D(const QJSEngine); + QV4::Scope scope(d->m_v4Engine); + QV4::ScopedValue v(scope, d->m_v4Engine->globalObject); + return new QJSValuePrivate(d->m_v4Engine, v); } /*! @@ -356,7 +361,9 @@ QJSValue QJSEngine::globalObject() const QJSValue QJSEngine::create(int type, const void *ptr) { Q_D(QJSEngine); - return new QJSValuePrivate(d->m_v4Engine, QV4::Value::fromReturnedValue(d->metaTypeToJS(type, ptr))); + QV4::Scope scope(d->m_v4Engine); + QV4::ScopedValue v(scope, d->metaTypeToJS(type, ptr)); + return new QJSValuePrivate(d->m_v4Engine, v); } /*! diff --git a/src/qml/jsapi/qjsvalue.cpp b/src/qml/jsapi/qjsvalue.cpp index 56a01a584d..9c06f403b5 100644 --- a/src/qml/jsapi/qjsvalue.cpp +++ b/src/qml/jsapi/qjsvalue.cpp @@ -149,7 +149,7 @@ using namespace QV4; Constructs a new QJSValue with a boolean \a value. */ QJSValue::QJSValue(bool value) - : d(new QJSValuePrivate(0, Value::fromBoolean(value))) + : d(new QJSValuePrivate(Encode(value))) { } @@ -162,7 +162,7 @@ QJSValue::QJSValue(QJSValuePrivate *dd) Constructs a new QJSValue with a number \a value. */ QJSValue::QJSValue(int value) - : d(new QJSValuePrivate(0, Value::fromInt32(value))) + : d(new QJSValuePrivate(Encode(value))) { } @@ -170,7 +170,7 @@ QJSValue::QJSValue(int value) Constructs a new QJSValue with a number \a value. */ QJSValue::QJSValue(uint value) - : d(new QJSValuePrivate(0, Value::fromUInt32(value))) + : d(new QJSValuePrivate(Encode(value))) { } @@ -178,7 +178,7 @@ QJSValue::QJSValue(uint value) Constructs a new QJSValue with a number \a value. */ QJSValue::QJSValue(double value) - : d(new QJSValuePrivate(0, Value::fromDouble(value))) + : d(new QJSValuePrivate(Encode(value))) { } @@ -194,7 +194,7 @@ QJSValue::QJSValue(const QString& value) Constructs a new QJSValue with a special \a value. */ QJSValue::QJSValue(SpecialValue value) - : d(new QJSValuePrivate(0, value == UndefinedValue ? Value::undefinedValue() : Value::nullValue())) + : d(new QJSValuePrivate(value == UndefinedValue ? Encode::undefined() : Encode::null())) { } @@ -673,7 +673,7 @@ QJSValue QJSValue::prototype() const Scoped<Object> p(scope, o->prototype()); if (!p) return QJSValue(NullValue); - return new QJSValuePrivate(o->internalClass->engine, p.asValue()); + return new QJSValuePrivate(o->internalClass->engine, p); } /*! diff --git a/src/qml/jsapi/qjsvalue_p.h b/src/qml/jsapi/qjsvalue_p.h index a0dfa010ab..ec3f61ef20 100644 --- a/src/qml/jsapi/qjsvalue_p.h +++ b/src/qml/jsapi/qjsvalue_p.h @@ -69,19 +69,18 @@ QT_BEGIN_NAMESPACE class Q_QML_PRIVATE_EXPORT QJSValuePrivate : public QV4::PersistentValuePrivate { public: - QJSValuePrivate(QV4::ExecutionEngine *engine, const QV4::Value &v) - : PersistentValuePrivate(v, engine) + QJSValuePrivate(QV4::ExecutionEngine *engine, const QV4::ValueRef v) + : PersistentValuePrivate(v.asReturnedValue(), engine) + { + Q_ASSERT(!value.isEmpty()); + } + QJSValuePrivate(QV4::ReturnedValue v) + : PersistentValuePrivate(v) { Q_ASSERT(!value.isEmpty()); } - QJSValuePrivate(QV4::Object *o) - : PersistentValuePrivate(QV4::Value::fromObject(o)) - { } - QJSValuePrivate(QV4::String *s) - : PersistentValuePrivate(QV4::Value::fromString(s)) - { } QJSValuePrivate(const QString &s) - : PersistentValuePrivate(QV4::Value::undefinedValue()) + : PersistentValuePrivate(QV4::Encode::undefined()) , string(0, s) { value = QV4::Value::fromString(&string); |