From 8f7edfa108c58e8eb3101e238e349ee9fcdb06a3 Mon Sep 17 00:00:00 2001 From: Doris Ling Date: Thu, 22 Feb 2018 10:39:13 -0800 Subject: [PATCH] Fix NPE in InstantAppButtonsPreferenceController - check for valid install options menu before trying to disable it. Change-Id: Ibe644a506094e66b0f657092a25557f5096d4942 Fixes: 73767192 Test: make RunSettingsRoboTests --- .../appinfo/InstantAppButtonsPreferenceController.java | 7 ++++--- .../appinfo/InstantAppButtonsPreferenceControllerTest.java | 9 +++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/applications/appinfo/InstantAppButtonsPreferenceController.java b/src/com/android/settings/applications/appinfo/InstantAppButtonsPreferenceController.java index dcae5ef506..df64d76b43 100644 --- a/src/com/android/settings/applications/appinfo/InstantAppButtonsPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/InstantAppButtonsPreferenceController.java @@ -112,9 +112,10 @@ public class InstantAppButtonsPreferenceController extends BasePreferenceControl @Override public void onPrepareOptionsMenu(Menu menu) { mInstallMenu = menu.findItem(AppInfoDashboardFragment.INSTALL_INSTANT_APP_MENU); - final Intent appStoreIntent = AppStoreUtil.getAppStoreLink(mContext, mPackageName); - if (appStoreIntent == null) { - mInstallMenu.setEnabled(false); + if (mInstallMenu != null) { + if (AppStoreUtil.getAppStoreLink(mContext, mPackageName) == null) { + mInstallMenu.setEnabled(false); + } } } diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/InstantAppButtonsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/InstantAppButtonsPreferenceControllerTest.java index 935389c10a..24823fe9d5 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/InstantAppButtonsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/InstantAppButtonsPreferenceControllerTest.java @@ -180,6 +180,15 @@ public class InstantAppButtonsPreferenceControllerTest { } @Test + public void onPrepareOptionsMenu_installMenuNotFound_shoulNotCrash() { + final Menu menu = mock(Menu.class); + + mController.onPrepareOptionsMenu(menu); + + // no crash + } + + @Test public void onOptionsItemSelected_shouldOpenAppStore() { final ResolveInfo resolveInfo = mock(ResolveInfo.class); final ActivityInfo activityInfo = mock(ActivityInfo.class); -- 2.11.0