summaryrefslogtreecommitdiffstats
path: root/src/manager-lib/intentaminterface.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Mark security critical files according to QUIP 23Zoltan Gera2025-05-151-0/+1
| | | | | | | Fixes: QTBUG-135747 Pick-to: 6.9 6.8 Change-Id: I3254d2607b6c80d3fec003263a91f0cee4dd69c6 Reviewed-by: Robert Griebl <[email protected]>
* Adapt to QtWaylandCompositor behavior changes in 6.9+Robert Griebl2025-02-091-38/+38
| | | | | | | | | | | | Hidden windows are now behaving as in Qt 5.8 back in the day, as well as in any other toolkit or Qt's own other platform plugins: the Wayland surface stays alive, but a null buffer is attached to it. Closing or destroying windows still kills the Wayland surface though. Change-Id: I816a319ace7027af4886a3009794729eb1776092 Pick-to: 6.9 Reviewed-by: Dominik Holland <[email protected]>
* Warn users about wrongly instantiating QML typesRobert Griebl2024-05-231-4/+7
| | | | | | | | | | | | | Technically we cannot hide SystemUI types in an Application context and vice versa in single-process mode. To make matters worse, we also cannot reasonably check each invocation of a function or property accessor for singletons. But we CAN at least make sure that the instantiatable types are not instantiated in the wrong context. Change-Id: I44ea14f59578f1b3e5230ccfb52e0358896d3d37 Reviewed-by: Dominik Holland <[email protected]>
* Rename the oddly named QVariant converter function for DBusRobert Griebl2024-03-181-2/+2
| | | | | | | | | | | | We need to tweak arbitrary QVariants for transmission via DBus, as some types are not serializable. The converter functions are only suitable for this use case, so name them "fromDBus" / "toDBus". (this needs cherry-picking because of the follow-up patch) Change-Id: Ia809242e175c20f236e6ab2b4268826650821d50 Pick-to: 6.7 6.6 6.5 Reviewed-by: Bernd Weimer <[email protected]>
* Axivion: fix or document most of the reported issuesRobert Griebl2024-02-211-1/+1
| | | | | | | Change-Id: I5723096b8db71c216b33e189a2469b3130c19504 Pick-to: 6.7 Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Dominik Holland <[email protected]>
* Clazy: fixesRobert Griebl2024-01-081-6/+6
| | | | | | Change-Id: I2f9f0245e1d0ac0c6ee618a0c90f31aaa1465e93 Pick-to: 6.7 Reviewed-by: Dominik Holland <[email protected]>
* Clazy: modernizeRobert Griebl2024-01-081-1/+1
| | | | | | Change-Id: I8abe9b5b62d255b93754af84b82fbf88ca9b78a4 Pick-to: 6.7 Reviewed-by: Dominik Holland <[email protected]>
* Modernize string literalsRobert Griebl2024-01-081-7/+9
| | | | | | | | | Replace all our custom qSL/qL1S/qL1C macros with standard C++ and QString unicode string literals. Change-Id: I9e0b69fb46525421f408f260518a69b8f8125d99 Pick-to: 6.7 Reviewed-by: Dominik Holland <[email protected]>
* ASAN: fix potential access to freed memory (part 2)Robert Griebl2023-12-151-4/+7
| | | | | | | | This amends commit 9569ff6523dc0e6affc3471f39558a389f021fea Change-Id: I780278d5f71211aa5c24843601e17ac23d244aa5 Pick-to: 6.7 6.6 6.5 Reviewed-by: Dominik Holland <[email protected]>
* ASAN: fix potential access to freed memoryRobert Griebl2023-12-121-2/+3
| | | | | | | | | Also use plain deleteLater(), now that IntentServerRequest is derived from QObject. Change-Id: Id9d80da2e67e17519fbbd6456333ac269c30b1c8 Pick-to: 6.7 6.6 6.5 Reviewed-by: Dominik Holland <[email protected]>
* Replace AM_.. defines with checks for Qt features where possibleRobert Griebl2023-12-061-4/+4
| | | | | | | Also got rid of hard to read double negated checks (!disabled) Change-Id: I93b0665ccdf60e30a473692167fde5c6d719dfa9 Reviewed-by: Dominik Holland <[email protected]>
* Fix all outstanding namespace issuesRobert Griebl2023-11-201-2/+2
| | | | | | | | | | Also replaced the old QT_PREPEND_NAMESPACE_AM macro with the real namespace (QtAM::), as this makes the code easier to read for humans and also for tools like qdbuscpp2xml. The macro is still available, to support old custom appman code. Change-Id: Ifb379f03c1aacbd12ef799beb43013bba029e514 Reviewed-by: Bernd Weimer <[email protected]>
* Intents: fix broadcasts via D-BusRobert Griebl2023-11-091-1/+8
| | | | | | | | | | | Broadcasts were introduced after the DBus API was finalized and this DBus interface is missing the "bool isBroadcast" field. Instead of adding a complete "version 2" DBus interface, we simply append the string "@broadcast" to the requestId for broadcasts. Change-Id: I1fabb94d32372992889fcba212fd4f4dc26f4288 Pick-to: 6.6 6.5 Reviewed-by: Bernd Weimer <[email protected]>
* Switch to declarative registrationRobert Griebl2023-11-081-15/+0
| | | | | | | | | | | | | | | | | | | | | | After reworking all the sys-ui/app shared classes, we can now finally switch to declarative registration. As each QML namespace can only have one qt_internal_add_qml_module assigned, we need a dedicated lib/module for each of our namespaces. Due to this problem and in order to keep the code clean, all declarative registrations are kept out of the actual classes (as these are spread over multiple static libs). Instead they are all done in one place (src/qml/../) using the "foreign" syntax. The internal AmTest class (only used for the QML auto tests) had to be moved to a new QtApplicationManager.Test namespace, because adding an imperative registration to a declaratively registered namespace hides all the existing classes. Change-Id: I2e5b782da33a470a6d267cf45b42866fe6a9c14e Task-number: QTBUG-103266 Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Dominik Holland <[email protected]>
* Untangle the IntentHandler and IntentServerHandler implementationsRobert Griebl2023-11-071-9/+43
| | | | | | | | | | | | | | | | Both derive from the same base class, but they are registered into different QML namespaces, which messes with Creators code model. Additionally, the docs still said that IntentServerHandler derives from IntentHandler, which is (a) not true anymore and (b) an implementation detail. This commit leaves the base class (it's needed for IntentClient), but anything related to the QML API is moved into both the derived classes now. Change-Id: I6829a5413e88fd932441dd1f84f58c2a98a0edeb Reviewed-by: Dominik Holland <[email protected]>
* DBus cleanup, part 2 and shared QML APIRobert Griebl2023-09-261-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rewrote the NativeRuntime <-> Launcher communication using auto- generated interfaces and adaptors. Also made the shared QML classes (Notification and ApplicationInterface) simple QObjects, so the QMetaObject is always the same: both on the AM and the launcher side. This is necessary for qmlsc, as the compiler doesn't know how to deal with different MOC data for the same class name in different processes. Along the same lines, ApplicationManagerWindow is now a QObject, both for in-process (this was already the case) and out-of process use. The out-of-process/Wayland implementation will now implicitly allocate a QQuickWindow and re-parent it accordingly to have the same visibility behavior as if you would be using normal Windows. Also FrameTimer got an Impl backend, although in this case a special implementation is only needed for the System-UI. And additional unrelated change was rolled into this: launcher-lib was renamed to application-main-lib and the class LauncherMain to ApplicationMain to better reflect their purpose (the lib started as the basis for launcher-qml, but evolved into a generic app/launcher helper) The reason for including these changes here is that we are touching all the files in there anyway and having a rename after these big changes would make git blame far less useful. Change-Id: Iff915c1b2209f8104051dc131b9add5498df277c Task-number: QTBUG-103266 Reviewed-by: Dominik Holland <[email protected]>
* StartupTimer needs to parse /proc files using a C localeRobert Griebl2023-08-011-1/+0
| | | | | | | | | | We've been using C library functions, but these are locale dependent. As the uptime is a floating point number, this reading was not correct in locales using ',' as a decimal point. Change-Id: I0456ff589df411afbf30f9618f744eea65587f0c Pick-to: 6.6 Reviewed-by: Bernd Weimer <[email protected]>
* Intents: fix inconsistency in visibility between sysui and appsRobert Griebl2023-06-261-2/+2
| | | | | | | | Also added an example intent definition to the manifest docs. Change-Id: Idcea99252aac083982db966ff4f0e0ef4d2723e0 Pick-to: 6.6 Reviewed-by: Bernd Weimer <[email protected]>
* Cleanup our custom qmltype generationRobert Griebl2023-06-161-2/+2
| | | | | | | | | | | | | | | | | | 1) no qmltype data was generated for IntentServerHandler at all 2) IntentServerHandler derived from IntentHandler, but they are registered in different QML namespaces, which qmllint didn't like -> refactored to have a common base class. 3) the "remove the QtAM:: namespace prefix" code in the generator removed too much, e.g. stripping the class context from enums. 4) the exportMetaObjectRevisions field was not populated 5) module dependencies are handled via qmldir nowadays 6) potential defaultProperty settings were not exported Pick-to: 6.6 6.5 6.5.2 6.2 Fixes: QTBUG-114355 Fixes: QTBUG-114356 Change-Id: I137d2f694e92c08a323c6f3f502b24ffd4819e2e Reviewed-by: Dominik Holland <[email protected]>
* A bunch of smaller documentation fixesRobert Griebl2023-05-231-13/+21
| | | | | | | | | | | Change-Id: I8bede05ea5e7cd770301efdd5671c30c34bade9a Fixes: QTBUG-113423 Fixes: QTBUG-113302 Fixes: QTBUG-113293 Task-number: QTBUG-113292 Fixes: QTBUG-113291 Pick-to: 6.5 Reviewed-by: Bernd Weimer <[email protected]>
* Port from qAsConst to std::as_constMarc Mutz2023-01-141-2/+2
| | | | | | | | QT_NO_AS_CONST is now globally enabled in qtbase. Pick-to: 6.5 Change-Id: Ifc2eab1c902e75f5dbfc38ef9a62b29b5c91bc61 Reviewed-by: Jörg Bornemann <[email protected]>
* Intents: add broadcastsRobert Griebl2022-09-161-34/+43
| | | | | | | | | | | | | | | This commit adds a new intent type: a broadcast. Broadcasts will be delivered to all applications (*), but they do not have the possibility to return a reply back to the sender. Implementation wise, they are just treated as normal requests that are multiplexed for every application. (*) This can be limited with the new handleOnlyWhenRunning flag. Change-Id: If9f954cf5e52707624b95c80c8e984dfd6c4315a Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Dominik Holland <[email protected]>
* Intents: prevent a crash if a sent request is gc'ed too earlyRobert Griebl2022-08-051-0/+3
| | | | | | | | | | | Not saving the result of IntentClient.sendIntentRequest could lead to the GC deleting the IntentClientRequest before it was even delivered to the receiver, leaving a dangling pointer. Change-Id: I8972795d166fa46dd736005dd4df33b9a7ea2463 Pick-to: 6.4 6.3 6.2 5.15 Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Bernd Weimer <[email protected]>
* Use SPDX license identifiersDominik Holland2022-06-151-30/+4
| | | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. Files that have to be modified by hand are modified. License files are organized under LICENSES directory. Pick-to: 6.4 Task-number: QTBUG-67283 Change-Id: I09660e42dea769d720ff30e652485d9861cea965 Reviewed-by: Robert Griebl <[email protected]>
* Protect all static variables via Q_GLOBAL_STATIC or similar functionsRobert Griebl2022-05-171-8/+9
| | | | | | | | | | | | | | | Especially the static vars in logging.cpp and crashhandler.cpp had interdependencies, coupled with a manual init priority increase for initBacktrace(). By using Q_GLOBAL_STATIC we can ensure everything is initialised exactly once on first use. Q_GLOBAL_STATIC cannot deal with templated data types, so we're using normal access functions for the non-critical stuff that also doesn't need to be thread safe. Change-Id: Ia05381df2224dddcfdab0bf969a67bee84bd1daa Reviewed-by: Dominik Holland <[email protected]>
* Use AM_TIMEOUT_FACTOR in all tests and the intent handlingRobert Griebl2022-05-121-4/+5
| | | | | | | | Also works around the problem of the single-process qml/windowitem test crashing with just slightly more than idle CPU load. Change-Id: Ie24c7565bbaa448844879f4a57f0921693db9ce8 Reviewed-by: Dominik Holland <[email protected]>
* Untangle the icon/name/description/categories messRobert Griebl2022-03-211-3/+25
| | | | | | | | | | | | | | | | | | | | | | | | The documentation and the implementation disagreed quite heavily in regards to the icon, name, description and categories fields in the manifest for the package, each application and each intent. The implementation now follows the existing documentation, but also relaxing the requirements of icon and name being required for packages. Also, it was confusing that applications could not override these properties from the package like intents can do, so they also got these properties. Finally, everything is now correctly exposed to QML, with legacy wrappers in place to not break old code. In addition, the completely outdated applicationinfo unit-test was rewritten to test all the current field combinations. Change-Id: Ie5ad84bc6b771d6702b1994d1c8ae9f0204643b9 Pick-to: 6.3 6.3.0 Reviewed-by: Bernd Weimer <[email protected]> Reviewed-by: Dominik Holland <[email protected]>
* Avoid race condition on Intent creation during app startupRobert Griebl2021-07-271-13/+15
| | | | | Change-Id: I159db37d55dea3a85a52117013b24611cbbb8ac4 Reviewed-by: Dominik Holland <[email protected]>
* cmake: the AM_xxx defines are only available after including global.hRobert Griebl2021-06-221-0/+1
| | | | | Change-Id: I71fc328d1796b2e3474cc8fb0be23ea14c518242 Reviewed-by: Dominik Holland <[email protected]>
* Update copyright headers to 2021 an finally switch to the GPLRobert Griebl2021-06-011-25/+13
| | | | | | | | | Also removed all the SPDX tags and -QTAS license extensions. Change-Id: Ibd10fe37afcbba832831d027cf2f1891ca0226c0 Fixes: AUTOSUITE-1648 Fixes: AUTOSUITE-1646 Reviewed-by: Dominik Holland <[email protected]>
* Qt6 port, part 2 .. compiling with cmakeRobert Griebl2020-11-281-1/+1
| | | | | Change-Id: I0b3b0bd420fc2b5a5d263439ef263a8214bbdb4b Reviewed-by: Robert Griebl <[email protected]>
* Qt 6 port, part 1 .. without cmakeRobert Griebl2020-11-281-4/+3
| | | | | | | | | All C++ and QML unit-tests pass. The QML "windowitem" test is very unstable though and often crashes in the RHI layer. Change-Id: Ia42fc71ad69d2ba74b8b631ded7569b48cf458ee Reviewed-by: Robert Griebl <[email protected]>
* Fix intents for quick-launched runtimesv5.15.0_QtASBernd Weimer2020-08-111-2/+2
| | | | | | | | Quick-launched runtimes emit the newRuntimeCreated signal too late and hence the IntentServer didn't connect to the peer DBus signals. Change-Id: I15847e9c43a74b23494846870184c6955fa15cb1 Reviewed-by: Robert Griebl <[email protected]>
* Build optimization: include all moc cpps directly in the main cpp fileRobert Griebl2020-08-111-0/+2
| | | | | | | | This is a Qt module policy and helps a lot with build times -- especially on CI setups. Change-Id: I90574deb7e7b215054a5037b99ee4e7c7a040568 Reviewed-by: Thomas Senyk <[email protected]>
* Spelling fixes all over the placeRobert Griebl2020-07-171-4/+4
| | | | | Change-Id: Ic0018eddb8fcfbd22136fbf62d3e15e0e1c4c0b3 Reviewed-by: Bernd Weimer <[email protected]>
* Fix some documentation issuesBernd Weimer2020-06-191-0/+1
| | | | | Change-Id: Ifc075561f4a1900b6492c9d37adabca3bd0cc9ee Reviewed-by: Robert Griebl <[email protected]>
* Add intent handling in the system-uiRobert Griebl2020-01-311-3/+219
| | | | | | | | | Added a new component IntentServerHandler which lets you declare intent handlers directly in the system-ui. As an added benefit, these handlers also have access to the application id of the intent creator. Change-Id: Ia2d6f0860bc20e50ec8a0dd1f4bbca1a2b6967d0 Reviewed-by: Dominik Holland <[email protected]>
* Fully transparent and generic cache for config and app databaseRobert Griebl2019-11-071-18/+14
| | | | | | | | | | The existing caching mechanism for config files was abstracted and extended, so that it could be re-used to parse and cache the info.yaml files. This results in a much more robust application database and should get rid of 99.9% of all the -r/--recreate-database option usages. Change-Id: Ic37fcd3b0e55d481712d469b6e331b9c433a9c5d Reviewed-by: Dominik Holland <[email protected]>
* Change intent implementation to better fit new architectureRobert Griebl2019-10-281-0/+2
| | | | | | | | | | - IntentServer is now a list model as all the other singletons. - IntentModel is the companion filter model for the IntentServer, just like the ApplicationModel is for the ApplicationManager - Intent is now a Q_OBJECT instead of a Q_GADGET Change-Id: Ifead097c543fb00b08ab21210e4526a6f65ba167 Reviewed-by: Dominik Holland <[email protected]>
* Add new package abstraction, part 2Robert Griebl2019-10-281-3/+48
| | | | | | | | | | | | The first commit in this series was b4aee167d3bc6b9f64229317fbc428b3f3b83c0d. This update fixes all the known bugs introduced in the change of the architecture, adds basic documentation and examples. The changes in the intent sub-system are in a separate patch for easier review, although they both depend on each other due to changes in the API. Change-Id: Ia78da7e10e2eb7adfa30625554af275453065a90 Reviewed-by: Dominik Holland <[email protected]>
* Rename from Luxoft AM to Qt AMRobert Griebl2019-08-051-1/+1
| | | | | | Change-Id: I84bbd9e7f735ed1864804a9887d3a02b7c925e53 Reviewed-by: Vladimir Minenko <[email protected]> Reviewed-by: Bernd Weimer <[email protected]>
* Add new package abstraction, which allows multiple executables per packageRobert Griebl2019-08-011-69/+1
| | | | | | | | This is part 1 which is missing doc updates and missing the update-builtin- applications functionality. Both will be added in a follow-up commit. Change-Id: I2b493cfb7585143962067674690b02cc132ef78b Reviewed-by: Dominik Holland <[email protected]>
* Add documentation for the Intents QML APIRobert Griebl2018-12-181-2/+0
| | | | | Change-Id: Ib1a99c2aed7a09a86635ee1d2300e023b924cfbe Reviewed-by: Dominik Holland <[email protected]>
* Update copyright statementsRobert Griebl2018-12-181-1/+2
| | | | | | | | - added 2019 - everything is (c) Luxoft instead of Pelagicore from now on Change-Id: I82f874f0b0601deae1bb39347821edaf3c4cc6d8 Reviewed-by: Dominik Holland <[email protected]>
* Fix qdoc warningsRobert Griebl2018-12-061-1/+1
| | | | | Change-Id: I74c89b216fad970ab0366e53e36bd885540adf4d Reviewed-by: Daniel d'Andrada <[email protected]>
* Add options for intent timeouts and disabling intents and installerRobert Griebl2018-11-081-1/+25
| | | | | | | | The documentation for the intents options will be part of the intents documentation commit. Change-Id: I7b4ac11a4c77faedc57b8ea0b1cfa235342d7177 Reviewed-by: Daniel d'Andrada <[email protected]>
* Fix crash in the Intent integrationRobert Griebl2018-11-071-3/+7
| | | | | | | | The special System-UI client "application" is always ready and doesn't need the delayed setReady handler. Change-Id: I45a57a441f389388e49dba7fa34816fc959d59e4 Reviewed-by: Daniel d'Andrada <[email protected]>
* Make deducing the single-process app context easierRobert Griebl2018-10-311-22/+3
| | | | | | | | | | | Consolidate our efforts of detecting which single-process app an object belongs to (or from which app a call into a singleton was triggered) in QmlInProcessRuntime instead of duplicating this all over this place. (Notifications are also using a similar method, and need to be switched over to this scheme in the future). Change-Id: Iebbb9a8540b3d941ee4af0c661e2f19da7bc6f3e Reviewed-by: Dominik Holland <[email protected]>
* Intents: improved error handling and debug outputRobert Griebl2018-10-311-2/+7
| | | | | Change-Id: I5f34a7e444e2733ffabea351693efc7c32904008 Reviewed-by: Daniel d'Andrada <[email protected]>
* Multiple cleanupsRobert Griebl2018-10-301-2/+2
| | | | | Change-Id: I8f0df05d2d1cf7555ac7cd9ab681012953351f6a Reviewed-by: Daniel d'Andrada <[email protected]>