From 30d5e03e6a4e6119f29caa928a431864821a3c57 Mon Sep 17 00:00:00 2001 From: Ivan Matkov Date: Fri, 24 Jun 2022 18:10:29 +0200 Subject: [PATCH 1/2] Remove extra call of getApplicationContext() --- CHANGELOG.md | 4 ++++ .../com/microsoft/appcenter/ApplicationContextUtils.java | 2 +- .../microsoft/appcenter/ApplicationContextUtilsTest.java | 7 ------- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76dcd9502..8b80b3e0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Version 4.4.5 (Under development) +### App Center + +* **[Fix]** Fix crash when SDK is started from overridden `Application.attachBaseContext`. + ___ ## Version 4.4.4 diff --git a/sdk/appcenter/src/main/java/com/microsoft/appcenter/ApplicationContextUtils.java b/sdk/appcenter/src/main/java/com/microsoft/appcenter/ApplicationContextUtils.java index 3408ee53a..1a0f4afa4 100644 --- a/sdk/appcenter/src/main/java/com/microsoft/appcenter/ApplicationContextUtils.java +++ b/sdk/appcenter/src/main/java/com/microsoft/appcenter/ApplicationContextUtils.java @@ -35,7 +35,7 @@ static Context getApplicationContext(Application application) { return application.createDeviceProtectedStorageContext(); } } - return application.getApplicationContext(); + return application; } /** diff --git a/sdk/appcenter/src/test/java/com/microsoft/appcenter/ApplicationContextUtilsTest.java b/sdk/appcenter/src/test/java/com/microsoft/appcenter/ApplicationContextUtilsTest.java index 2e483f29f..916c73e6a 100644 --- a/sdk/appcenter/src/test/java/com/microsoft/appcenter/ApplicationContextUtilsTest.java +++ b/sdk/appcenter/src/test/java/com/microsoft/appcenter/ApplicationContextUtilsTest.java @@ -39,7 +39,6 @@ public class ApplicationContextUtilsTest { @Before public void setUp() { - when(mApplication.getApplicationContext()).thenReturn(mApplication); when(mApplication.isDeviceProtectedStorage()).thenReturn(false); when(mApplication.createDeviceProtectedStorageContext()).thenReturn(mDeviceProtectedStorageContext); when(mApplication.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); @@ -79,9 +78,6 @@ public void contextOnNewUnlockedDevice() { /* It should be regular context. */ assertEquals(mApplication, ApplicationContextUtils.getApplicationContext(mApplication)); - - /* Verify get application context. */ - verify(mApplication).getApplicationContext(); } @Test @@ -95,9 +91,6 @@ public void contextOnOldDevice() { /* It should be regular context. */ assertEquals(mApplication, ApplicationContextUtils.getApplicationContext(mApplication)); - - /* Verify get application context. */ - verify(mApplication).getApplicationContext(); } @Test From ddf32a3f78083523bf3afa7b9249cf5533808208 Mon Sep 17 00:00:00 2001 From: Ivan Matkov Date: Mon, 27 Jun 2022 10:25:10 +0200 Subject: [PATCH 2/2] Add explicit check to tests --- .../microsoft/appcenter/ApplicationContextUtilsTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sdk/appcenter/src/test/java/com/microsoft/appcenter/ApplicationContextUtilsTest.java b/sdk/appcenter/src/test/java/com/microsoft/appcenter/ApplicationContextUtilsTest.java index 916c73e6a..fae7807ca 100644 --- a/sdk/appcenter/src/test/java/com/microsoft/appcenter/ApplicationContextUtilsTest.java +++ b/sdk/appcenter/src/test/java/com/microsoft/appcenter/ApplicationContextUtilsTest.java @@ -8,6 +8,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.when; @@ -78,6 +79,9 @@ public void contextOnNewUnlockedDevice() { /* It should be regular context. */ assertEquals(mApplication, ApplicationContextUtils.getApplicationContext(mApplication)); + + /* We should use application object directly, without getApplicationContext call. */ + verify(mApplication, never()).getApplicationContext(); } @Test @@ -91,6 +95,9 @@ public void contextOnOldDevice() { /* It should be regular context. */ assertEquals(mApplication, ApplicationContextUtils.getApplicationContext(mApplication)); + + /* We should use application object directly, without getApplicationContext call. */ + verify(mApplication, never()).getApplicationContext(); } @Test