aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKent Hansen <kent.hansen@nokia.com>2012-01-17 09:49:52 +0100
committerQt by Nokia <qt-info@nokia.com>2012-02-01 08:37:49 +0100
commite77ea6f2fa8e98cb4a03144664a31b6070635a63 (patch)
tree9d95dc1efba9bbc62ddb193ba2da04a9144ba033
parentbe784e3b15068c0677115ca9500531212584cc7d (diff)
Remove QJSEngine::newVariant() function
Rationale: This is a remnant from QtScript. There is no reason one should be able to explicitly wrap an arbitrary C++ type in a QVariant. toScriptValue() will automatically wrap the type in a QVariant if it's a type that's not specifically handled by the meta-type system, or if it can't usefully/losslessly be converted to a native JavaScript type. Task-number: QTBUG-23604 Change-Id: I5790cd92b9ffd5fcfbee1cd73a8eaa16fc74846f Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
-rw-r--r--src/declarative/qml/v8/qjsengine.cpp24
-rw-r--r--src/declarative/qml/v8/qjsengine.h2
-rw-r--r--src/declarative/qml/v8/qjsvalue.cpp2
-rw-r--r--src/declarative/qml/v8/qv8engine_p.h1
-rw-r--r--tests/auto/declarative/qjsengine/tst_qjsengine.cpp30
-rw-r--r--tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp159
6 files changed, 26 insertions, 192 deletions
diff --git a/src/declarative/qml/v8/qjsengine.cpp b/src/declarative/qml/v8/qjsengine.cpp
index 5141715749..542c20d3d2 100644
--- a/src/declarative/qml/v8/qjsengine.cpp
+++ b/src/declarative/qml/v8/qjsengine.cpp
@@ -401,30 +401,6 @@ QJSValue QJSEngine::newQObject(QObject *object)
return d->scriptValueFromInternal(d->newQObject(object, QV8Engine::JavaScriptOwnership));
}
-#ifdef QT_DEPRECATED
-
-/*!
- \obsolete
-
- Creates a JavaScript object holding the given variant \a value.
-
- If a default prototype has been registered with the meta type id of
- \a value, then the prototype of the created object will be that
- prototype; otherwise, the prototype will be the Object prototype
- object.
-
- \sa setDefaultPrototype(), QJSValue::toVariant(), reportAdditionalMemoryCost()
-*/
-QJSValue QJSEngine::newVariant(const QVariant &value)
-{
- Q_D(QJSEngine);
- QScriptIsolate api(d, QScriptIsolate::NotNullEngine);
- v8::HandleScope handleScope;
- return d->scriptValueFromInternal(d->newVariant(value));
-}
-
-#endif // QT_DEPRECATED
-
/*!
Returns this engine's Global Object.
diff --git a/src/declarative/qml/v8/qjsengine.h b/src/declarative/qml/v8/qjsengine.h
index 35fd4f49ac..f243fda489 100644
--- a/src/declarative/qml/v8/qjsengine.h
+++ b/src/declarative/qml/v8/qjsengine.h
@@ -90,8 +90,6 @@ public:
QT_DEPRECATED QJSValue nullValue();
QT_DEPRECATED QJSValue undefinedValue();
-
- QT_DEPRECATED QJSValue newVariant(const QVariant &value);
#endif
Q_SIGNALS:
diff --git a/src/declarative/qml/v8/qjsvalue.cpp b/src/declarative/qml/v8/qjsvalue.cpp
index 3a49e94ca3..a34031d555 100644
--- a/src/declarative/qml/v8/qjsvalue.cpp
+++ b/src/declarative/qml/v8/qjsvalue.cpp
@@ -502,7 +502,7 @@ bool QJSValue::isFunction() const
Returns true if this QJSValue is a variant value;
otherwise returns false.
- \sa toVariant(), QJSEngine::newVariant()
+ \sa toVariant()
*/
bool QJSValue::isVariant() const
{
diff --git a/src/declarative/qml/v8/qv8engine_p.h b/src/declarative/qml/v8/qv8engine_p.h
index b3f5578565..d9cc9fc6f4 100644
--- a/src/declarative/qml/v8/qv8engine_p.h
+++ b/src/declarative/qml/v8/qv8engine_p.h
@@ -401,7 +401,6 @@ public:
QScriptPassPointer<QJSValuePrivate> newArray(uint length);
v8::Local<v8::Object> newVariant(const QVariant &variant);
- QScriptPassPointer<QJSValuePrivate> newVariant(QJSValuePrivate* value, const QVariant &variant);
v8::Local<v8::Array> variantListToJS(const QVariantList &lst);
QVariantList variantListFromJS(v8::Handle<v8::Array> jsArray);
diff --git a/tests/auto/declarative/qjsengine/tst_qjsengine.cpp b/tests/auto/declarative/qjsengine/tst_qjsengine.cpp
index 7aadabb192..2d49619a8c 100644
--- a/tests/auto/declarative/qjsengine/tst_qjsengine.cpp
+++ b/tests/auto/declarative/qjsengine/tst_qjsengine.cpp
@@ -654,7 +654,7 @@ void tst_QJSEngine::newVariant()
{
QJSEngine eng;
{
- QJSValue opaque = eng.newVariant(QVariant());
+ QJSValue opaque = eng.toScriptValue(QVariant(QPoint(1, 2)));
QCOMPARE(opaque.isValid(), true);
QCOMPARE(opaque.isVariant(), true);
QVERIFY(!opaque.isCallable());
@@ -662,7 +662,7 @@ void tst_QJSEngine::newVariant()
QCOMPARE(opaque.prototype().isValid(), true);
QEXPECT_FAIL("", "FIXME: newly created QObject's prototype is an JS Object", Continue);
QCOMPARE(opaque.prototype().isVariant(), true);
- QVERIFY(opaque.property("valueOf").callWithInstance(opaque).isUndefined());
+ QVERIFY(opaque.property("valueOf").callWithInstance(opaque).equals(opaque));
}
}
@@ -732,31 +732,7 @@ void tst_QJSEngine::newVariant_valueOfToString()
// valueOf() and toString()
QJSEngine eng;
{
- QJSValue object = eng.newVariant(QVariant(123));
- QJSValue value = object.property("valueOf").callWithInstance(object);
- QVERIFY(value.isNumber());
- QCOMPARE(value.toInt(), 123);
- QCOMPARE(object.toString(), QString::fromLatin1("123"));
- QCOMPARE(object.toVariant().toString(), object.toString());
- }
- {
- QJSValue object = eng.newVariant(QVariant(QString::fromLatin1("hello")));
- QJSValue value = object.property("valueOf").callWithInstance(object);
- QVERIFY(value.isString());
- QCOMPARE(value.toString(), QString::fromLatin1("hello"));
- QCOMPARE(object.toString(), QString::fromLatin1("hello"));
- QCOMPARE(object.toVariant().toString(), object.toString());
- }
- {
- QJSValue object = eng.newVariant(QVariant(false));
- QJSValue value = object.property("valueOf").callWithInstance(object);
- QVERIFY(value.isBool());
- QCOMPARE(value.toBool(), false);
- QCOMPARE(object.toString(), QString::fromLatin1("false"));
- QCOMPARE(object.toVariant().toString(), object.toString());
- }
- {
- QJSValue object = eng.newVariant(QVariant(QPoint(10, 20)));
+ QJSValue object = eng.toScriptValue(QVariant(QPoint(10, 20)));
QJSValue value = object.property("valueOf").callWithInstance(object);
QVERIFY(value.isObject());
QVERIFY(value.strictlyEquals(object));
diff --git a/tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp b/tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp
index 1c03fc1509..d034b76c03 100644
--- a/tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp
+++ b/tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp
@@ -442,16 +442,11 @@ void tst_QJSValue::toString()
// variant should use internal valueOf(), then fall back to QVariant::toString(),
// then fall back to "QVariant(typename)"
- QJSValue variant = eng.newVariant(123);
- QVERIFY(variant.isVariant());
- QCOMPARE(variant.toString(), QString::fromLatin1("123"));
- variant = eng.newVariant(QByteArray("hello"));
- QVERIFY(variant.isVariant());
- QCOMPARE(variant.toString(), QString::fromLatin1("hello"));
- variant = eng.newVariant(QVariant(QPoint(10, 20)));
+ QJSValue variant = eng.toScriptValue(QPoint(10, 20));
QVERIFY(variant.isVariant());
QCOMPARE(variant.toString(), QString::fromLatin1("QVariant(QPoint)"));
- variant = eng.newVariant(QUrl());
+ variant = eng.toScriptValue(QUrl());
+ QVERIFY(variant.isVariant());
QVERIFY(variant.toString().isEmpty());
}
@@ -1037,11 +1032,6 @@ void tst_QJSValue::toVariant()
QCOMPARE(qjsvalue_cast<QVariant>(str), QVariant(QString("ciao")));
}
- QVariant var(QChar(0x007A));
- QJSValue opaque = eng.newVariant(var);
- QVERIFY(opaque.isVariant());
- QCOMPARE(opaque.toVariant(), var);
-
QJSValue object = eng.newObject();
QCOMPARE(object.toVariant(), QVariant(QVariantMap()));
@@ -1136,8 +1126,8 @@ void tst_QJSValue::toQObject_nonQObject_data()
QTest::newRow("object") << engine->newObject();
QTest::newRow("array") << engine->newArray();
QTest::newRow("date") << engine->evaluate("new Date(124)");
- QTest::newRow("variant(12345)") << engine->newVariant(12345);
- QTest::newRow("variant((QObject*)0)") << engine->newVariant(qVariantFromValue((QObject*)0));
+ QTest::newRow("variant(12345)") << engine->toScriptValue(QVariant(12345));
+ QTest::newRow("variant((QObject*)0)") << engine->toScriptValue(qVariantFromValue((QObject*)0));
QTest::newRow("newQObject(0)") << engine->newQObject(0);
}
@@ -1173,25 +1163,6 @@ void tst_QJSValue::toQObject()
QCOMPARE(qjsvalue_cast<QObject*>(qbutton), (QObject *)&button);
QCOMPARE(qjsvalue_cast<QWidget*>(qbutton), (QWidget *)&button);
QCOMPARE(qjsvalue_cast<QPushButton*>(qbutton), &button);
-
- // wrapping a QObject* as variant
- QJSValue variant = eng.newVariant(qVariantFromValue((QObject*)&button));
- QCOMPARE(variant.toQObject(), (QObject*)&button);
- QCOMPARE(qjsvalue_cast<QObject*>(variant), (QObject*)&button);
- QCOMPARE(qjsvalue_cast<QWidget*>(variant), (QWidget*)&button);
- QCOMPARE(qjsvalue_cast<QPushButton*>(variant), &button);
-
- QJSValue variant2 = eng.newVariant(qVariantFromValue((QWidget*)&button));
- QCOMPARE(variant2.toQObject(), (QObject*)&button);
- QCOMPARE(qjsvalue_cast<QObject*>(variant2), (QObject*)&button);
- QCOMPARE(qjsvalue_cast<QWidget*>(variant2), (QWidget*)&button);
- QCOMPARE(qjsvalue_cast<QPushButton*>(variant2), &button);
-
- QJSValue variant3 = eng.newVariant(qVariantFromValue(&button));
- QCOMPARE(variant3.toQObject(), (QObject*)0);
- QCOMPARE(qjsvalue_cast<QObject*>(variant3), (QObject*)0);
- QCOMPARE(qjsvalue_cast<QWidget*>(variant3), (QWidget*)0);
- QCOMPARE(qjsvalue_cast<QPushButton*>(variant3), &button);
}
void tst_QJSValue::toDateTime()
@@ -2371,7 +2342,7 @@ void tst_QJSValue::getSetScriptClass_QVariant()
TestScriptClass testClass(&eng);
// object that already has a(n internal) class
{
- QJSValue obj = eng.newVariant(QUrl("http://example.com"));
+ QJSValue obj = eng.toScriptValue(QUrl("http://example.com"));
QVERIFY(obj.isVariant());
QCOMPARE(obj.scriptClass(), (QScriptClass*)0);
obj.setScriptClass(&testClass);
@@ -3162,79 +3133,16 @@ void tst_QJSValue::equals()
}
{
- QJSValue var1 = eng.newVariant(QVariant(false));
- QJSValue var2 = eng.newVariant(QVariant(false));
- QEXPECT_FAIL("", "FIXME: QVariant comparison does not work with v8", Continue);
- QVERIFY(var1.equals(var2));
- {
- QJSValue ret = compareFun.call(QJSValue(), QJSValueList() << var1 << var2);
- QVERIFY(ret.isBool());
- }
- }
- {
- QJSValue var1 = eng.newVariant(QVariant(false));
- QJSValue var2 = eng.newVariant(QVariant(0));
- // QVariant::operator==() performs type conversion
- QEXPECT_FAIL("", "FIXME: QVariant comparison does not work with v8", Continue);
- QVERIFY(var1.equals(var2));
- }
- {
- QJSValue var1 = eng.newVariant(QVariant(QStringList() << "a"));
- QJSValue var2 = eng.newVariant(QVariant(QStringList() << "a"));
- QEXPECT_FAIL("", "FIXME: QVariant comparison does not work with v8", Continue);
- QVERIFY(var1.equals(var2));
- }
- {
- QJSValue var1 = eng.newVariant(QVariant(QStringList() << "a"));
- QJSValue var2 = eng.newVariant(QVariant(QStringList() << "b"));
- QVERIFY(!var1.equals(var2));
- }
- {
- QJSValue var1 = eng.newVariant(QVariant(QPoint(1, 2)));
- QJSValue var2 = eng.newVariant(QVariant(QPoint(1, 2)));
+ QJSValue var1 = eng.toScriptValue(QVariant(QPoint(1, 2)));
+ QJSValue var2 = eng.toScriptValue(QVariant(QPoint(1, 2)));
QEXPECT_FAIL("", "FIXME: QVariant comparison does not work with v8", Continue);
QVERIFY(var1.equals(var2));
}
{
- QJSValue var1 = eng.newVariant(QVariant(QPoint(1, 2)));
- QJSValue var2 = eng.newVariant(QVariant(QPoint(3, 4)));
+ QJSValue var1 = eng.toScriptValue(QVariant(QPoint(1, 2)));
+ QJSValue var2 = eng.toScriptValue(QVariant(QPoint(3, 4)));
QVERIFY(!var1.equals(var2));
}
- {
- QJSValue var1 = eng.newVariant(QVariant(int(1)));
- QJSValue var2 = eng.newVariant(QVariant(double(1)));
- // QVariant::operator==() performs type conversion
- QEXPECT_FAIL("", "FIXME: QVariant comparison does not work with v8", Continue);
- QVERIFY(var1.equals(var2));
- }
- {
- QJSValue var1 = eng.newVariant(QVariant(QString::fromLatin1("123")));
- QJSValue var2 = eng.newVariant(QVariant(double(123)));
- QJSValue var3(QString::fromLatin1("123"));
- QJSValue var4(123);
-
- QVERIFY(var1.equals(var1));
- QEXPECT_FAIL("", "FIXME: QVariant comparison does not work with v8", Continue);
- QVERIFY(var1.equals(var2));
- QVERIFY(var1.equals(var3));
- QVERIFY(var1.equals(var4));
-
- QEXPECT_FAIL("", "FIXME: QVariant comparison does not work with v8", Continue);
- QVERIFY(var2.equals(var1));
- QVERIFY(var2.equals(var2));
- QVERIFY(var2.equals(var3));
- QVERIFY(var2.equals(var4));
-
- QVERIFY(var3.equals(var1));
- QVERIFY(var3.equals(var2));
- QVERIFY(var3.equals(var3));
- QVERIFY(var3.equals(var4));
-
- QVERIFY(var4.equals(var1));
- QVERIFY(var4.equals(var2));
- QVERIFY(var4.equals(var3));
- QVERIFY(var4.equals(var4));
- }
QJSEngine otherEngine;
QTest::ignoreMessage(QtWarningMsg, "QJSValue::equals: "
@@ -3356,34 +3264,25 @@ void tst_QJSValue::strictlyEquals()
QVERIFY(qobj1.strictlyEquals(qobj2));
{
- QJSValue var1 = eng.newVariant(QVariant(false));
- QJSValue var2 = eng.newVariant(QVariant(false));
- QVERIFY(!var1.strictlyEquals(var2));
- QVERIFY(!var1.strictlyEquals(QJSValue()));
- }
- {
- QJSValue var1 = eng.newVariant(QVariant(false));
- QJSValue var2 = eng.newVariant(QVariant(0));
+ QJSValue var1 = eng.toScriptValue(QVariant(QStringList() << "a"));
+ QJSValue var2 = eng.toScriptValue(QVariant(QStringList() << "a"));
+ QVERIFY(var1.isArray());
+ QVERIFY(var2.isArray());
QVERIFY(!var1.strictlyEquals(var2));
}
{
- QJSValue var1 = eng.newVariant(QVariant(QStringList() << "a"));
- QJSValue var2 = eng.newVariant(QVariant(QStringList() << "a"));
+ QJSValue var1 = eng.toScriptValue(QVariant(QStringList() << "a"));
+ QJSValue var2 = eng.toScriptValue(QVariant(QStringList() << "b"));
QVERIFY(!var1.strictlyEquals(var2));
}
{
- QJSValue var1 = eng.newVariant(QVariant(QStringList() << "a"));
- QJSValue var2 = eng.newVariant(QVariant(QStringList() << "b"));
+ QJSValue var1 = eng.toScriptValue(QVariant(QPoint(1, 2)));
+ QJSValue var2 = eng.toScriptValue(QVariant(QPoint(1, 2)));
QVERIFY(!var1.strictlyEquals(var2));
}
{
- QJSValue var1 = eng.newVariant(QVariant(QPoint(1, 2)));
- QJSValue var2 = eng.newVariant(QVariant(QPoint(1, 2)));
- QVERIFY(!var1.strictlyEquals(var2));
- }
- {
- QJSValue var1 = eng.newVariant(QVariant(QPoint(1, 2)));
- QJSValue var2 = eng.newVariant(QVariant(QPoint(3, 4)));
+ QJSValue var1 = eng.toScriptValue(QVariant(QPoint(1, 2)));
+ QJSValue var2 = eng.toScriptValue(QVariant(QPoint(3, 4)));
QVERIFY(!var1.strictlyEquals(var2));
}
@@ -3403,22 +3302,8 @@ void tst_QJSValue::castToPointer()
{
QJSEngine eng;
{
- QJSValue v = eng.newVariant(int(123));
- int *ip = qjsvalue_cast<int*>(v);
- QVERIFY(ip != 0);
- QCOMPARE(*ip, 123);
- *ip = 456;
- QCOMPARE(qjsvalue_cast<int>(v), 456);
-
- double *dp = qjsvalue_cast<double*>(v);
- QVERIFY(dp == 0);
-
- QJSValue v2 = eng.newVariant(qVariantFromValue(ip));
- QCOMPARE(qjsvalue_cast<int*>(v2), ip);
- }
- {
QColor c(123, 210, 231);
- QJSValue v = eng.newVariant(c);
+ QJSValue v = eng.toScriptValue(c);
QColor *cp = qjsvalue_cast<QColor*>(v);
QVERIFY(cp != 0);
QCOMPARE(*cp, c);
@@ -3426,7 +3311,7 @@ void tst_QJSValue::castToPointer()
QBrush *bp = qjsvalue_cast<QBrush*>(v);
QVERIFY(bp == 0);
- QJSValue v2 = eng.newVariant(qVariantFromValue(cp));
+ QJSValue v2 = eng.toScriptValue(qVariantFromValue(cp));
QCOMPARE(qjsvalue_cast<QColor*>(v2), cp);
}
}