diff --git a/tests/auto/corelib/platform/android/tst_android.cpp b/tests/auto/corelib/platform/android/tst_android.cpp index 1e1e6b3c8c4..47dce8c6b8c 100644 --- a/tests/auto/corelib/platform/android/tst_android.cpp +++ b/tests/auto/corelib/platform/android/tst_android.cpp @@ -25,6 +25,7 @@ Q_DECLARE_JNI_CLASS(Window, "android/view/Window") Q_DECLARE_JNI_CLASS(WindowInsets, "android/view/WindowInsets") Q_DECLARE_JNI_CLASS(WindowManager, "android/view/WindowManager") Q_DECLARE_JNI_CLASS(WindowMetrics, "android/view/WindowMetrics") +Q_DECLARE_JNI_CLASS(ApplicationInfo, "android/content/pm/ApplicationInfo") class tst_Android : public QObject { @@ -249,27 +250,41 @@ void tst_Android::testFullScreenDimensions() // available geometry == app size (system bars visible and removed from available geometry) widget.showNormal(); QCoreApplication::processEvents(); - QJniObject window = activity.callMethod("getWindow"); - QVERIFY(window.isValid()); - QJniObject decorView = window.callMethod("getDecorView"); - QVERIFY(decorView.isValid()); + int expectedWidth; + int expectedHeight; - QJniObject insets = decorView.callMethod("getRootWindowInsets"); - QVERIFY(insets.isValid()); + const auto appContext = activity.callMethod("getApplicationContext"); + const auto appInfo = appContext.callMethod("getApplicationInfo"); + const int targetSdkVersion = appInfo.getField("targetSdkVersion"); + const int sdkVersion = QNativeInterface::QAndroidApplication::sdkVersion(); - int insetRight = insets.callMethod("getSystemWindowInsetRight"); - int insetLeft = insets.callMethod("getSystemWindowInsetLeft"); - int insetsWidth = insetRight + insetLeft; + if (sdkVersion >= __ANDROID_API_V__ && targetSdkVersion >= __ANDROID_API_V__) { + expectedWidth = appSize.width(); + expectedHeight = appSize.height(); + } else { + QJniObject window = activity.callMethod("getWindow"); + QVERIFY(window.isValid()); - int insetTop = insets.callMethod("getSystemWindowInsetTop"); - int insetBottom = insets.callMethod("getSystemWindowInsetBottom"); - int insetsHeight = insetTop + insetBottom; + QJniObject decorView = window.callMethod("getDecorView"); + QVERIFY(decorView.isValid()); + + auto insets = decorView.callMethod("getRootWindowInsets"); + QVERIFY(insets.isValid()); + + int insetRight = insets.callMethod("getSystemWindowInsetRight"); + int insetLeft = insets.callMethod("getSystemWindowInsetLeft"); + int insetsWidth = insetRight + insetLeft; + + int insetTop = insets.callMethod("getSystemWindowInsetTop"); + int insetBottom = insets.callMethod("getSystemWindowInsetBottom"); + int insetsHeight = insetTop + insetBottom; + + expectedWidth = appSize.width() - insetsWidth; + expectedHeight = appSize.height() - insetsHeight; + } - int expectedWidth = appSize.width() - insetsWidth; QTRY_COMPARE(screen->availableGeometry().width(), expectedWidth); - - int expectedHeight = appSize.height() - insetsHeight; QTRY_COMPARE(screen->availableGeometry().height(), expectedHeight); QTRY_COMPARE(screen->geometry().width(), realSize.getField("x"));