aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@qt.io>2017-08-31 20:28:59 -0700
committerJake Petroules <jake.petroules@qt.io>2017-10-17 15:45:28 +0000
commit9f6ee4c33ac1474c89d4cddf702e10ae1e21b555 (patch)
tree494b048ac68cff092622467bb182e40d2c51ff13
parent081363049baadfaff4c683fa9ab002d5f872a7d5 (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.qdoc2
-rw-r--r--src/lib/corelib/jsextensions/domxml.cpp18
-rw-r--r--src/lib/qtprofilesetup/templates/core.qbs2
-rw-r--r--tests/auto/api/testdata/transformers/transformers.qbs2
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);