summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimur Pocheptsov <timur.pocheptsov@qt.io>2023-02-27 16:03:20 +0100
committerTimur Pocheptsov <timur.pocheptsov@qt.io>2023-03-03 17:07:47 +0100
commitbc11590965b053df38342d2c0ea4415d17dfbb67 (patch)
treefba19452c3c990ae7bec8a0da585928945621eff
parentaa6216ae79236bde72a388f609a4bc5b81d8ecba (diff)
downloadqtconnectivity-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.cpp27
-rw-r--r--tests/manual/qlowenergycontroller_peripheral/tst_qlowenergycontroller_peripheral.cpp24
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()