aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml
Commit message (Collapse)AuthorAgeFilesLines
* Qml: Don't crash on bad grouped propertiesUlf Hermann2022-09-132-0/+22
| | | | | | | | Fixes: QTBUG-106457 Change-Id: Id36b54fd3ed413c0ac49e33e5ea87984d5220aef Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit e061c934d5a6d93493ba2be7b61efdd055d1e164) Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* UrlObject: Add colon after schemeLeticia Valladares2022-09-132-5/+57
| | | | | | | | | | | | | | | This change adds a colon after scheme in methods 'setProtocol' and 'setUrl' on its protocol line. Likewise, this includes a test called 'colonAfterProtocol' to check if colons were correctly added by using different schemes: ftp, http and https, or if colons were removed when setting the scheme (i.e. from protocol 'ftp:', 'ftp:http:' or 'ftp:::' to 'ftp'). Fixes: QTBUG-103746 Change-Id: I8f847bedd23e476e0ae7901a2f3f3963da3ca04d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit c61075d2e0049b3c92556c7221e38ef1122118b6) Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Android: Fix for URLs with local authoritiesBartlomiej Moskal2022-09-091-0/+21
| | | | | | | | | | | | | | | | | | The file URLs provided by the native Android can use the "content://" or "assetes://" scheme. That was already handled by urlToLocalFileOrQrc(), but we cannot assume that authority is empty. Some authorities still point to local host, like: - com.android.externalstorage.documents; - com.android.providers.downloads.documents; - com.android.providers.media.documents; This commit treats URLs with the above mentioned authorities as local. Fixes: QTBUG-105110 Change-Id: I9c080305547e5cd2c2d1be489f59d185a5d49658 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit b65a5a9d06307eb6ad19abe9585c3b20a3db583f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix alias to inline component typeFabian Kosmale2022-09-082-0/+30
| | | | | | | | | | | | | | | | | | | When we create an alias property, we resolve its targets metatype. In the case of inline components of the same file, that's however not possible via QQmlType, as the type will only be available once the outer type has been fully set up. Fix this by looking up the type in the ExecutableCompilationUnit, where the information is available while the type registraiton process is still ongoing. As a drive-by, also set the alias flag correctly when constructing the QMetaObject of a QML element. Fixes: QTBUG-106392 Change-Id: Ie8f55dd0894cc5c8d683dd3c685980878956d3ca Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 2a37ff2f49140272d0122ccc097cc14c2fa4133e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* V4: Account for the guard pages when allocating stack spaceUlf Hermann2022-09-071-2/+0
| | | | | | | | | | | | | | | | Previously we've assumed the whole allocation can be used, even though the first and the last page are actually not usable. This makes a difference when the size of the guard pages grows, such as on macOS, which these days has 16k pages. Add the extra guard page size to the amount of memory to be allocated in order to fix the calculation. Fixes: QTBUG-93188 Change-Id: I0ebece94449da3127e9a78a19d8a22722ad8d698 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 826b77c8cf0ffbef4f95e7b9e72eb9dc25936657) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Engine: Fix handling of attached objects in function callsFabian Kosmale2022-09-023-0/+37
| | | | | | | | | | | | | | | | | When we use an attached object as an argument to a function call, we need to properly extract it from the QmlTypeWrapper. Before this change, we simpley left the argument pointer as null, which lead to subsequent crashes when it got dereferenced. Moreover, treat passing namespaces to functions expecting a QObject as a TypeError, by returning false from CallArgument::fromValue (used to crash for the same reason as with the attached object case). Fixes: QTBUG-106119 Change-Id: Ifa6a32e20a29935aff1f265eb0edd3e35ea1c11b Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 84483bff4f4d49e5f87abf564021647f2fb2a8d0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Integrate property binding evaluation fix from qtbaseFabian Kosmale2022-09-022-0/+42
| | | | | | | | | | | | This is basically the same as QTBUG-105204, only with the QML engine being involved. Fixes: QTBUG-104982 Change-Id: I5afaadedcd7af41198702a8f2331703b4f6ef2e7 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 2879c7c3411955b1d4f795436f803abd960c176d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QmlCompiler: Prevent lookup of value type where we need an object typeUlf Hermann2022-08-313-0/+28
| | | | | | | | | | | | | | | | | With a particular nefarious combination of Q_GADGET and inheritance from QObject you can make QmlCompiler believe a type is a value type even though it is actually an object type. We never want to touch such a thing. There was a safe guard against this when looking up the type from the scope, but by putting it in a type namespace you could circumvent it. Refactor the code to apply to both cases the same way. Fixes: QTBUG-104556 Fixes: QTBUG-105608 Change-Id: I8a690e2b6f78fcaba0911a93504cde0d2c7dde0d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 0a8fe228f6bb65afe08f1bc203653266fa204ba5)
* qmlformat: Preserve variable declaration scope typeFabian Kosmale2022-08-113-0/+19
| | | | | | | | | | | If the user used for(let x;...) we need to preserve the let and must not change it to var. Fixes: QTBUG-105361 Change-Id: I49fc3797505b569cc9b8a9138dd57ec7e70d3eb9 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 84dd339e2eb3385eb143f9d5ab282a135635052d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* JSON: Properly handle bad objects in JSON.stringify()Ulf Hermann2022-08-071-0/+40
| | | | | | | | | | | | | | | | | | | For objects with circular structures we generate a proper error message and fail earlier. For objects with excessive recursion we throw a range error rather than crashing. This behavior is modeled after node's behavior in such circumstances. We use the existing stack overflow detection to determine when to throw the range error. Testing shows that on windows the limit was insufficient. Lower it. Fixes: QTBUG-92192 Change-Id: I25dd302f65f359111e42492df3c71549c4ed7157 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit af1ef35fa00a466d3af04c17b59fcb4ea38f396a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Qml: Don't crash on nested group properties with aliasesUlf Hermann2022-08-042-0/+28
| | | | | | | | | | | | This fixes an oversight where in case of half-resolved grouped properties we would forget to add the bindings to the "pending" list. In addition we would fail to resolve their property caches later on. Fixes: QTBUG-94983 Change-Id: I88bd0ce56464438d2a105e5ed426e002495cc016 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit fed5b07980d9ae5a392a00563f70ee34fc261dbc)
* V4: Mark InternalClass parents when running GCUlf Hermann2022-08-034-13/+129
| | | | | | | | | | | | | | | | | We need to preserve them as they notify us about protoId related changes. In order to avoid wasting heap space in case many properties are added and removed from the same object, we put a mechanism in place to rebuild the InternalClass hierarchy if many redundant transitions are detected. Amends commit 69d76d59cec0dcff4c52eef24e779fbef14beeca. Fixes: QTBUG-91687 Task-number: QTBUG-58559 Change-Id: I3238931b5919ed2b98059e0b7f928334284ce7bf Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 0b9fa18dfefc06f542bd0c98b7e41fa14aa0c2cf) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* V4: Allow conversion from string to QByteArray when setting bindablesUlf Hermann2022-07-282-0/+37
| | | | | | | | | We allow it everywhere else, too. Fixes: QTBUG-105044 Change-Id: I714e5d501a780310791523c5f35a87681c69b1fb Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 00e95e35061c169237402af4b017e70175a881db)
* QQmlListAccessor: Accept QQmlListPropertyUlf Hermann2022-07-273-0/+29
| | | | | | | | | | | | So far we have only accepted QQmlListReference. However, we can also pass a QQmlListProperty around as value. Fixes: QTBUG-105137 Change-Id: I7d4cd3048b62594298f91013c4cda5ec864a28df Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> (cherry picked from commit 6ea2a1cdb728635f9bd3cf239f751d4e88610881) Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Add 'override' keyword to fix build warningsJiDe Zhang2022-07-261-1/+1
| | | | | | Change-Id: I8bd51da4ad27c97be78c708af33d6b1e4c1ca957 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 90773dfbf1371a61a0ef142ef3199a858ff736b0)
* Fix extension lookup in QQmlJSScopeAndrei Golubev2022-07-255-10/+192
| | | | | | | | | | | | | | Do not go over extension's base types since this is not how the engine logic work. Instead, only assess the direct extension type when traversing the base type hierarchy. The special cases are value types which still need base type extension traversal (e.g. due to Number and NumberPrototype extensions on primitives) and QObject type itself (we expect to see ObjectPrototype properties / methods of it) Change-Id: I92ba979202b33f16e1a7b948d4f1e79df37f2669 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit a287e862d467b21a8007698f8390088bdf887b44) Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Add convenience API for making QQmlDataTest-based tests fail on warningsMitch Curtis2022-07-216-7/+13
| | | | | | | | | | | | | | | | | | | | | After this patch, if a QQmlDataTest-derived class passes FailOnWarningsPolicy::FailOnWarnings to the base constructor, any non-empty warning encountered by that test will result in a test failure. This avoids the need to duplicate the catch-all regex in tests that want to fail on warnings. The goal is to gradually enable failure-on-warnings over time. Leave comments and explicitly pass DoNotFailOnWarnings for tests that should never fail on warnings. Task-number: QTBUG-98718 Change-Id: I4b647d93a0f28ac891c4bdb19ef74569f2918e8f Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 234afb5502ab20b4f58ddd9b01a4245330a7e5a4) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* tst_qqmlfileselector::applicationEngineTest: do not use deprecated APIIvan Solovev2022-07-191-10/+4
| | | | | | | | | | | | | ... use QQmlApplicationEngine::setExtraFileSelectors() instead. We also need to rework the rest of the test, so that engine is actually initialized and the new selector is applied. Task-number: QTBUG-104950 Change-Id: I994ca01c3fe1acef63da01f6d7d4e443d1f28f91 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit b335d8311f7c0be9261305d5b41bbcbf94cd3d27) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QQmlProxyMetaObject: Ignore properties/methods of non-creatable proxiesAndrei Golubev2022-07-182-0/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | Qt/QML allows marking a type with QML_EXTENDED_NAMESPACE(Type) where Type is a Q_OBJECT. In this case, we have a Type-specific meta object but do not have an extension function to create the object of that Type with, causing us a subtle runtime crash. The crash in fact happens when we attempt to access a shadowed property through the extension object (which surely fails since there's no extension object) Fix this by excluding properties and methods when cloning the metaobject for the proxy if we know that the proxy cannot be created. This somewhat matches what the documentation says about QML_EXTENDED_NAMESPACE: When we have a Q_OBJECT/Q_GADGET, methods and properties of that are not exposed As a drive by, add the same check to the QQmlMetaType::proxyData(). While untested, this seems logical since the proxy data assumes valid creation function in this case as well Fixes: QTBUG-103081 Fixes: QTBUG-104700 Change-Id: I63c6e535d4df5169e0279eb2f588593f43a70640 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 218eb5f5712dd920459cb0108fcd305d653352bc) Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Disable debugger tests on macOS/x86_64Ulf Hermann2022-07-121-2/+2
| | | | | | | | | | | | They run into a hard to reproduce deadlock in the CI. In turn re-enable tst_qqmljdebugjs for macOS/arm as there it doesn't happen. Task-number: QTBUG-102984 Task-number: QTBUG-101678 Change-Id: I17d483b7c44b36d17cfc2f0f31fcccd30cd4548a Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 873bdb3146067a6c497b4e081e4f447140853b3c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QQmlValueTypeWrapper: readReferenceValue in virtualGetOwnPropertyUlf Hermann2022-07-071-0/+30
| | | | | | | | | | Otherwise we may end up with a nullptr gadget. Fixes: QTBUG-104803 Change-Id: Ia0c3741fdf0214f0c3d4b352006442747f635f5c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 0e48d9d9387aeb39c8289f61f75d9c6fcd6c753f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QmlCompiler: Don't StoreNameSloppy undefined into incompatible typesUlf Hermann2022-07-073-1/+12
| | | | | | | | | | This would call the property's reset method, but we cannot do this, yet. Task-number: QTBUG-104508 Change-Id: I5d3f8ae25bad637935e7e4835bcac1120ffead7b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 7c69258cdbf8f2dbf422ca274fa621a9b9879e3a) Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
* Add test for conversion/decrementUlf Hermann2022-07-063-0/+40
| | | | | | | | This proves that we don't have this problem in 6.3. Task-number: QTBUG-104512 Change-Id: I1fca1973f3aa0bc0e63d45fe60c024837a128709 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Fix debugger crash on attachSami Shalayel2022-07-012-2/+53
| | | | | | | | | | | | | | | | | | | The debugger treated QQmlGadgetPtrWrapper like normal QObjects, which means that their metacalls where done incorrectly. The meta system saw the QQmlGadgetPtrWrapper's metaobject, which is actually the wrapped type, and produced a garbage QObject* by reinterpret_casting the wrapper as the wrapped type. The debugger was changed to recognize gadgets and to call the read/write/resetOnGadget() methods instead of calling QMetaProperty.read/write/reset(). Added a test with the qml example that was making the application crash when a qml debugger was attached to it. Fixes: QTBUG-104379 Change-Id: I7c1138fc44ee78137386dcd7da145bbaab574afc Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 33aa69529ca845e102ee9155ae90b29a6640afef) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QmlCompiler: Properly annotate ThrowException instructionUlf Hermann2022-06-283-0/+20
| | | | | | | | | | | | It doesn't write the accumulator, but it does read it. Generating code for throwing exceptions reveals that we have to default-construct the return type rather than converting from undefined/void when throwing an exception. Fixes: QTBUG-104447 Change-Id: I0a725679d8ecb7e87bb20528033097bc0c3c7bb6 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 87f984714408bb5112fb38a66f0280b722ac9491)
* tst_QQmlPropertyCache: work around name chance in moc-generated codeMarc Mutz2022-06-231-1/+19
| | | | | | | | | | | The offsetsAndSize member was renamed to offsetsAndSize_s_ recently. Detect the name change and use one or the other instead of failing. Fixes: QTBUG-104523 Change-Id: Ica16a91577fd1d20352e2c8136453432acbbc8b0 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 5ba6e177904d5ea5f1e44bcc1b1c3ab75d63a065) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QmlCompiler: Disable writing into function argumentsUlf Hermann2022-06-223-0/+50
| | | | | | | | | We cannot do this in a safe way in 6.3. Fixes: QTBUG-104462 Change-Id: I2c2cc0f526d68c6d9be151f5bc9f21b4a3ae24fe Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Add autogen tools dependency to the ↵Alexey Edelev2022-06-211-1/+1
| | | | | | | | | | | | tst_qmltyperegistrar_major_version_zeroplugin target Amends: 9225723a317b8c7e805416592b78aca0ed320049 Task-number: QTBUG-104373 Change-Id: Ic6989db9c9339774e856ec8078c91a76667b992a Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit bfc9e70632048791f86b44b85df92ee05c937c90) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Qml: Allow major version of module to be zeroAlexandru Croitor2022-06-205-0/+50
| | | | | | | | | | | | | | If there is no QML.AddedInVersion then the component should be available from version X.0, with X being the current version of the module. Amends 464abaec05e0aa0ab699243412c50a5d5ac30742 Fixes: QTBUG-104373 Change-Id: If30b66df384fe815c41d2a0b5ca7b034b9955956 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit 9225723a317b8c7e805416592b78aca0ed320049) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QML: Take care of QVariant when converting function argumentsUlf Hermann2022-06-163-0/+33
| | | | | | | | | | | | | | | | We cannot convert to QVariant using QMetaType::convert(). But we can just construct a QVariant with the desired type and data. This will become an issue once we automatically convert argument types to match the desired type inside the function. As a side effect, also allow declaring "var" arguments to functions. Fixes: QTBUG-104361 Change-Id: Idc14021d8d85d3d09ee7b7f286de91b56ea02bfd Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit c8e756e560ce3f0d369df65986e5578e0e963c66) Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
* tst_qqmlnotifier: Do not assume qfatal crashes the processFabian Kosmale2022-06-081-1/+2
| | | | | | | | | | | | | | | | Because we run a test, we might have a handler for SIGABRT installed. If qfatal uses SIGABRT to terminate the process, we will thus actually handle it gracefully. Instead, simply check that the process has terminated, and rely on the output being available. As we check for "FATAL" in the output, the exit status check was anyway redundant before. Fixes: QTBUG-104051 Change-Id: I062a592e97e717cd1a0d93f7913b492aa322296a Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 27cc99809d532e422c0be8c3238e0fde1d6964a8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Immediately complete component upon creation failureFabian Kosmale2022-06-081-3/+0
| | | | | | | | | | | We do not want to wait until reaching the Component destructor (at which point e.g. the engine might be gone). Change-Id: Ic0e4383ec4e3759d9f02847413a25191a01286cb Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 759090f59140d0b38c7bd57480ea6cd93d4cf0d3)
* QtQml: Fix and test edge cases of QQmlFile's local file detectionUlf Hermann2022-06-016-3/+254
| | | | | | | | | | | | | | | | URLs with two slashes after the colon are generally _not_ local as they contain an authority. However, file URLs with two slashes are interpreted as "special" paths by QUrl::toLocalFile(). Therefore, we accept them. URLs without slashes after the colon can be local files. They denote relative paths or special android resources then. Fixes: QTBUG-102944 Change-Id: Iaab3d7501b631e88ee8c1d93f1de8149ba60a5c4 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit f5514e682b2c97d3dea0369ff7cb56e3376b3cde) Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Detect non-integral values when accessing QQmlListPropertyUlf Hermann2022-06-012-0/+12
| | | | | | | | Fixes: QTBUG-103560 Change-Id: Ifcc73baf7f79e30f6e83ff3e500dd39f95790bfe Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> (cherry picked from commit 4a10e1d84ac948fb9a50cd2e44fcbeaef972e5ea)
* Skip tst_v4misc::nestingDepth because it crashes on AndroidAndreas Buhr2022-05-231-0/+4
| | | | | | | Task-number: QTBUG-103743 Change-Id: I5e3c400f911dce6e92a59d6f6c12c394a83fb51d Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Skip crashing test in tst_qmlcppcodegen on AndroidAndreas Buhr2022-05-201-0/+4
| | | | | | | | | | | | tst_QmlCppCodegen::scopeObjectDestruction() crashes on Android. Skip this test for now. Task-number: QTBUG-103044 Task-number: QTBUG-101865 Change-Id: I1d6291decf946b954bffc2378255c209126106fd Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit bdbab58de7f905a3858811905f4ac94595ddbdeb) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* tst_qqmlqt: fix TimeZoneSwitch logicIvan Solovev2022-05-172-8/+5
| | | | | | | | | | | | | | | | | The TimeZoneSwitch class was setting the doChangeZone flag incorrectly, so it was actually trying to change the zone only for "localtime". This patch fixes the issue. With this fix applied, the test started failing on some OS that fail to change local timezone, so skip such input data for these configurations. Fixes: QTBUG-100014 Change-Id: If39a15fe1008211a940174fdc3aa5209df34c115 Reviewed-by: Andreas Buhr <andreas.buhr@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit c9013be2d9dcfe710932ec2f2c0e765a893e68f0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QML: Port QV4::CompiledData::Binding to new special integer bitfieldUlf Hermann2022-05-173-11/+11
| | | | | | | Task-number: QTBUG-99545 Change-Id: I9f8bc5fa45c61f77ee95b055a3d8de001da8f8c5 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 36ebee4e69182f0e44d87691d4740b271e1dcf38)
* Generalize role selection mechanism from QQuickComboBoxUlf Hermann2022-05-121-4/+3
| | | | | | | | | | | | | | | | | | | | | We can have QQmlDelegateModel pick specific roles from model items. That can easily be done for variant maps, variant hashes, objects and gadgets. We would like to do it for anything that has a QMetaAssociation, but as we cannot get to the original type at that place, it's currently not possible. The special case about variant maps with exactly one item in variant lists is clearly insane and therefore not included in the generalization. This requires some cleanup in the QQmlGadgetPointerWrapper. Passing the wrapper itself to QMetaProperty::read() has always been a rather obscure way of reading from the gadget. Fixes: QTBUG-102983 Change-Id: I84ecef980783e7137aa4d77070ddce47b6ead260 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit d0c7c7234cb7629fbe7a04944cb5191414cc72b9)
* Avoid memory leaks in QQuickListView and tst_qqmlinstantiatorUlf Hermann2022-05-111-9/+15
| | | | | | | Change-Id: Ieceffedb082e893b54bcda99076df3ccdeff6010 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit cf9c0f0180b65f0f2ad2cf20a35a3d11a7430927) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* V4 Engine: Don't try to convert JS functions to other typesUlf Hermann2022-05-091-0/+4
| | | | | | | | | | | | When converting a JS value to a variant, if we notice that we get a QJSValue again, there is no point in trying to convert it further. We'll just run into infinite recursion. Fixes: QTBUG-102545 Change-Id: I0a40e21287e5460e5e214101aabe8d2b4bf0afad Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 2bed3d5f0ff7de2774e8e4a1ea164063e8d5aa0c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qmltc: Support setting Gradient property of RectangleAndrei Golubev2022-05-097-0/+80
| | | | | | | | Fixes: QTBUG-102560 Change-Id: I7c339d2807a723f38e18e06b944362449d89ad7a Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit e98faf1df401268dc6966b39963547a4de6f9171) Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Android: enable tst_qqmlenginedebugserviceIvan Solovev2022-05-098-85/+268
| | | | | | | | | | | | | | | The test was failing because it was using QML code that was embedded directly in the test, so the dependencies were not detected and deployed. This patch moves QML code into separate files, so that qmlimportscanner could provide all the necessary dependencies. Fixes: QTBUG-100166 Change-Id: I5581de9a4573204722ad60eaceae8d05a491eb13 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit ecc87ea07723998dcfa947353e4259ec8d057035) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Android: enable tst_qquickfolderlistmodel::basicProperties()Ivan Solovev2022-05-091-10/+9
| | | | | | | | | | | | | | | | | | | | | | | | | The test was skipped on Android because it was trying to read the contents of default directory for FolderListModel, which requires special access rights on Android. The test passed when started via androidtestrunner, but failed when launching the APK directly. Generally this test does not need to get the number of files in the default directory. It just needs to know that its processing is finished, so that we can switch to other directory, and do all the checks there. So this patch waits for folderChanged() signal instead of verifying that the number of elements in default directory is > 0. Also skip the parentFolder property check on Android, because the qrc path is not resolved to be a local directory, to parentFolder always returns a default-constructed QUrl. Fixes: QTBUG-77335 Change-Id: I95510ebad724db42890414b810b2350be0d8dcac Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit 0eb538b9b97d9f29eb21c004a4121b85bef588c8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix tst_QQmlXmlListModel::source() on AndroidAndreas Buhr2022-05-081-1/+2
| | | | | | | | | | | | | | | | | tst_QQmlXmlListModel::source() assumed that local files are loaded immediately and others later. This is not true for files in the qrc: system. They are not local files. But still, they are loaded immediately. This patch fixes the test. Manual conflict resolutions: - ported sway from Qt::StringLiterals::_L1, which only exists in 6.4+ Task-number: QTBUG-101865 Change-Id: I13a449cefe12135d4c6cd7687c80f41b7333349e Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> (cherry picked from commit 9bbc43fbd1214e3c8f50644e28139a9dcfb97a9e) Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Fix crash in QQmlObjectCreator::populateInstanceUlf Hermann2022-05-073-0/+58
| | | | | | | | | | | | If we cannot create the attached properties object, we need to generate an error and return early. The attached properties are unavailable then. Fixes: QTBUG-101401 Change-Id: I92539ba577b435675f812c4a2bdbbbfd1de65ecf Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 25eca6b7cfe2ef6e30a5e78373055e3b56927c0a) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Skip crashing tst_qqmlbinding::delayed() on AndroidAndreas Buhr2022-05-071-0/+4
| | | | | | | | | | Task-number: QTBUG-103310 Task-number: QTBUG-101865 Change-Id: I22454487f0bbb7e124a1e870ff936e7513748af9 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit 5049dcb2683fb6037708a3f5df9fb97b83e12e49) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix tst_qqmlimport on AndroidAndreas Buhr2022-05-072-3/+6
| | | | | | | | | | | | | This patch moves a code snippet from a string into its own file, so qmlimportscanner can see it and pull its dependencies. Second, this patch enables removal of '\r' in an expected log message, as this seems required now. Task-number: QTBUG-101865 Change-Id: I25b35e166a7edb6f3aaaa92a3134347804d1c6c1 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> (cherry picked from commit 9eb8f202b6cb53e39ec38b14c5e5b4540139eda6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix tst_qqmltranslation on AndroidAndreas Buhr2022-05-071-0/+7
| | | | | | | | | | | | | | | | | | | tst_qqmltranslation::translation(qrc) had a problem with incorrectly generated qrc file. This test has two qrc files - one for all test data, as it's usually done for Android, and another one - to test that custom prefixes work properly. The latter resource file had an invalid alias (which included the "data" dir). The reason for the error was that the same data file was already process when the global resources qrc file was generated. At that time the alias prefix was set, and then reused. To fix it we need to explicitly reset the QT_RESOURCE_ALIAS property before generating the second qrc file. Task-number: QTBUG-101865 Change-Id: Ibd7e2a41ffffc3601db9722d155932a3cc9a9b54 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> (cherry picked from commit 8976a55dac7436dc2533714319a4c4e4e7f674de) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix tst_QQmlXmlListModel::threading() on AndroidAndreas Buhr2022-05-071-10/+12
| | | | | | | | | | | | | tst_QQmlXmlListModel::threading() tried to create some temporary files in a qrc: path on Android. This patch changes it to use a QTemporaryDirectory for it. Task-number: QTBUG-101865 Change-Id: I66b44344af822edfe86b0007ae56a65d5da46365 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> (cherry picked from commit 44e83fc2381f42b97054c11a358e621862319bc4) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>