Merge "Unregister broadcast receiver from AppInfoDashboardFragment."
diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
index 7cc5d1a..5790d34 100755
--- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
+++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
@@ -175,6 +175,12 @@
}
@Override
+ public void onDestroy() {
+ stopListeningToPackageRemove();
+ super.onDestroy();
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsEvent.APPLICATIONS_INSTALLED_APP_DETAILS;
}
@@ -737,7 +743,8 @@
}
}
- private void startListeningToPackageRemove() {
+ @VisibleForTesting
+ void startListeningToPackageRemove() {
if (mListeningToPackageRemove) {
return;
}
@@ -755,7 +762,8 @@
getContext().unregisterReceiver(mPackageRemovedReceiver);
}
- private final BroadcastReceiver mPackageRemovedReceiver = new BroadcastReceiver() {
+ @VisibleForTesting
+ final BroadcastReceiver mPackageRemovedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String packageName = intent.getData().getSchemeSpecificPart();
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
index fabf9ae..b7e414c 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
@@ -27,6 +28,7 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
@@ -42,6 +44,7 @@
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
import com.android.settingslib.applications.instantapps.InstantAppDataProvider;
+import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.Before;
import org.junit.Test;
@@ -255,4 +258,18 @@
assertThat(mFragment.getNumberOfUserWithPackageInstalled(packageName)).isEqualTo(1);
}
+
+ @Test
+ public void onDestroy_shouldUnregisterReceiver() {
+ final Context context = mock(Context.class);
+ doReturn(context).when(mFragment).getContext();
+ ReflectionHelpers.setField(mFragment, "mLifecycle", mock(Lifecycle.class));
+ ReflectionHelpers.setField(mFragment, "mCheckedForLoaderManager", true);
+ mFragment.startListeningToPackageRemove();
+
+ mFragment.onDestroy();
+
+ verify(context).unregisterReceiver(mFragment.mPackageRemovedReceiver);
+ }
+
}