Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f6b5dad7 authored by Doris Ling's avatar Doris Ling
Browse files

Unregister broadcast receiver from AppInfoDashboardFragment.

- onDestroy() call is missing from the fragment. Added it to unregister
the receiver that listens to the package remover.

Change-Id: I27c67a19e11824116849b769f0a7951b80c40f84
Fixes: 72879457
Test: make RunSettingsRoboTests
parent e07e8cc4
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -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();
+17 −0
Original line number Diff line number Diff line
@@ -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);
    }

}