Commit Graph

64615 Commits (d2c29aee41d06d59024ef72eb50bb9f25909e922)

Author SHA1 Message Date
Alexandru Croitor d2c29aee41 CMake: Compute dynamic timeout for androidtestrunner
Pass a CMake test TIMEOUT argument to androidtestrunner, using
a value of 95% of that timeout to allow time for the test runner
to do any cleanup before being killed.

If no test argument is provided, use the value from CMake property
DART_TESTING_TIMEOUT or CTEST_TEST_TIMEOUT. If that's not provided
default to 25 minutes which is the default for DART_TESTING_TIMEOUT.

Along the way set the default androidtestrunner timeout to 10 minutes
and fix the wrong timeout in the help menu.

Fixes: QTBUG-106479
Pick-to: 6.6 6.5
Change-Id: I12cd531583dd94954caf8044c37c22382d53d43c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2023-11-30 17:26:26 +02:00
Assam Boudjelthia 0d5fe9c3d7 AndroidTestRunner: pass testlib env vars to the test app
Check if the common testlib environment variables are set on the
host and pass them to the test app. This include any env variable
starting with "QTEST_".

Fixes: QTBUG-106478
Task-number: QTBUG-106479
Pick-to: 6.6 6.5
Change-Id: I99e1b314b106cda20a66e3cac9a92b463b94f5c9
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2023-11-30 17:26:26 +02:00
Assam Boudjelthia 20643d17bf AndroidTestRunner: fix failure to acquire test runner semaphore
Currently, if the test runner is interrupted by SIGINT and SIGTERM,
the semaphore is never released and thus consecutive test runner
executions will wait forever. To fix that, a signal handler for the
former signals is added to release the QSystemSemaphore. Also,
remove RunnerLocker and simply use QSystemSemaphore directly,
and explicitly release the semaphore at the end of the test runner
execution.

Fixes: QTBUG-115298
Pick-to: 6.6 6.5
Change-Id: I4f6cc0e4d837460de9a66248e09d3cbaf24ce959
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Reviewed-by: Zoltan Gera <zoltan.gera@qt.io>
2023-11-30 17:26:26 +02:00
Jacek Poplawski 05e5d18393 Add VxWorks support in QEglFSDeviceIntegration
Fixes: QTBUG-115777
Change-Id: Ic2f860c259e42b3d4670fe85b3a069c84be5c1da
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io>
Reviewed-by: Jarno Lämsä <jarno.lamsa@qt.io>
Reviewed-by: Kimmo Ollila <kimmo.ollila@qt.io>
2023-11-30 16:26:26 +01:00
Luca Di Sera 60c2d72d96 Doc: Fix \fn template arguments for Qt Core
Upcoming changes to QDoc require accurate definition for
template arguments in \fn commands.

Task-number: QTBUG-118080
Change-Id: I64d50919bc6ffab61ef5ead553d1da99d63a9f21
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2023-11-30 11:26:20 +01:00
Rami Potinkara 7b84cd62b0 Android: bump Android target API level to 34
Bumped on network related .gradle files too.

Fixes: QTBUG-119145
Change-Id: I95f70e6cda1aad7a6bd7246c623eb6f143a829cb
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2023-11-30 08:57:55 +02:00
Kai Köhne 321718af88 Doc: Fix wrong markup in QStandardPaths::findExecutable
Pick-to: 6.6
Change-Id: Ia9b9752a7d73b8695f2be227d7fe78e6da927a2e
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2023-11-29 18:20:06 +01:00
Marcin Zdunek 8e97af265d Disable timezone which is not supported on Vxworks
Task-number: QTBUG-115777
Change-Id: I69bf26d2e752d76d06edf569766d4298fb4fd1a8
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-11-29 16:08:56 +00:00
Edward Welbourne 4366487e79 Change POSIX current time query to use clock_gettime()
As noted on its man-page, POSIX.1-2008 marks gettimeofday() as
obsolete, recommending the use of clock_gettime(2) instead. So do
that. Also check the return value - albeit all we can do on failure
(which should not happen) is assert.

Pick-to: 6.6 6.5
Change-Id: Id5d6922c974b87f09531d549d692b051c32388ee
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-11-29 16:24:05 +01:00
Alexandru Croitor 4cb9bbbf02 CMake: Remove noisy and non-informative message
Amends ac6af2f322

Change-Id: I85b87d3200e556853af6c1da2ae12961fb126614
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2023-11-29 16:00:57 +01:00
Alexandru Croitor a29bff3d80 CMake: Warn when configuring Qt with an unsupported Apple SDK or Xcode
The warnings are shown when configuring any Qt submodule or top-level.
The warnings are NOT shown when configuring a user project with CMake.

Opt out CMake cache variables can be set to silence any of the
warnings:
- QT_NO_APPLE_SDK_AND_XCODE_CHECK
- QT_NO_APPLE_SDK_MIN_VERSION_CHECK
- QT_NO_XCODE_MIN_VERSION_CHECK
- QT_NO_APPLE_SDK_MAX_VERSION_CHECK

The warnings can be upgraded into errors by configuring with
-DQT_FORCE_FATAL_APPLE_SDK_AND_XCODE_CHECK=ON

The platform version requirements that qtbase specifies in .cmake.conf
are saved in Qt6ConfigExtras.cmake so that they can be used when
configuring other non-qtbase submodules.

The code is added to the public CMake files, so that in the future we
don't need to move code around if we enable the checks for public
CMake projects as well.

The version extraction helpers were moved out of QtAutoDetectHelpers
into QtPublicAppleHelpers.

Task-number: QTBUG-119490
Change-Id: Ic840e1013aeb607bf23247a9cb43471dde802e9d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
2023-11-29 16:00:57 +01:00
Alexandru Croitor ba9d45088f CMake: Move QtAutoDetect.cmake functions into a separate Helpers file
And automatically include and install it in all qt builds.
We will use some of its functions for enforcing apple sdk
requirements when building Qt.

Change-Id: I46383bc857430d35314dfa2ebef9eb342fb63560
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
2023-11-29 16:00:57 +01:00
Alexandru Croitor 830c4041be CMake: Create wrapper scripts after global feature evaluation
Otherwise we don't have access to the 'debug' and 'debug_and_release'
features to decide whether the install script needs to strip binaries
or not.

Amends 09fdddeb32

Pick-to: 6.6
Fixes: QTBUG-118070
Change-Id: I4f1b8463fa369edd38c1110d1d69e7fa7a45de63
Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
2023-11-29 16:00:57 +01:00
Alexandru Croitor 832eda3beb CMake: Remove deprecated PUBLIC_LIBRARIES option in wasm tests
Tests should only use the LIBRARIES option.

Pick-to: 6.5 6.6
Change-Id: I3c1e4a563448e8f97219c10566cea921a2807abc
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2023-11-29 15:00:57 +00:00
Ievgenii Meshcheriakov 7169ea71bd QDBusAbstractAdaptor: Assert that the parent is not null
QDBusAbstractAdaptor is expected to be used with a parent.
Add an assertion that will fail if a user is using this
class incorrectly. That's easier to debug than a null
pointer dereference in QDBusAdaptorConnector::polish().

Fixes: QTBUG-18525
Change-Id: I1934475fe277e0cc08435d79f1d453d6576f0b1c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-11-29 15:53:13 +01:00
David Faure 5ef5f2f1b9 QCommonStyle: draw focus rect using qDrawPlainRect
A non-aliased drawRect(r.adjusted(0, 0, -1, -1)) no longer does the job
in Qt6: hi-dpi is now enabled automatically, which scales the painter
and leads to horrible (non symmetric) rendering.

I doubt any actual widget style calls into this code (which draws
a focus rect with a plain line) but it's still a useful example
and fallback when writing a widget style.

Pick-to: 6.6
Change-Id: Ib407a7355033258be568b4826fe01c110f02c018
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2023-11-29 08:58:46 +01:00
Ivan Solovev 7a3fed3f20 QTimeZone: use new comparison helper macros
The class had operator==() and operator!=() defined as public member
functions, so use QT_CORE_REMOVED_SINCE and removed_api.cpp to get
rid of these methods and replace them with hidden friends.

Extend unit-tests by using the helper functions from QTestPrivate.

Task-number: QTBUG-104111
Change-Id: Ib9ca613005e2f1521dea5e3cd9e2baa0b47fede4
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-11-28 21:30:58 +01:00
Ivan Solovev 5839aed9bd QDateTime: use new comparison helper macros
The unit-tests were already ported to the new comparison helper
functions from QTestPrivate.

Task-number: QTBUG-104111
Change-Id: I95fccb33433b3bbf1167545e347a271140727f23
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-11-28 21:30:52 +01:00
Ivan Solovev ff04c24184 QTime: use new comparison helper macros
The unit-tests were already ported to the new comparison helper
functions from QTestPrivate.

Task-number: QTBUG-104111
Change-Id: I23267fd457547b2705e821e7666130f5f9c019d5
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-11-28 21:30:46 +01:00
Ivan Solovev a6f4e55b4d QDate: use new comparison helper macros
Comparison with std::chrono types is also supported due to implicit
QDate constructors, which were made constexpr and noexcept in the
previous patch.

The unit-tests were already ported to the new comparison helper
functions from QTestPrivate.

Task-number: QTBUG-104111
Change-Id: Ib6b1122af9eaf2cb2c9db768150a31cf3bcadcc0
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-11-28 21:30:40 +01:00
Ivan Solovev 96f494bf92 Implement helper Qt::compareThreeWay() function for built-in types
The helper function

 RetType compareThreeWay(const T &left, const T &right) noexcept;

is used for C++20-comparison macros. Normally it's the user's
responsibility to provide this function as a hidden friend of the class
which uses the comparison helper macros.
For built-in types we provide the implementation inside the Qt
namespace.

We have to use custom IsIntegralType trait because libstdc++ only
treats __{u}int128_t types as integral when compiling in -std=gnu++XX
mode, and we compile Qt in -std=c++XX mode.

This patch provides the implementations only for compareThreeWay()
overloads, because there is no need to implement comparesEqual() for
built-in types. It would just be equivalent to calling operator==(),
so the user can do it directly.

Task-number: QTBUG-104113
Change-Id: I7b3f395458e1ee4c64f442ad48bbf4fec4c19c52
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-11-28 21:30:33 +01:00
Ivan Solovev 5a28aacd85 Implement checking of op<=> in the compare test helpers
The operator<=> is only checked if it is implemented.

Task-number: QTBUG-104113
Change-Id: I89396ca5edea7db9e1f9b0459c277cb4268e1f48
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-11-28 21:30:26 +01:00
Ivan Solovev fe12650e9d Implement compare helper macros
These macros should unwrap into a proper set of equality and ordering
operators, depending on the C++ standard being used.
For C++17, all 6 operators (==, !=, <, >, <=, >=) are overloaded, while
for C++20 only the overloads for opeartor==() and operator<=>() are
provided.

The macros are documented as internal for now.

The macros rely on two helper functions:
  bool comparesEqual(LeftType lhs, RightType rhs);
  ReturnType compareThreeWay(LeftType lhs, RightType rhs);

The comparesEqual() helper function is used to implement operator==()
and operator!=().
The compareThreeWay() helper function is used to implement the four
relational operators in C++17, or operator<=>() in C++20.
ReturnType must be one of Qt::{partial,weak,strong}_ordering.
When possible, the functions should also be declared constexpr and
noexcept.
It's the user's responsibility to provide the functions before
using the macros.

Implement a test case which applies the new macros to the dummy
classes, and uses the new helper function to verify the comparison
results.

The MSVC compiler before version 19.36 has a bug, where it fails
to correctly generate reverse opeerators in C++20 mode. Introduce
a new Q_COMPILER_LACKS_THREE_WAY_COMPARE_SYMMETRY definition for such
compiler versions, and use it to manually generate reversed
operators when needed.

Task-number: QTBUG-104113
Change-Id: Idc19d55df011fd616ff654f35a964e831b8ab93b
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-11-28 20:30:19 +00:00
Eskil Abrahamsen Blomfeldt e616f8decb Add missing detach when clearing font features
Same as when setting the features, we need to detach (but keep
the engine data) when clearing them.

Change-Id: I3adcadfb24c4abfff9c9e1c4f42ed4af919c71f0
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2023-11-28 20:58:34 +01:00
Edward Welbourne 5108192f67 Clean up QDate(Time)?::fromString() test-data tables, adding a column
The new column is currently unused, added for the benefit of an
imminent change, but adding its value was going to change every data
row, making the new rows with a different value there hard to see amid
the diff.

So add the unused value to the existing data rows and clean them up in
the process:
* Use modern string literals
* Split lines (that need it) in a consistent way
* Give test-cases not-entirely-meaningless names.

Change-Id: I9abdd24b7bb945796878c664d2ed82ca6c409fc1
Reviewed-by: Isak Fyksen <isak.fyksen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-11-28 19:59:49 +01:00
Sami Shalayel 26f0eaba52 do not override initial AUTOMOC_MACRO_NAMES value
The CMake documentation states that the AUTOMOC_MACRO_NAMES property of
a target is initially set to CMAKE_AUTOMOC_MACRO_NAMES, so do not
override it in qt_enable_autogen_tool.
Instead, append the extra macro names not set by the upstream CMake
CMAKE_AUTOMOC_MACRO_NAMES variable.

Add a test for this.

Change-Id: Ib0ef28e7fc9c5f9559150bbe73ffdeac767adc82
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-11-28 19:59:49 +01:00
Edward Welbourne 4f05ffeb41 Restore ASN.1 Element tests after move to plugin
When SSL backends were broken out as plugins, various tests were
suppressed since the code they test is now in a plugin, no longer part
of the network libraries.

The ASN.1 test is, however, fairly self-contained, so just compile it
with the relevant plugin sources (which are likewise self-contained)
and brute-force the paths to line up for the test.

Task-number: QTBUG-46843
Change-Id: I778489e68b7361a7fd55c88d2a35257ad6a58c46
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-11-28 19:59:49 +01:00
Timothée Keller 0e528f2976 Windeployqt: Fix -v/--version option
While the version option was already there, it had no output attached
to it, and simply generated the whole help text. Make sure that if the
-v/--version option is set, only the tool version is outputted.

Fixes: QTBUG-119511
Pick-to: 6.6
Change-Id: I59ee620333c02eb0a031cd05ac3170216cd034fa
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-11-28 19:59:48 +01:00
Wladimir Leuschner 5aff671eea Fix signed integer overflow in handling WM_SIZE message
The width and height of WM_SIZE parameters in LPARAM are unsigned ints,
but were extracted as signed ints with GET_X_LPARAM and GET_Y_LPARAM,
leading to signed integer overflow when using big window sizes.
The width and height are now extracted with LOWORD and HIWORD.

Fixes: QTBUG-119424
Pick-to: 6.6
Change-Id: Ie68716a08a686739b6464ce76319dc659fede336
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
2023-11-28 18:59:48 +00:00
Eirik Aavitsland 7706c2a28e Raster painting: Correct the coordinate rounding in drawPoints()
When using the cosmetic stroker (i.e. plain pens with effective line
width of 1), drawing points with fractional coordinates >= 0.5 would
fill the wrong pixel.

This is a long-standing bug where the drawPoints() code in the
cosmetic stroker code was missed during the painting coordinate system
shift for Qt 5.0. Prior to that, coordinates were interpreted as the
upper left corner of a pixel, so rounding fractional coordinates to
the closest integer would be the correct way to determine the pixel to
be filled. From Qt 5 onwards however, coordinates instead designate
the center point of the primitive to be stroked. In order to determine
which pixel is most covered by the unit square centered in the given
coordinates, fractional coordinates must be rounded downwards
(floored).

This fix makes the behavior consistent between the cosmetic and
non-cosmetic stroker, so that drawPoints() with e.g. penwidths 1 and
1.01 in practice fills the same pixels.

Pick-to: 6.6
Fixes: QTBUG-119306
Change-Id: I39cb7ad55229553dda098e6fbc9ee449b1fd9664
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2023-11-28 19:47:56 +01:00
Inkamari Harjula c39844c78e Doc: Modify unreadable tables
Added breaks in List of Stylable Widgets table.
Changed List of Properties table into sections.
Added list of Qt-specific properties in beg of List of Properties chapter.
Moved snippet comments to different rows.

Task-number: QTBUG-118446
Pick-to: 6.6
Change-Id: I494401058c7982c0a0ada18c8c94429beabba348
Reviewed-by: Mats Honkamaa <mats.honkamaa@qt.io>
2023-11-28 17:15:45 +02:00
Ahmad Samir bacee888ac tests/manual: fix compiler warnings about missing override keyword
Change-Id: I878c430faf97328a3faf15692c252ba1e8e3482f
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2023-11-28 16:11:59 +02:00
Assam Boudjelthia 523cf06628 Android: rectify the visibility of QtAndroid.jar class
Since we expect soon to support embedding of Qt from native
Android apps, and allowing native apps to access some Qt java
classes as API to enbale the embedding, it's needed now to
set the visibility to public only to classes that are meant
to be public.

Task-number: QTBUG-115017
Change-Id: Iec73f8d39bf9c5f7d303176b2b345d5928fb46c7
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2023-11-28 14:37:57 +02:00
Assam Boudjelthia a419d4fbf0 Android: unregister display manager on onPause or onStop
Unregister the display manager listener onPause or onStop
and register again when onResume is called.

Task-number: QTBUG-118077
Change-Id: Ic48defda019fb132ef22a8229c4b549b0414b100
Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
2023-11-28 14:37:57 +02:00
Assam Boudjelthia 576be5d047 Android: don't pass Activity to some QtDisplayManager methods
Since the display manager is mainly created by the Activity delegate
and lives with it, so pass the Actitivy and use it internally,
instead of passing it to every method.

Task-number: QTBUG-118077
Change-Id: I7761490ac8746cc6dad3bd59514a54da18519990
Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
2023-11-28 14:37:57 +02:00
Assam Boudjelthia 43102fb55f Android: start native app from QtActivityDelegate instead of QtLayout
Starting the native application is not the responsibility of QtLayout
instead it makes more sense to be done under QtActivityDelegate so
move that logic there and avoid keeping its runnable inside the
QtLayout.

Task-number: QTBUG-118077
Change-Id: I4869cb5aa741289ed0e9ccaa1cf2ae42c9dd4791
Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
2023-11-28 14:37:57 +02:00
Assam Boudjelthia 8ddb27a11d Android: restore SystemUiVisibility state
System UI visibility is saved under onSaveInstanceState()
but never restored under onRestoreInstanceState().

Task-number: QTBUG-118077
Change-Id: Ic9956a4aca9e0b9bb5fefa37d7229dd0d52c7344
Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
2023-11-28 14:37:57 +02:00
Assam Boudjelthia 57330a18ca Android: rename isPluginRunning to isNativePluginIntegrationReady
This has been used to notify that the platform integration is
setup and ready, now the name is more descriptive of what it does.

Task-number: QTBUG-118077
Change-Id: I9fab525f07433f9ec8057e2475a3b1e4658f84d9
Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
2023-11-28 14:37:56 +02:00
Assam Boudjelthia aea816b197 Android: rework app state tracking
Cleanup 'isStarted' and state management logic and move it
to QtNative. Currently, it's spread between QtActivityDelegate and
QtNative where multiple variables are used for overlapping use
cases.

Task-number: QTBUG-118077
Change-Id: I2c98b48be78809c30636bfdf6d6640317470cec6
Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
2023-11-28 14:37:56 +02:00
Ievgenii Meshcheriakov 86cfafcb5a qdbuscpp2xml: Register QtDBus metatypes
Explicitly register QtDBus-specific metatypes before attempting
to generate output. This fixes a bug when types like QDBusObjectPath
are sometimes ignored by this tool. Export QDBusMetaTypeId::init()
for that reason. Add a regression test to tst_qdbuscpp2xml.

Fixes: QTBUG-34550
Change-Id: I16faa79a794d09a26bad45e18730379681a20b50
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-11-28 13:37:56 +01:00
Thiago Macieira b2d24044c2 QFactoryLoader: use the new UTF-8 QCborStreamReader API for performance
That way we don't need to decode to QString in order to compare to
"Keys". There's no avoiding the conversion to it when inserting in the
map for top-level elements, but use of moc's -M option is extremely
rare.

Ideally, we'd simply ask QCborStreamReader to perform a comparison to a
string of ours, so we didn't have to memcpy from the stream in the first
place. But TinyCBOR has no API for that (it's been pending as
https://github.com/intel/tinycbor/issues/223 for a while).

Change-Id: I8bd6bb457b9c42218247fffd1797607f75b153f4
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-11-28 03:14:03 -08:00
Thiago Macieira 878e3342e1 QFactoryLoader: add metaDataKeys() to return just the "Keys" entry
Without parsing the whole metadata structure into a QCborValue.

QFactoryLoader::indexOf() is only used in the icon engine and
accessibility loaders. QFactoryLoader::keyMap() has more users, but
QFactoryLoader::metaData() is still by far the most used interface.

Task-number: QTBUG-114253
Change-Id: I8bd6bb457b9c42218247fffd179753524fc9b6a5
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-11-28 03:14:03 -08:00
Thiago Macieira 90df0f4806 QFactoryLoader: rewrite parse() using the new iterateInPluginMetaData()
This doesn't simplify the actual parsing or make it any faster, but does
merge the validation code so we only have it in one place.

Change-Id: I8bd6bb457b9c42218247fffd1797543bec9cfbec
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-11-28 03:14:03 -08:00
Thiago Macieira 4a432a7617 QFactoryLoader::instance(): don't fully parse static plugins' data
Commit d9766ddc3d (Qt 5.12) replaced the
use of the old binary JSON format with CBOR, which is more compact and
standard, but requires actual parsing instead of just a quick size
verification. For regular, loaded plugins, the metadata is stored in
parsed QCborValue format, but for static plugins, we were re-parsing
each staticplugin's metadata for every single call.

This avoids a full parsing and only parses the CBOR header to find the
IIDs (moc always outputs the IID first).

Fixes: QTBUG-114253
Pick-to: 6.6
Change-Id: I8bd6bb457b9c42218247fffd179750ec6c9e3252
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-11-28 03:14:03 -08:00
Assam Boudjelthia 58fc33239e AndroidTestRunner: use ndk-stack to pretty print crash reports
Use ndk-stack [*] tool provided by the Android NDK to pretty
print crash stacktraces to contain <source-file>:<line-number>
lines for calls, making debugging crashes much easier.

The ndk-stack path can be provided with the new param --ndk-stack,
otherwise, it would be deduced using ANDROID_NDK_ROOT env var.

If the tool is not found or the unstripped libs path cannot be
obtained, the default crash report is printed instead.

[*] https://developer.android.com/ndk/guides/ndk-stack

Task-number: QTQAINFRA-5928
Pick-to: 6.6 6.5
Change-Id: I22c3ba131a44050c8fcbfd176d5ced096761d229
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2023-11-28 10:03:02 +02:00
Assam Boudjelthia 4bc3f700ff AndroidTestRunner: don't fail waiting for the app to start/finish
Currently, under waitToFinish(), we wait for the app to start and if
it doesn't start or starts and exits too quickly for the test runner
to catch it, it fails. The test runner tries to get the pid of the test
after it detects the app has started. However, we don't really need to
fail, the test runner could simply continue the execution and assume
the test was run and finished, and proceed to fetching the test results.
Since, the results fetching don't anyway rely on the pid, the test
runner can let that operation decide whether to fail or not (if not
output is found).

Also, along the way, instead of issuing a different command to get the
pid (i.e. adb shell pidof), we can use the same "adb shell ps" command
that is used to check if the app is running, to obtain the pid.

Fixes: QTQAINFRA-5928
Fixes: QTBUG-88508
Pick-to: 6.6 6.5
Change-Id: Ice945fcb686c4ef21b5f1c143aa22922ae928333
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2023-11-28 02:11:56 +02:00
Assam Boudjelthia 518ac20dcb AndroidTestRunner: print logcat and crash stacktrace when a test fails
For better debugging for test failures, print both logcat and crash
stacktrace (since the start of the current test only), to have an
immediate idea of the reason of the failure or crash if any.

The crash report and the logcat for Android before level 23, is fetched
from the device's time of the app start since those two cases don't
have an option for filtering by pid.

Task-number: QTQAINFRA-5928
Fixes: QTBUG-114898
Pick-to: 6.6 6.5
Change-Id: I7760985032f342da4165cdb7573d4cfe5369ae03
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2023-11-28 02:11:56 +02:00
Assam Boudjelthia 9d830f4591 AndroidTestRunner: split androidtestrunner output retrieval failure log
To make debugging easier, print a log for each step in the test
output retrieval process instead of one error message that cover
multiple potential error cases.

Task-number: QTQAINFRA-5928
Pick-to: 6.6 6.5
Change-Id: Ia68c15e34cf4b0f8e2b0d351af785bb753807721
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
2023-11-28 02:11:56 +02:00
Mårten Nordheim 731b759c00 ASN1: speed up parsing of certificate timestamps
By parsing QDate and QTime separately it will internally parse the
values as-if-by UTC. This means we avoid the overhead of figuring out
what the local timezone is repeatedly for each certificate.

On Windows, with Schannel, this brings QAsn1Element::toDateTime
from consuming more than 97% of the test time to below 10%.
The test being tst_QSslSocket::systemCaCertificates. It also goes
from taking 1 minute in debug, to 1 second.

As a drive-by: add a (currently) failing test for Feb 29 2000, which
fails because we decode the date as 1900 before adjusting it to 2000.
But there is no 1900-02-29, so it returns an invalid date. As spotted
by Eddy.

Pick-to: 6.6 6.5
Change-Id: Iefa73a01d710129faf6412c4fa8bc2b5d7c98bbb
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-11-27 21:24:01 +01:00
Jacek Poplawski aca108a174 Configure tst_qlineedit correctly for VxWorks
In the test, we compare the position of the cursor after making a selection.
The behavior in Windows, QNX and VxWorks is different than usual - they do not jump to the beginning of the selection.
It is configured in the unselectingWithLeftOrRightChangesCursorPosition() function.

Task-number: QTBUG-115777
Change-Id: Ibb721be123bb04aac957f23d468920edcac8fbc4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-11-27 20:43:36 +01:00