Fix NPE in QSSecurityFooterUtils

Bug: 261424600
Test: Manual
Change-Id: I28a14ab9798d66c43d6d9d08259f6a6e80ea5c5d
This commit is contained in:
Jordan Demeulenaere
2022-12-05 15:50:50 +01:00
parent 120867a3c9
commit 8b0efe7d89
2 changed files with 9 additions and 5 deletions

View File

@@ -247,7 +247,7 @@ public class QSSecurityFooterUtils implements DialogInterface.OnClickListener {
Icon icon;
ContentDescription contentDescription = null;
if (isParentalControlsEnabled) {
if (isParentalControlsEnabled && securityModel.getDeviceAdminIcon() != null) {
icon = new Icon.Loaded(securityModel.getDeviceAdminIcon(), contentDescription);
} else if (vpnName != null || vpnNameWorkProfile != null) {
if (securityModel.isVpnBranded()) {

View File

@@ -703,28 +703,32 @@ public class QSSecurityFooterTest extends SysuiTestCase {
public void testParentalControls() {
// Make sure the security footer is visible, so that the images are updated.
when(mSecurityController.isProfileOwnerOfOrganizationOwnedDevice()).thenReturn(true);
when(mSecurityController.isParentalControlsEnabled()).thenReturn(true);
// We use the default icon when there is no admin icon.
when(mSecurityController.getIcon(any())).thenReturn(null);
mFooter.refreshState();
TestableLooper.get(this).processAllMessages();
assertEquals(mContext.getString(R.string.quick_settings_disclosure_parental_controls),
mFooterText.getText());
assertEquals(DEFAULT_ICON_ID, mPrimaryFooterIcon.getLastImageResource());
Drawable testDrawable = new VectorDrawable();
when(mSecurityController.getIcon(any())).thenReturn(testDrawable);
assertNotNull(mSecurityController.getIcon(null));
mFooter.refreshState();
TestableLooper.get(this).processAllMessages();
assertEquals(mContext.getString(R.string.quick_settings_disclosure_parental_controls),
mFooterText.getText());
assertEquals(View.VISIBLE, mPrimaryFooterIcon.getVisibility());
assertEquals(testDrawable, mPrimaryFooterIcon.getDrawable());
// Ensure the primary icon is back to default after parental controls are gone
when(mSecurityController.isParentalControlsEnabled()).thenReturn(false);
mFooter.refreshState();
TestableLooper.get(this).processAllMessages();
assertEquals(DEFAULT_ICON_ID, mPrimaryFooterIcon.getLastImageResource());
}