Make-fields-of-ShadowTranslationManager-static-for-context-level-instance
1.Converted instance fields to static fields to ensure proper state management. 2.add tests for same in ShadowTranslationManager
Overview
Proposed Changes
Hi @utzcoz , integration tests are passing on my machine but failing on CI
INFO: Execute android.app.TranslationManagerTest.translationManager_activityInstance_isSameAsActivityInstance: PASSED
SEVERE: Execute android.app.TranslationManagerTest.translationManager_applicationInstance_isNotSameAsActivityInstance: FAILED
expected not to be specific instance: expected not to be specific instance: null
at android.app.TranslationManagerTest.lambda$translationManager_applicationInstance_isNotSameAsActivityInstance$0(TranslationManagerTest.java:31)
at android.app.TranslationManagerTest$$ExternalSyntheticLambda1.perform(D8$$SyntheticClass:0)
at androidx.test.core.app.ActivityScenario.lambda$onActivity$2$androidx-test-core-app-ActivityScenario(ActivityScenario.java:794)
at androidx.test.core.app.ActivityScenario$$ExternalSyntheticLambda2.run(D8$$SyntheticClass:0)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:487)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:2420)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
expected not to be specific instance: null
at android.app.TranslationManagerTest.lambda$translationManager_applicationInstance_isNotSameAsActivityInstance$0(TranslationManagerTest.java:31)
at android.app.TranslationManagerTest$$ExternalSyntheticLambda1.perform(D8$$SyntheticClass:0)
at androidx.test.core.app.ActivityScenario.lambda$onActivity$2$androidx-test-core-app-ActivityScenario(ActivityScenario.java:794)
at androidx.test.core.app.ActivityScenario$$ExternalSyntheticLambda2.run(D8$$SyntheticClass:0)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:487)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:2420)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
SEVERE: Execute android.app.TranslationManagerTest.translationManager_instance_retrievesSameCapabilities: FAILED
java.lang.NullPointerException: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.Set android.view.translation.TranslationManager.getOnDeviceTranslationCapabilities(int, int)' on a null object reference
@Devashishbasu You can run these tests with same Emulator images locally. I think you can get them from CI's configuration.
The TranslationManager is not always existing on all Android devices, and we need check service existing before we run related tests. The WifiAwareManager is also the same logic.
Thanks.
@MGaetan89 @hoisie Maybe we need to upgrade Android Emulator images to use Google images to test more managers/services.