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

Commit e4b3b969 authored by Yanting Yang's avatar Yanting Yang
Browse files

Fix NPE of AppVersionPreferenceController

Add null check for the package info before getting the version name.

Fixes: 168333280
Test: robotests & manual
Change-Id: If2e3d220c520d30e932478836ee2ea89f936d55c
parent a922c902
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.settings.applications.appinfo;

import android.content.Context;
import android.content.pm.PackageInfo;
import android.text.BidiFormatter;

import com.android.settings.R;
@@ -29,7 +30,13 @@ public class AppVersionPreferenceController extends AppInfoPreferenceControllerB

    @Override
    public CharSequence getSummary() {
        // TODO(b/168333280): Review the null case in detail since this is just a quick
        // workaround to fix NPE.
        final PackageInfo packageInfo = mParent.getPackageInfo();
        if (packageInfo == null) {
            return null;
        }
        return mContext.getString(R.string.version_text,
                BidiFormatter.getInstance().unicodeWrap(mParent.getPackageInfo().versionName));
                BidiFormatter.getInstance().unicodeWrap(packageInfo.versionName));
    }
}
+11 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.settings.applications.appinfo;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -62,4 +64,13 @@ public class AppVersionPreferenceControllerTest {

        verify(mPreference).setSummary("version test1234");
    }

    @Test
    public void updateState_packageInfoNull_shouldNotCrash() {
        when(mFragment.getPackageInfo()).thenReturn(null);

        mController.updateState(mPreference);

        assertThat(mController.getSummary()).isNull();
    }
}