diff options
author | Juha Vuolle <juha.vuolle@qt.io> | 2023-03-31 14:15:21 +0300 |
---|---|---|
committer | Juha Vuolle <juha.vuolle@qt.io> | 2023-04-04 08:35:15 +0300 |
commit | fbe1a265afef464c6aac71db77a50eda17e82f4e (patch) | |
tree | 8c75121cc11ab13f652b238c04ea33555f3dd041 | |
parent | 6ffb1c3bfa1243f71ad2f0a95c4d896ffc434712 (diff) | |
download | qtconnectivity-fbe1a265afef464c6aac71db77a50eda17e82f4e.tar.gz |
Add permission request to bttestui manual test application
In addition add temporary workaround for linking against the permission
plugin on macOS
Task-number: QTBUG-112215
Task-number: QTBUG-112212
Change-Id: Idbd8c4cbdfc58893dc23147379265030cefc2aee
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
-rw-r--r-- | tests/bttestui/CMakeLists.txt | 8 | ||||
-rw-r--r-- | tests/bttestui/main.cpp | 23 |
2 files changed, 31 insertions, 0 deletions
diff --git a/tests/bttestui/CMakeLists.txt b/tests/bttestui/CMakeLists.txt index 1abe3bef..4daee3df 100644 --- a/tests/bttestui/CMakeLists.txt +++ b/tests/bttestui/CMakeLists.txt @@ -57,6 +57,14 @@ else() FILES ${bttest_resource_files} ) + + if(MACOS) + # Explicitly link against the static permission plugin because tests + # currently don't have finalizers run for them except for iOS. + # TODO: Remove this when qtbase automatically runs finalizers for tests: QTBUG-112212 + target_link_libraries(bttestui PRIVATE Qt6::QDarwinBluetoothPermissionPlugin) + endif() + endif() set_target_properties(bttestui PROPERTIES diff --git a/tests/bttestui/main.cpp b/tests/bttestui/main.cpp index a4d8b942..8a087815 100644 --- a/tests/bttestui/main.cpp +++ b/tests/bttestui/main.cpp @@ -8,12 +8,35 @@ #include <QtCore/QLoggingCategory> +#if QT_CONFIG(permissions) +#include <QtCore/qpermissions.h> +#endif + #include "btlocaldevice.h" int main(int argc, char *argv[]) { QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true")); QGuiApplication app(argc, argv); + +#if QT_CONFIG(permissions) + // Check Bluetooth permission and request it if the app doesn't have it + auto permissionStatus = app.checkPermission(QBluetoothPermission{}); + if (permissionStatus == Qt::PermissionStatus::Undetermined) { + app.requestPermission(QBluetoothPermission{}, + [&permissionStatus](const QPermission &permission) { + qApp->exit(); // Exit the permission request processing started below + permissionStatus = permission.status(); + }); + // Process permission request + app.exec(); + } + if (permissionStatus == Qt::PermissionStatus::Denied) { + qWarning("Bluetooth permission denied, exiting"); + return -1; + } +#endif + qmlRegisterType<BtLocalDevice>("Local", 6, 5, "BluetoothDevice"); QQuickView view; |