diff options
author | Christian Strømme <christian.stromme@digia.com> | 2014-02-10 18:09:15 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-13 12:39:04 +0100 |
commit | af130d3047322dc3889dc09970905cbdb40c86f4 (patch) | |
tree | 8b793456a4383e6f58cfec64ef09b0ebac552bd0 | |
parent | a4dd3f81448db91b10bdfb236ac81caa8617c381 (diff) |
Add non-templated versions of get[Static]ObjectField()
Ideally the getStaticObjectField() and getObjectField() methods, that
take a signature, should never have been templated. Removing the
templated versions now will cause ABI breakage, so the only solution
is to add new non-templated versions.
Change-Id: I2f6e9f259b7bc511ef5bcaeb8a2077b0f267b8c8
Reviewed-by: BogDan Vatra <bogdan@kde.org>
-rw-r--r-- | src/androidextras/jni/qandroidjniobject.cpp | 19 | ||||
-rw-r--r-- | src/androidextras/jni/qandroidjniobject.h | 10 | ||||
-rw-r--r-- | tests/auto/qandroidjniobject/tst_qandroidjniobject.cpp | 22 |
3 files changed, 48 insertions, 3 deletions
diff --git a/src/androidextras/jni/qandroidjniobject.cpp b/src/androidextras/jni/qandroidjniobject.cpp index 9d38afd..2448d54 100644 --- a/src/androidextras/jni/qandroidjniobject.cpp +++ b/src/androidextras/jni/qandroidjniobject.cpp @@ -1469,6 +1469,11 @@ jdouble QAndroidJniObject::getField<jdouble>(const char *fieldName) const return d->getField<jdouble>(fieldName); } +QAndroidJniObject QAndroidJniObject::getObjectField(const char *fieldName, const char *sig) const +{ + return d->getObjectField(fieldName, sig); +} + template <> QAndroidJniObject QAndroidJniObject::getObjectField<jobject>(const char *fieldName, const char *sig) const { @@ -1750,6 +1755,13 @@ jdouble QAndroidJniObject::getStaticField<jdouble>(const char *className, const return QJNIObjectPrivate::getStaticField<jdouble>(className, fieldName); } +QAndroidJniObject QAndroidJniObject::getStaticObjectField(jclass clazz, + const char *fieldName, + const char *sig) +{ + return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, sig); +} + template <> QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobject>(jclass clazz, const char *fieldName, @@ -1892,6 +1904,13 @@ QAndroidJniObject QAndroidJniObject::getStaticObjectField<jdoubleArray>(const ch return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "[D"); } +QAndroidJniObject QAndroidJniObject::getStaticObjectField(const char *className, + const char *fieldName, + const char *sig) +{ + return QJNIObjectPrivate::getStaticObjectField(className, fieldName, sig); +} + template <> QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobjectArray>(jclass clazz, const char *fieldName, diff --git a/src/androidextras/jni/qandroidjniobject.h b/src/androidextras/jni/qandroidjniobject.h index 712082f..6098f8c 100644 --- a/src/androidextras/jni/qandroidjniobject.h +++ b/src/androidextras/jni/qandroidjniobject.h @@ -97,26 +97,36 @@ public: T getField(const char *fieldName) const; template <typename T> QAndroidJniObject getObjectField(const char *fieldName) const; + // ### Qt 6 remove templated version template <typename T> QAndroidJniObject getObjectField(const char *fieldName, const char *sig) const; + QAndroidJniObject getObjectField(const char *fieldName, const char *sig) const; template <typename T> void setField(const char *fieldName, T value); template <typename T> void setField(const char *fieldName, const char *sig, T value); template <typename T> static QAndroidJniObject getStaticObjectField(const char *className, const char *fieldName); + // ### Qt 6 remove templated version template <typename T> static QAndroidJniObject getStaticObjectField(const char *className, const char *fieldName, const char *sig); + static QAndroidJniObject getStaticObjectField(const char *className, + const char *fieldName, + const char *sig); template <typename T> static T getStaticField(const char *className, const char *fieldName); template <typename T> static QAndroidJniObject getStaticObjectField(jclass clazz, const char *fieldName); + // ### Qt 6 remove templated version template <typename T> static QAndroidJniObject getStaticObjectField(jclass clazz, const char *fieldName, const char *sig); + static QAndroidJniObject getStaticObjectField(jclass clazz, + const char *fieldName, + const char *sig); template <typename T> static T getStaticField(jclass clazz, const char *fieldName); diff --git a/tests/auto/qandroidjniobject/tst_qandroidjniobject.cpp b/tests/auto/qandroidjniobject/tst_qandroidjniobject.cpp index 47b476a..e0f4201 100644 --- a/tests/auto/qandroidjniobject/tst_qandroidjniobject.cpp +++ b/tests/auto/qandroidjniobject/tst_qandroidjniobject.cpp @@ -531,6 +531,15 @@ void tst_QAndroidJniObject::getStaticObjectFieldClassName() jboolean booleanValue = boolObject.callMethod<jboolean>("booleanValue"); QVERIFY(booleanValue); } + + { + QAndroidJniObject boolObject = QAndroidJniObject::getStaticObjectField("java/lang/Boolean", + "FALSE", + "Ljava/lang/Boolean;"); + QVERIFY(boolObject.isValid()); + jboolean booleanValue = boolObject.callMethod<jboolean>("booleanValue"); + QVERIFY(!booleanValue); + } } void tst_QAndroidJniObject::getStaticObjectField() @@ -558,6 +567,16 @@ void tst_QAndroidJniObject::getStaticObjectField() jboolean booleanValue = boolObject.callMethod<jboolean>("booleanValue"); QVERIFY(booleanValue); } + + { + QAndroidJniObject boolObject = QAndroidJniObject::getStaticObjectField(cls, + "FALSE", + "Ljava/lang/Boolean;"); + QVERIFY(boolObject.isValid()); + + jboolean booleanValue = boolObject.callMethod<jboolean>("booleanValue"); + QVERIFY(!booleanValue); + } } void tst_QAndroidJniObject::getStaticIntFieldClassName() @@ -679,8 +698,6 @@ void tst_QAndroidJniObject::getStaticCharField() void tst_QAndroidJniObject::getBooleanField() { - QVERIFY(m_activityDelegateClass); - QAndroidJniObject obj("org/qtproject/qt5/android/QtActivityDelegate"); QVERIFY(obj.isValid()); @@ -693,7 +710,6 @@ void tst_QAndroidJniObject::getIntField() QVERIFY(obj.isValid()); jint res = obj.getField<jint>("m_currentRotation"); - QCOMPARE(res, -1); } |