summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Schmertmann <Lars.Schmertmann@governikus.de>2020-02-24 14:34:20 +0100
committerLars Schmertmann <Lars.Schmertmann@governikus.de>2020-03-06 14:47:40 +0100
commitb4282fd32ea06c1d634ea322f682a4c939a0cc89 (patch)
tree1994a3dc1609ce32f6a175c58b4f71c91389c2e6
parent08fa2adc272ae58564601e92dc5d1459d8dc89ba (diff)
Also add a response for a request if reportError is called
When using QNearFieldTarget::sendCommand on Android an exception can occur. In this case reportError is called and handleResponse is omitted. A call to QNearFieldTarget::waitForRequestCompleted will result in a full usage of the specified timeout, even if the exception occurred. To avoid this behavior also add an (invalid) response in reportError. Change-Id: Id80b7a97da5628d229b942803ec1a2fb13536d99 Reviewed-by: Alex Blasche <alexander.blasche@qt.io> (cherry picked from commit 539fce5bf6bb5b1e3d599ea6e41354c80a79500f) Reviewed-by: Lars Schmertmann <lars.schmertmann@governikus.de>
-rw-r--r--src/nfc/qnearfieldtarget.cpp1
-rw-r--r--tests/auto/qnearfieldtagtype1/tst_qnearfieldtagtype1.cpp19
2 files changed, 11 insertions, 9 deletions
diff --git a/src/nfc/qnearfieldtarget.cpp b/src/nfc/qnearfieldtarget.cpp
index e9a6fa11..f7612d36 100644
--- a/src/nfc/qnearfieldtarget.cpp
+++ b/src/nfc/qnearfieldtarget.cpp
@@ -538,6 +538,7 @@ bool QNearFieldTarget::handleResponse(const QNearFieldTarget::RequestId &id,
void QNearFieldTarget::reportError(QNearFieldTarget::Error error,
const QNearFieldTarget::RequestId &id)
{
+ setResponseForRequest(id, QVariant(), false);
QMetaObject::invokeMethod(this, [this, error, id]() {
Q_EMIT this->error(error, id);
}, Qt::QueuedConnection);
diff --git a/tests/auto/qnearfieldtagtype1/tst_qnearfieldtagtype1.cpp b/tests/auto/qnearfieldtagtype1/tst_qnearfieldtagtype1.cpp
index fb7aa7ae..2d1f052e 100644
--- a/tests/auto/qnearfieldtagtype1/tst_qnearfieldtagtype1.cpp
+++ b/tests/auto/qnearfieldtagtype1/tst_qnearfieldtagtype1.cpp
@@ -174,8 +174,7 @@ void tst_QNearFieldTagType1::staticMemoryModel()
quint8 byte = target->requestResponse(id).toUInt();
id = target->writeByte(i, 0x55);
- QVERIFY(!target->waitForRequestCompleted(id,50));
-
+ QVERIFY(target->waitForRequestCompleted(id));
QVERIFY(!target->requestResponse(id).isValid());
id = target->readByte(i);
@@ -224,8 +223,7 @@ void tst_QNearFieldTagType1::staticMemoryModel()
quint8 byte = target->requestResponse(id).toUInt();
id = target->writeByte(i, 0x55);
- QVERIFY(!target->waitForRequestCompleted(id,50));
-
+ QVERIFY(target->waitForRequestCompleted(id));
QVERIFY(!target->requestResponse(id).isValid());
id = target->readByte(i);
@@ -272,7 +270,7 @@ void tst_QNearFieldTagType1::dynamicMemoryModel()
QCOMPARE(quint8(block.at(7)), quint8(0x00));
id = target->writeBlock(0x00, QByteArray(8, quint8(0x55)));
- QVERIFY(!target->waitForRequestCompleted(id,50));
+ QVERIFY(target->waitForRequestCompleted(id));
QVERIFY(!target->requestResponse(id).isValid());
QCOMPARE(target->uid(), block.left(7));
@@ -338,7 +336,7 @@ void tst_QNearFieldTagType1::dynamicMemoryModel()
QByteArray block = target->requestResponse(id).toByteArray();
id = target->writeBlock(i, QByteArray(8, quint8(0x55)));
- QVERIFY(!target->waitForRequestCompleted(id,50));
+ QVERIFY(target->waitForRequestCompleted(id));
QVERIFY(!target->requestResponse(id).isValid());
id = target->readBlock(i);
@@ -350,14 +348,17 @@ void tst_QNearFieldTagType1::dynamicMemoryModel()
for (int i = 0; i < 256; ++i) {
QNearFieldTarget::RequestId id = target->readBlock(i);
- QVERIFY(!target->waitForRequestCompleted(id,50));
+ QVERIFY(target->waitForRequestCompleted(id));
+ QVERIFY(!target->requestResponse(id).isValid());
id = target->writeBlock(i, QByteArray(8, quint8(0x55)));
- QVERIFY(!target->waitForRequestCompleted(id,50));
+ QVERIFY(target->waitForRequestCompleted(id));
+ QVERIFY(!target->requestResponse(id).isValid());
}
for (int i = 0; i < 16; ++i) {
QNearFieldTarget::RequestId id = target->readSegment(i);
- QVERIFY(!target->waitForRequestCompleted(id,50));
+ QVERIFY(target->waitForRequestCompleted(id));
+ QVERIFY(!target->requestResponse(id).isValid());
}
}
}