diff options
author | Timur Pocheptsov <timur.pocheptsov@qt.io> | 2023-02-27 16:03:20 +0100 |
---|---|---|
committer | Timur Pocheptsov <timur.pocheptsov@qt.io> | 2023-03-03 17:07:47 +0100 |
commit | bc11590965b053df38342d2c0ea4415d17dfbb67 (patch) | |
tree | fba19452c3c990ae7bec8a0da585928945621eff | |
parent | aa6216ae79236bde72a388f609a4bc5b81d8ecba (diff) | |
download | qtconnectivity-bc11590965b053df38342d2c0ea4415d17dfbb67.tar.gz |
Update the remaining (manual) tests to use the Permissions API
Otherwise, they will refuse to work with Bluetooth.
Change-Id: Iaf5c6726b609a280e0611cfecaea485ccfa38804
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
-rw-r--r-- | tests/manual/qlowenergycontroller/tst_qlowenergycontroller_device.cpp | 27 | ||||
-rw-r--r-- | tests/manual/qlowenergycontroller_peripheral/tst_qlowenergycontroller_peripheral.cpp | 24 |
2 files changed, 51 insertions, 0 deletions
diff --git a/tests/manual/qlowenergycontroller/tst_qlowenergycontroller_device.cpp b/tests/manual/qlowenergycontroller/tst_qlowenergycontroller_device.cpp index 3f4f5ed5..1c2f1157 100644 --- a/tests/manual/qlowenergycontroller/tst_qlowenergycontroller_device.cpp +++ b/tests/manual/qlowenergycontroller/tst_qlowenergycontroller_device.cpp @@ -12,6 +12,12 @@ #include <QScopeGuard> #include <QBluetoothLocalDevice> +#if QT_CONFIG(permissions) +#include <QtCore/qcoreapplication.h> +#include <QtCore/qpermissions.h> +#include <QtCore/qnamespace.h> +#endif + static const QLatin1String largeAttributeServiceUuid("1f85e37c-ac16-11eb-ae5c-93d3a763feed"); static const QLatin1String largeAttributeCharUuid("40e4f68e-ac16-11eb-9956-cfe55a8c370c"); static const QLatin1String largeAttributeDescUuid("44e4f68e-ac16-11eb-9956-cfe55a8c370c"); @@ -109,6 +115,9 @@ private: QBluetoothDeviceInfo mRemoteDeviceInfo; QString mServerDeviceName; QByteArray mServerPlatform; +#if QT_CONFIG(permissions) + Qt::PermissionStatus permissionStatus = Qt::PermissionStatus::Undetermined; +#endif }; // connectionCounter is used to check that the server-side connect events @@ -120,12 +129,30 @@ int tst_qlowenergycontroller_device::connectionCounter = -1; tst_qlowenergycontroller_device::tst_qlowenergycontroller_device() { QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true")); +#if QT_CONFIG(permissions) + // FIXME: Android has more specific BT permissions, fix when appropriate + // change is done in qtbase + permissionStatus = qApp->checkPermission(QBluetoothPermission{}); + if (qApp->checkPermission(QBluetoothPermission{}) == Qt::PermissionStatus::Undetermined) { + QTestEventLoop loop; + qApp->requestPermission(QBluetoothPermission{}, [this, &loop](const QPermission &permission){ + permissionStatus = permission.status(); + loop.exitLoop(); + }); + if (permissionStatus == Qt::PermissionStatus::Undetermined) + loop.enterLoopMSecs(30000); + } +#endif } tst_qlowenergycontroller_device::~tst_qlowenergycontroller_device() { } void tst_qlowenergycontroller_device::initTestCase() { +#if QT_CONFIG(permissions) + if (permissionStatus != Qt::PermissionStatus::Granted) + QSKIP("This manual test requires Blutooth permissions granted."); +#endif qDebug() << "Testcase build time: " << __TIME__; mDevAgent.reset(new QBluetoothDeviceDiscoveryAgent(this)); mDevAgent->setLowEnergyDiscoveryTimeout(75000); diff --git a/tests/manual/qlowenergycontroller_peripheral/tst_qlowenergycontroller_peripheral.cpp b/tests/manual/qlowenergycontroller_peripheral/tst_qlowenergycontroller_peripheral.cpp index 0d7efa07..840349b2 100644 --- a/tests/manual/qlowenergycontroller_peripheral/tst_qlowenergycontroller_peripheral.cpp +++ b/tests/manual/qlowenergycontroller_peripheral/tst_qlowenergycontroller_peripheral.cpp @@ -9,6 +9,13 @@ #include <QLowEnergyCharacteristicData> #include <QLowEnergyDescriptorData> +#if QT_CONFIG(permissions) +#include <QtTest/qtesteventloop.h> +#include <QtCore/qcoreapplication.h> +#include <QtCore/qpermissions.h> +#include <QtCore/qnamespace.h> +#endif // permissions + using namespace Qt::Literals::StringLiterals; static constexpr auto leServiceUuid{"10f5e37c-ac16-11eb-ae5c-93d3a763feed"_L1}; @@ -43,6 +50,23 @@ void tst_qlowenergycontroller_peripheral::initTestCase() else mDevice = devices.back(); #endif // Q_OS_IOS + +#if QT_CONFIG(permissions) + Qt::PermissionStatus permissionStatus = qApp->checkPermission(QBluetoothPermission{}); + // FIXME: Android will add more specific BT permissions, fix when appropriate + // change is in qtbase. + if (qApp->checkPermission(QBluetoothPermission{}) == Qt::PermissionStatus::Undetermined) { + QTestEventLoop loop; + qApp->requestPermission(QBluetoothPermission{}, [&permissionStatus, &loop](const QPermission &permission){ + permissionStatus = permission.status(); + loop.exitLoop(); + }); + if (permissionStatus == Qt::PermissionStatus::Undetermined) + loop.enterLoopMSecs(30000); + } + if (permissionStatus != Qt::PermissionStatus::Granted) + QSKIP("This manual test requires Blutooth permissions granted."); +#endif // permissions } void tst_qlowenergycontroller_peripheral::init() |