diff options
author | Jake Petroules <jake.petroules@qt.io> | 2017-08-31 20:28:59 -0700 |
---|---|---|
committer | Jake Petroules <jake.petroules@qt.io> | 2017-10-17 15:45:28 +0000 |
commit | 9f6ee4c33ac1474c89d4cddf702e10ae1e21b555 (patch) | |
tree | 494b048ac68cff092622467bb182e40d2c51ff13 | |
parent | 081363049baadfaff4c683fa9ab002d5f872a7d5 (diff) |
Allow the qbs.Xml extension to work in JavaScript files
We must return a valid object. Also, make the constructors of
XmlDomDocument and XmlDomNode members of the returned object instead of
polluting the global scope.
[ChangeLog] XmlDomDocument and XmlDomElement are deprecated and will be
removed in the 1.12 release. Use the names Xml.DomDocument and
Xml.DomElement instead, which are also now available in JavaScript files
as well as in a QML context.
Change-Id: I82e3e33c52ac7c8fdf9ba9c27491088d643b07f7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | doc/reference/items/language/scanner.qdoc | 2 | ||||
-rw-r--r-- | src/lib/corelib/jsextensions/domxml.cpp | 18 | ||||
-rw-r--r-- | src/lib/qtprofilesetup/templates/core.qbs | 2 | ||||
-rw-r--r-- | tests/auto/api/testdata/transformers/transformers.qbs | 2 |
4 files changed, 17 insertions, 7 deletions
diff --git a/doc/reference/items/language/scanner.qdoc b/doc/reference/items/language/scanner.qdoc index 736f26aa0..607af3965 100644 --- a/doc/reference/items/language/scanner.qdoc +++ b/doc/reference/items/language/scanner.qdoc @@ -46,7 +46,7 @@ Scanner { inputs: 'qrc' scan: { - var xml = new XmlDomDocument(input.filePath); + var xml = new Xml.DomDocument(input.filePath); dependencies = []; // retrieve <file> entries from the XML document return dependencies; diff --git a/src/lib/corelib/jsextensions/domxml.cpp b/src/lib/corelib/jsextensions/domxml.cpp index 156942c5d..6b2cf6bed 100644 --- a/src/lib/corelib/jsextensions/domxml.cpp +++ b/src/lib/corelib/jsextensions/domxml.cpp @@ -123,10 +123,20 @@ private: static void initializeJsExtensionXml(QScriptValue extensionObject) { QScriptEngine *engine = extensionObject.engine(); - QScriptValue obj = engine->newQMetaObject(&XmlDomDocument::staticMetaObject, engine->newFunction(&XmlDomDocument::ctor)); - extensionObject.setProperty(QLatin1String("XmlDomDocument"), obj); - obj = engine->newQMetaObject(&XmlDomNode::staticMetaObject, engine->newFunction(&XmlDomNode::ctor)); - extensionObject.setProperty(QLatin1String("XmlDomElement"), obj); + QScriptValue docObj = engine->newQMetaObject(&XmlDomDocument::staticMetaObject, + engine->newFunction(&XmlDomDocument::ctor)); + QScriptValue nodeObj = engine->newQMetaObject(&XmlDomNode::staticMetaObject, + engine->newFunction(&XmlDomNode::ctor)); + QScriptValue contextObject = engine->newObject(); + + // TODO: Deprecated, remove in Qbs 1.12 + extensionObject.setProperty(QLatin1String("XmlDomDocument"), docObj); + extensionObject.setProperty(QLatin1String("XmlDomElement"), nodeObj); + + contextObject.setProperty(QLatin1String("DomDocument"), docObj); + contextObject.setProperty(QLatin1String("DomElement"), nodeObj); + + extensionObject.setProperty(QLatin1String("Xml"), contextObject); } QBS_JSEXTENSION_REGISTER(Xml, &initializeJsExtensionXml) diff --git a/src/lib/qtprofilesetup/templates/core.qbs b/src/lib/qtprofilesetup/templates/core.qbs index 399c6edd9..201acd93f 100644 --- a/src/lib/qtprofilesetup/templates/core.qbs +++ b/src/lib/qtprofilesetup/templates/core.qbs @@ -338,7 +338,7 @@ Module { var cmd = new JavaScriptCommand(); cmd.description = "generating " + output.fileName; cmd.sourceCode = function() { - var doc = new XmlDomDocument("RCC"); + var doc = new Xml.DomDocument("RCC"); var rccNode = doc.createElement("RCC"); rccNode.setAttribute("version", "1.0"); diff --git a/tests/auto/api/testdata/transformers/transformers.qbs b/tests/auto/api/testdata/transformers/transformers.qbs index 1e5a0ec4a..999395445 100644 --- a/tests/auto/api/testdata/transformers/transformers.qbs +++ b/tests/auto/api/testdata/transformers/transformers.qbs @@ -53,7 +53,7 @@ Project { cmd.highlight = "linker"; cmd.sourceCode = function () { File.remove(output.filePath); - var doc = new XmlDomDocument(); + var doc = new Xml.DomDocument(); var root = doc.createElement("root"); doc.appendChild(root); |