diff options
author | Juha Vuolle <juha.vuolle@insta.fi> | 2022-05-13 14:27:49 +0300 |
---|---|---|
committer | Juha Vuolle <juha.vuolle@insta.fi> | 2022-05-17 10:20:19 +0300 |
commit | 7957bc177eec2f6f2d88e75917741ec4903cf41f (patch) | |
tree | 20ebf25cdf81d3db6d506ad32f4d771dd0656f67 /tests | |
parent | 4fa0a78d6a46b58cf5bdfa505aaa247dcda4d9e4 (diff) |
Revise bluetooth hostmode autotest to pass on Android 12
On Android 12 device it seems that the Connectable/Discoverable hostmode
is governed by the UI bluetooth visibility setting. This commit makes
the test pass and assumes the visibility setting is 'true'.
Fixes: QTBUG-102874
Change-Id: Ic772cb4e5a76cef7b512b5d87f2f8842599d1fd5
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qbluetoothlocaldevice/tst_qbluetoothlocaldevice.cpp | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/tests/auto/qbluetoothlocaldevice/tst_qbluetoothlocaldevice.cpp b/tests/auto/qbluetoothlocaldevice/tst_qbluetoothlocaldevice.cpp index 81d99d55..c350b971 100644 --- a/tests/auto/qbluetoothlocaldevice/tst_qbluetoothlocaldevice.cpp +++ b/tests/auto/qbluetoothlocaldevice/tst_qbluetoothlocaldevice.cpp @@ -169,14 +169,31 @@ void tst_QBluetoothLocalDevice::tst_hostModes_data() { QTest::addColumn<QBluetoothLocalDevice::HostMode>("hostModeExpected"); QTest::addColumn<bool>("expectSignal"); -#ifdef Q_OS_WIN +#if defined(Q_OS_WIN) // On Windows local device does not support HostDiscoverable as a separate mode QTest::newRow("HostPoweredOff1") << QBluetoothLocalDevice::HostPoweredOff << false; QTest::newRow("HostConnectable1") << QBluetoothLocalDevice::HostConnectable << true; QTest::newRow("HostConnectable2") << QBluetoothLocalDevice::HostConnectable << false; QTest::newRow("HostPoweredOff3") << QBluetoothLocalDevice::HostPoweredOff << true; QTest::newRow("HostPoweredOff3") << QBluetoothLocalDevice::HostPoweredOff << false; -#else + return; +#elif defined(Q_OS_ANDROID) + if (QNativeInterface::QAndroidApplication::sdkVersion() >= 31) { + // On Android-12 (API Level 31+) it seems the device's bluetooth visibility setting + // defines if we enter "HostDiscoverable" (visible true) or "HostConnectable" + // (visible false). Here we assume that the visibility setting is true. For lower + // Android versions the default testdata rows are fine + qDebug() << "On this Android version the bluetooth visibility setting is assumed true"; + QTest::newRow("HostDiscoverable1") << QBluetoothLocalDevice::HostDiscoverable << true; + QTest::newRow("HostPoweredOff1") << QBluetoothLocalDevice::HostPoweredOff << true; + QTest::newRow("HostPoweredOff2") << QBluetoothLocalDevice::HostPoweredOff << false; + QTest::newRow("HostDiscoverable2") << QBluetoothLocalDevice::HostDiscoverable << true; + QTest::newRow("HostPoweredOff3") << QBluetoothLocalDevice::HostPoweredOff << true; + QTest::newRow("HostDiscoverable3") << QBluetoothLocalDevice::HostDiscoverable << true; + QTest::newRow("HostDiscoverable4") << QBluetoothLocalDevice::HostDiscoverable << false; + return; + } +#endif QTest::newRow("HostDiscoverable1") << QBluetoothLocalDevice::HostDiscoverable << true; QTest::newRow("HostPoweredOff1") << QBluetoothLocalDevice::HostPoweredOff << true; QTest::newRow("HostPoweredOff2") << QBluetoothLocalDevice::HostPoweredOff << false; @@ -188,7 +205,6 @@ void tst_QBluetoothLocalDevice::tst_hostModes_data() QTest::newRow("HostDiscoverable3") << QBluetoothLocalDevice::HostDiscoverable << true; QTest::newRow("HostDiscoverable4") << QBluetoothLocalDevice::HostDiscoverable << false; QTest::newRow("HostConnectable4") << QBluetoothLocalDevice::HostConnectable << true; -#endif } void tst_QBluetoothLocalDevice::tst_hostModes() @@ -230,11 +246,7 @@ void tst_QBluetoothLocalDevice::tst_hostModes() localDevice.setHostMode(hostModeExpected); // Manual interaction may be needed (for example on Android you may // need to authorize a permission) => hence a longer timeout. - // Note: it seems that on some Android versions the actual resulting host mode - // depends on the device's bluetooth settings. This can cause the test to fail here; - // for instance if Bluetooth is set as 'visible to other devices', it may be that the - // device enters the 'discoverable' mode when attempting to enter 'connectable' (and - // vice versa) + // If you see a fail on Android here, please see the comment in _data() QTRY_COMPARE_WITH_TIMEOUT(localDevice.hostMode(), hostModeExpected, 15000); // Allow possible mode-change signal(s) to arrive (QTRY_COMPARE polls the // host mode in a loop, and thus may return before the host mode change signal). |