summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuha Vuolle <juha.vuolle@qt.io>2023-03-31 14:15:21 +0300
committerJuha Vuolle <juha.vuolle@qt.io>2023-04-04 08:35:15 +0300
commitfbe1a265afef464c6aac71db77a50eda17e82f4e (patch)
tree8c75121cc11ab13f652b238c04ea33555f3dd041
parent6ffb1c3bfa1243f71ad2f0a95c4d896ffc434712 (diff)
downloadqtconnectivity-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.txt8
-rw-r--r--tests/bttestui/main.cpp23
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;