diff --git a/src/com/android/settings/applications/UsageAccessDetails.java b/src/com/android/settings/applications/UsageAccessDetails.java index 253ddfdbbba..c10fb55c9ec 100644 --- a/src/com/android/settings/applications/UsageAccessDetails.java +++ b/src/com/android/settings/applications/UsageAccessDetails.java @@ -137,9 +137,13 @@ public class UsageAccessDetails extends AppInfoWithHeader implements OnPreferenc @Override protected boolean refreshUi() { - if (mPackageInfo == null) { + retrieveAppEntry(); + if (mAppEntry == null) { return false; } + if (mPackageInfo == null) { + return false; // onCreate must have failed, make sure to exit + } mUsageState = mUsageBridge.getUsageInfo(mPackageName, mPackageInfo.applicationInfo.uid); diff --git a/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java b/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java index 07acb13de02..1a3aeb5b981 100644 --- a/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java +++ b/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java @@ -16,17 +16,20 @@ package com.android.settings.applications; +import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import android.content.Context; -import android.os.RemoteException; +import android.os.Bundle; import com.android.internal.logging.nano.MetricsProto; -import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.testutils.FakeFeatureFactory; +import com.android.settings.testutils.SettingsRobolectricTestRunner; +import com.android.settingslib.applications.ApplicationsState; import org.junit.Before; import org.junit.Test; @@ -68,9 +71,12 @@ public class UsageAccessDetailsTest { } @Test - public void refreshUi_nullPackageInfo_shouldNotCrash() throws RemoteException { - mFragment.mPackageInfo = null; - mFragment.refreshUi(); - // should not crash + public void refreshUi_hasNoAppEntry_shouldReturnFalse() { + mFragment.mState = mock(ApplicationsState.class); + mFragment.setArguments(new Bundle()); + + assertThat(mFragment.refreshUi()).isFalse(); + assertThat(mFragment.mAppEntry).isNull(); + assertThat(mFragment.mPackageInfo).isNull(); } }