Merge "Unregister broadcast receiver from AppInfoDashboardFragment."

This commit is contained in:
TreeHugger Robot
2018-02-03 02:34:26 +00:00
committed by Android (Google) Code Review
2 changed files with 27 additions and 2 deletions

View File

@@ -174,6 +174,12 @@ public class AppInfoDashboardFragment extends DashboardFragment
setHasOptionsMenu(true);
}
@Override
public void onDestroy() {
stopListeningToPackageRemove();
super.onDestroy();
}
@Override
public int getMetricsCategory() {
return MetricsEvent.APPLICATIONS_INSTALLED_APP_DETAILS;
@@ -737,7 +743,8 @@ public class AppInfoDashboardFragment extends DashboardFragment
}
}
private void startListeningToPackageRemove() {
@VisibleForTesting
void startListeningToPackageRemove() {
if (mListeningToPackageRemove) {
return;
}
@@ -755,7 +762,8 @@ public class AppInfoDashboardFragment extends DashboardFragment
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();

View File

@@ -18,6 +18,7 @@ package com.android.settings.applications.appinfo;
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.spy;
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.settings.wrapper.DevicePolicyManagerWrapper;
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 @@ public final class AppInfoDashboardFragmentTest {
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);
}
}