From 0c5f9185502f3f81265a044955bd13040c2446db Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Tue, 8 Nov 2011 12:19:47 +0000 Subject: Return a string from resolvedUrl() to match 4.x behavior Task-number: QTBUG-20960 Change-Id: I9ae99ada5c9bbe7498df24908c6acd202ca73a15 Reviewed-by: Kent Hansen --- src/declarative/qml/v8/qdeclarativebuiltinfunctions.cpp | 6 +++--- tests/auto/declarative/qdeclarativeqt/data/resolvedUrl.qml | 13 +++++++++++++ .../auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp | 14 ++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativeqt/data/resolvedUrl.qml diff --git a/src/declarative/qml/v8/qdeclarativebuiltinfunctions.cpp b/src/declarative/qml/v8/qdeclarativebuiltinfunctions.cpp index 1ced8687ff..918fd527b0 100644 --- a/src/declarative/qml/v8/qdeclarativebuiltinfunctions.cpp +++ b/src/declarative/qml/v8/qdeclarativebuiltinfunctions.cpp @@ -676,12 +676,12 @@ v8::Handle resolvedUrl(const v8::Arguments &args) if (p) { QDeclarativeContextData *ctxt = V8ENGINE()->callingContext(); if (ctxt) - return V8ENGINE()->fromVariant(ctxt->resolvedUrl(url)); + return V8ENGINE()->toString(ctxt->resolvedUrl(url).toString()); else - return V8ENGINE()->fromVariant(url); + return V8ENGINE()->toString(url.toString()); } - return V8ENGINE()->fromVariant(e->baseUrl().resolved(url)); + return V8ENGINE()->toString(e->baseUrl().resolved(url).toString()); } /*! diff --git a/tests/auto/declarative/qdeclarativeqt/data/resolvedUrl.qml b/tests/auto/declarative/qdeclarativeqt/data/resolvedUrl.qml new file mode 100644 index 0000000000..06ef48b82b --- /dev/null +++ b/tests/auto/declarative/qdeclarativeqt/data/resolvedUrl.qml @@ -0,0 +1,13 @@ +import QtQuick 2.0 + +QtObject { + property string result + property bool isString: false + + Component.onCompleted: { + var a = Qt.resolvedUrl("resolvedUrl.qml"); + result = a; + isString = (typeof a) == "string" + } +} + diff --git a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp index b4ac2dfc66..b6cebf40ec 100644 --- a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp +++ b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp @@ -89,6 +89,7 @@ private slots: void atob(); void fontFamilies(); void quit(); + void resolvedUrl(); private: QDeclarativeEngine engine; @@ -727,6 +728,19 @@ void tst_qdeclarativeqt::quit() delete object; } +void tst_qdeclarativeqt::resolvedUrl() +{ + QDeclarativeComponent component(&engine, TEST_FILE("resolvedUrl.qml")); + + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("result").toString(), component.url().toString()); + QCOMPARE(object->property("isString").toBool(), true); + + delete object; +} + QTEST_MAIN(tst_qdeclarativeqt) #include "tst_qdeclarativeqt.moc" -- cgit v1.2.3