+Chris, so to give more help, the workaround: 1) create a new class which derives from the one you want to expose the revisioned API 2) move all your revisioned API into this one 3) register the new class to the version you need with the same name as in the previous version
>From the upstream bug it looks like everything registered with qmlRegisterUncreatableType<type_name, revision>() breaks the versioning. We need to keep this workaround till the bug is fixed. -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to qtdeclarative-opensource- src in Ubuntu. https://bugs.launchpad.net/bugs/1389721 Title: API versioning broken in some cases Status in qtdeclarative-opensource-src package in Ubuntu: New Bug description: With Oxide 1.2 being the version that's shipping in the RTM image, I want to start correctly versioning new API's so that we can upgrade Oxide OTA safely without breaking existing applications. I'm testing the attached patch for Oxide to add a revision to API's that were added in 1.3, but running the test suite results in the following failure: Output: ---------------------------------------------------------- file:///home/chr1s/src/oxide/oxide/qt/tests/qmltests/core/tst_CustomURLSchemes.qml:11:11: ".allowedExtraUrlSchemes" is not available due to component versioning. context.allowedExtraUrlSchemes: [ "test", "bar" ] ^ ********* Start testing of qml-core-test ********* Config: Using QtTest library 5.3.0, Qt 5.3.0 QWARN : qml-core-test::tst_CustomURLSchemes::compile() /home/chr1s/src/oxide/oxide/qt/tests/qmltests/core/tst_CustomURLSchemes.qml produced 1 error(s): /home/chr1s/src/oxide/oxide/qt/tests/qmltests/core/tst_CustomURLSchemes.qml:11,11: ".allowedExtraUrlSchemes" is not available due to component versioning. Working directory: /home/chr1s/src/oxide/oxide/objdir/qt/tests/qmltests View: QQuickView, import paths: '/home/chr1s/src/oxide/oxide/objdir/out/bin' '/home/chr1s/src/oxide/oxide/objdir/out/imports' '/usr/lib/x86_64-linux-gnu/qt5/qml' Plugin paths: '.' FAIL! : qml-core-test::tst_CustomURLSchemes::compile() ".allowedExtraUrlSchemes" is not available due to component versioning. Loc: [/home/chr1s/src/oxide/oxide/qt/tests/qmltests/core/tst_CustomURLSchemes.qml(11)] After scratching my head for a while, I can't see what I'm doing wrong here. If I run the following simple QML app, I can access the property correctly: - test.qml: import QtQuick 2.0 import com.canonical.Oxide 1.3 WebView { focus: true width: 960 height: 540 url: "https://www.google.com" context: WebContext { allowedExtraUrlSchemes: [] } } However, if I run this simple app instead, then it fails with the same message I see in the unit tests: - test.qml: import QtQuick 2.0 import com.canonical.Oxide 1.3 TestWebView { focus: true width: 960 height: 540 url: "https://www.google.com" context.allowedExtraUrlSchemes: [] } - TestWebView.qml import QtQuick 2.0 import com.canonical.Oxide 1.3 WebView { context: WebContext {} } This last example works fine without a revision number on this API. I consider this to be a blocker for being able to update Oxide OTA, as we're not able to version new API's with this bug To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/qtdeclarative-opensource-src/+bug/1389721/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp