Return a string from resolvedUrl() to match 4.x behavior
authorAaron Kennedy <aaron.kennedy@nokia.com>
Tue, 8 Nov 2011 12:19:47 +0000 (12:19 +0000)
committerQt by Nokia <qt-info@nokia.com>
Wed, 9 Nov 2011 10:31:10 +0000 (11:31 +0100)
Task-number: QTBUG-20960
Change-Id: I9ae99ada5c9bbe7498df24908c6acd202ca73a15
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>

src/declarative/qml/v8/qdeclarativebuiltinfunctions.cpp
tests/auto/declarative/qdeclarativeqt/data/resolvedUrl.qml [new file with mode: 0644]
tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp

index 1ced868..918fd52 100644 (file)
@@ -676,12 +676,12 @@ v8::Handle<v8::Value> 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 (file)
index 0000000..06ef48b
--- /dev/null
@@ -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"
+    }
+}
+
index b4ac2df..b6cebf4 100644 (file)
@@ -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"