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

Commit 20ea92f0 authored by tiansiming's avatar tiansiming Committed by Sam Mortimer
Browse files

Fix NPE crash in UsageAccessDetails

mPackageInfo will be null in RefreshUI method in UsageAccessDetails.java

Bug:https://issuetracker.google.com/issues/65872768


Test:As explained in the link above

Change-Id: I8bd4b822cfe5d8a3347ca7f5886605cbdfb9b8b6
Signed-off-by: default avatartiansiming <tiansiming@xiaomi.com>
parent 23e56f1c
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -214,7 +214,9 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment

    @Override
    public void onPackageListChanged() {
        refreshUi();
        if (!refreshUi()) {
            setIntentAndFinish(true, true);
        }
    }

    public static void startAppInfoFragment(Class<?> fragment, int titleRes,
+3 −0
Original line number Diff line number Diff line
@@ -137,6 +137,9 @@ public class UsageAccessDetails extends AppInfoWithHeader implements OnPreferenc

    @Override
    protected boolean refreshUi() {
        if (mPackageInfo == null) {
            return false;
        }
        mUsageState = mUsageBridge.getUsageInfo(mPackageName,
                mPackageInfo.applicationInfo.uid);

+8 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.settings.applications;

import android.content.Context;
import android.os.RemoteException;

import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.SettingsRobolectricTestRunner;
@@ -65,4 +66,11 @@ public class UsageAccessDetailsTest {
        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_DENY), eq("app"));
    }

    @Test
    public void refreshUi_nullPackageInfo_shouldNotCrash() throws RemoteException {
        mFragment.mPackageInfo = null;
        mFragment.refreshUi();
        // should not crash
    }
}