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

Commit 39de7aed authored by tiansiming's avatar tiansiming
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 939265d6
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
    }
}