From c9921d069a438fc664e981ddb00c47417a49a872 Mon Sep 17 00:00:00 2001 From: Juha Vuolle Date: Mon, 7 Apr 2025 13:39:34 +0300 Subject: [PATCH] Make Qt for Android configurable without 'accessibility' support The code was already partially behind the feature flag, but not fully. Pick-to: 6.8 Fixes: QTBUG-135693 Change-Id: Iad76221837aa37b90b3be998afc41ce9bbc05c55 Reviewed-by: Assam Boudjelthia (cherry picked from commit f5b5f16bfa0bf0889c1d77af3e9840e67a2e851c) --- src/plugins/platforms/android/CMakeLists.txt | 11 ++++++++--- src/plugins/platforms/android/androidjnimain.cpp | 10 +++++++++- src/plugins/platforms/android/androidjnimain.h | 2 ++ .../platforms/android/qandroidplatformintegration.cpp | 4 ++++ 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/plugins/platforms/android/CMakeLists.txt b/src/plugins/platforms/android/CMakeLists.txt index 6bdeff079b5..72ac93609f1 100644 --- a/src/plugins/platforms/android/CMakeLists.txt +++ b/src/plugins/platforms/android/CMakeLists.txt @@ -14,7 +14,6 @@ qt_internal_add_plugin(QAndroidIntegrationPlugin androidcontentfileengine.cpp androidcontentfileengine.h qandroidapkfileengine.h qandroidapkfileengine.cpp androiddeadlockprotector.h - androidjniaccessibility.cpp androidjniaccessibility.h androidjniinput.cpp androidjniinput.h androidjnimain.cpp androidjnimain.h androidjnimenu.cpp androidjnimenu.h @@ -22,7 +21,6 @@ qt_internal_add_plugin(QAndroidIntegrationPlugin qandroidassetsfileenginehandler.cpp qandroidassetsfileenginehandler.h qandroideventdispatcher.cpp qandroideventdispatcher.h qandroidinputcontext.cpp qandroidinputcontext.h - qandroidplatformaccessibility.cpp qandroidplatformaccessibility.h qandroidplatformclipboard.cpp qandroidplatformclipboard.h qandroidplatformdialoghelpers.cpp qandroidplatformdialoghelpers.h qandroidplatformfiledialoghelper.cpp qandroidplatformfiledialoghelper.h @@ -50,7 +48,6 @@ qt_internal_add_plugin(QAndroidIntegrationPlugin # seems to be doing most of the work already. androidjnimenu.cpp qandroidinputcontext.cpp - androidjniaccessibility.cpp qandroidplatformdialoghelpers.cpp # Conflicting JNI classes, and types androidcontentfileengine.cpp @@ -82,6 +79,14 @@ qt_internal_extend_target(QAndroidIntegrationPlugin CONDITION NOT QT_FEATURE_and extract-dummy.cpp ) +qt_internal_extend_target(QAndroidIntegrationPlugin CONDITION QT_FEATURE_accessibility + SOURCES + androidjniaccessibility.cpp androidjniaccessibility.h + qandroidplatformaccessibility.cpp qandroidplatformaccessibility.h + NO_UNITY_BUILD_SOURCES + androidjniaccessibility.cpp +) + qt_internal_extend_target(QAndroidIntegrationPlugin CONDITION QT_FEATURE_vulkan SOURCES qandroidplatformvulkaninstance.cpp qandroidplatformvulkaninstance.h diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp index e7eefa01364..dc480e1a754 100644 --- a/src/plugins/platforms/android/androidjnimain.cpp +++ b/src/plugins/platforms/android/androidjnimain.cpp @@ -10,7 +10,6 @@ #include "androidcontentfileengine.h" #include "qandroidapkfileengine.h" #include "androiddeadlockprotector.h" -#include "androidjniaccessibility.h" #include "androidjniinput.h" #include "androidjnimain.h" #include "androidjnimenu.h" @@ -20,6 +19,9 @@ #include "qandroidplatformdialoghelpers.h" #include "qandroidplatformintegration.h" #include "qandroidplatformclipboard.h" +#if QT_CONFIG(accessibility) +#include "androidjniaccessibility.h" +#endif #include "qandroidplatformwindow.h" #include @@ -91,7 +93,9 @@ static const char m_methodErrorMsg[] = "Can't find method \"%s%s\""; Q_CONSTINIT static QBasicAtomicInt startQtAndroidPluginCalled = Q_BASIC_ATOMIC_INITIALIZER(0); +#if QT_CONFIG(accessibility) Q_DECLARE_JNI_CLASS(QtAccessibilityInterface, "org/qtproject/qt/android/QtAccessibilityInterface"); +#endif namespace QtAndroid { @@ -192,6 +196,7 @@ namespace QtAndroid return true; } +#if QT_CONFIG(accessibility) void initializeAccessibility() { m_backendRegister->callInterface( @@ -233,6 +238,7 @@ namespace QtAndroid m_backendRegister->callInterface( "notifyScrolledEvent", accessibilityObjectId); } +#endif //QT_CONFIG(accessibility) void notifyNativePluginIntegrationReady(bool ready) { @@ -810,7 +816,9 @@ static bool registerNatives(QJniEnvironment &env) success = success && QtAndroidInput::registerNatives(env) && QtAndroidMenu::registerNatives(env) +#if QT_CONFIG(accessibility) && QtAndroidAccessibility::registerNatives(env) +#endif && QtAndroidDialogHelpers::registerNatives(env) && QAndroidPlatformClipboard::registerNatives(env) && QAndroidPlatformWindow::registerNatives(env) diff --git a/src/plugins/platforms/android/androidjnimain.h b/src/plugins/platforms/android/androidjnimain.h index e625b9e592a..9670ef47db3 100644 --- a/src/plugins/platforms/android/androidjnimain.h +++ b/src/plugins/platforms/android/androidjnimain.h @@ -53,6 +53,7 @@ namespace QtAndroid jobject createBitmap(int width, int height, QImage::Format format, JNIEnv *env); jobject createBitmapDrawable(jobject bitmap, JNIEnv *env = nullptr); +#if QT_CONFIG(accessibility) void initializeAccessibility(); void notifyAccessibilityLocationChange(uint accessibilityObjectId); void notifyObjectHide(uint accessibilityObjectId, uint parentObjectId); @@ -60,6 +61,7 @@ namespace QtAndroid void notifyObjectFocus(uint accessibilityObjectId); void notifyValueChanged(uint accessibilityObjectId, jstring value); void notifyScrolledEvent(uint accessibilityObjectId); +#endif void notifyNativePluginIntegrationReady(bool ready); const char *classErrorMsgFmt(); diff --git a/src/plugins/platforms/android/qandroidplatformintegration.cpp b/src/plugins/platforms/android/qandroidplatformintegration.cpp index a311fb1adaf..c48ebd878e2 100644 --- a/src/plugins/platforms/android/qandroidplatformintegration.cpp +++ b/src/plugins/platforms/android/qandroidplatformintegration.cpp @@ -4,11 +4,15 @@ #include "qandroidplatformintegration.h" +#if QT_CONFIG(accessibility) #include "androidjniaccessibility.h" +#endif #include "androidjnimain.h" #include "qabstracteventdispatcher.h" #include "qandroideventdispatcher.h" +#if QT_CONFIG(accessibility) #include "qandroidplatformaccessibility.h" +#endif #include "qandroidplatformclipboard.h" #include "qandroidplatformfontdatabase.h" #include "qandroidplatformforeignwindow.h"