Loading src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +27 −5 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settings.applications.appinfo; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import android.app.Activity; import android.app.ActivityManager; import android.app.admin.DevicePolicyManager; import android.app.settings.SettingsEnums; import android.content.BroadcastReceiver; Loading Loading @@ -182,6 +183,10 @@ public class AppInfoDashboardFragment extends DashboardFragment super.onCreate(icicle); mFinishing = false; final Activity activity = getActivity(); if (isLockTaskModePinned(activity)) { finishActivity(activity); return; } mDpm = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE); mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE); mPm = activity.getPackageManager(); Loading @@ -192,7 +197,6 @@ public class AppInfoDashboardFragment extends DashboardFragment return; } startListeningToPackageRemove(); setHasOptionsMenu(true); } Loading Loading @@ -314,9 +318,8 @@ public class AppInfoDashboardFragment extends DashboardFragment @VisibleForTesting boolean ensurePackageInfoAvailable(Activity activity) { if (mPackageInfo == null) { mFinishing = true; Log.w(TAG, "Package info not available. Is this package already uninstalled?"); activity.finishAndRemoveTask(); finishActivity(activity); return false; } return true; Loading @@ -331,14 +334,28 @@ public class AppInfoDashboardFragment extends DashboardFragment @VisibleForTesting boolean ensureDisplayableModule(Activity activity) { if (AppUtils.isHiddenSystemModule(activity.getApplicationContext(), mPackageName)) { mFinishing = true; Log.w(TAG, "Package is hidden module, exiting: " + mPackageName); activity.finishAndRemoveTask(); finishActivity(activity); return false; } return true; } /** * Check the state of device lock task mode. * * @return true if the device lock task mode pinned. */ @VisibleForTesting boolean isLockTaskModePinned(Activity activity) { ActivityManager activityManager = activity.getSystemService(ActivityManager.class); if (activityManager.getLockTaskModeState() == ActivityManager.LOCK_TASK_MODE_PINNED) { Log.w(TAG, "Device lock task mode pinned."); return true; } return false; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); Loading Loading @@ -637,6 +654,11 @@ public class AppInfoDashboardFragment extends DashboardFragment getContext().unregisterReceiver(mPackageRemovedReceiver); } private void finishActivity(Activity activity) { mFinishing = true; activity.finishAndRemoveTask(); } @VisibleForTesting final BroadcastReceiver mPackageRemovedReceiver = new BroadcastReceiver() { @Override Loading tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java +16 −5 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.ActivityManager; import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.Intent; Loading Loading @@ -86,6 +87,8 @@ public final class AppInfoDashboardFragmentTest { private DevicePolicyManager mDevicePolicyManager; @Mock private PackageManager mPackageManager; @Mock private ActivityManager mActivityManager; private AppInfoDashboardFragment mFragment; private Context mShadowContext; Loading @@ -93,11 +96,13 @@ public final class AppInfoDashboardFragmentTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); mShadowContext = RuntimeEnvironment.application; mShadowContext = spy(RuntimeEnvironment.application); mFragment = spy(new AppInfoDashboardFragment()); doReturn(mActivity).when(mFragment).getActivity(); doReturn(mShadowContext).when(mFragment).getContext(); doReturn(mPackageManager).when(mActivity).getPackageManager(); doReturn(mShadowContext).when(mActivity).getApplicationContext(); doReturn(mActivityManager).when(mActivity).getSystemService(ActivityManager.class); when(mUserManager.isAdminUser()).thenReturn(true); ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager); Loading Loading @@ -202,7 +207,6 @@ public final class AppInfoDashboardFragmentTest { ShadowAppUtils.addHiddenModule(PACKAGE_NAME); ReflectionHelpers.setField(mFragment, "mPackageName", PACKAGE_NAME); assertThat(mFragment.ensureDisplayableModule(mActivity)).isFalse(); } Loading @@ -214,6 +218,14 @@ public final class AppInfoDashboardFragmentTest { assertThat(mFragment.ensureDisplayableModule(mActivity)).isTrue(); } @Test public void isLockTaskModePinned_pinned_shouldReturnTrue() { doReturn(ActivityManager.LOCK_TASK_MODE_PINNED).when( mActivityManager).getLockTaskModeState(); assertThat(mFragment.isLockTaskModePinned(mActivity)).isTrue(); } @Test public void createPreference_hasNoPackageInfo_shouldSkip() { ReflectionHelpers.setField(mFragment, "mPackageInfo", null); Loading Loading @@ -267,8 +279,7 @@ public final class AppInfoDashboardFragmentTest { public void onActivityResult_uninstalledUpdates_shouldInvalidateOptionsMenu() { doReturn(true).when(mFragment).refreshUi(); mFragment .onActivityResult(AppInfoDashboardFragment.REQUEST_UNINSTALL, 0, mFragment.onActivityResult(AppInfoDashboardFragment.REQUEST_UNINSTALL, 0, mock(Intent.class)); verify(mActivity).invalidateOptionsMenu(); Loading Loading
src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +27 −5 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settings.applications.appinfo; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import android.app.Activity; import android.app.ActivityManager; import android.app.admin.DevicePolicyManager; import android.app.settings.SettingsEnums; import android.content.BroadcastReceiver; Loading Loading @@ -182,6 +183,10 @@ public class AppInfoDashboardFragment extends DashboardFragment super.onCreate(icicle); mFinishing = false; final Activity activity = getActivity(); if (isLockTaskModePinned(activity)) { finishActivity(activity); return; } mDpm = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE); mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE); mPm = activity.getPackageManager(); Loading @@ -192,7 +197,6 @@ public class AppInfoDashboardFragment extends DashboardFragment return; } startListeningToPackageRemove(); setHasOptionsMenu(true); } Loading Loading @@ -314,9 +318,8 @@ public class AppInfoDashboardFragment extends DashboardFragment @VisibleForTesting boolean ensurePackageInfoAvailable(Activity activity) { if (mPackageInfo == null) { mFinishing = true; Log.w(TAG, "Package info not available. Is this package already uninstalled?"); activity.finishAndRemoveTask(); finishActivity(activity); return false; } return true; Loading @@ -331,14 +334,28 @@ public class AppInfoDashboardFragment extends DashboardFragment @VisibleForTesting boolean ensureDisplayableModule(Activity activity) { if (AppUtils.isHiddenSystemModule(activity.getApplicationContext(), mPackageName)) { mFinishing = true; Log.w(TAG, "Package is hidden module, exiting: " + mPackageName); activity.finishAndRemoveTask(); finishActivity(activity); return false; } return true; } /** * Check the state of device lock task mode. * * @return true if the device lock task mode pinned. */ @VisibleForTesting boolean isLockTaskModePinned(Activity activity) { ActivityManager activityManager = activity.getSystemService(ActivityManager.class); if (activityManager.getLockTaskModeState() == ActivityManager.LOCK_TASK_MODE_PINNED) { Log.w(TAG, "Device lock task mode pinned."); return true; } return false; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); Loading Loading @@ -637,6 +654,11 @@ public class AppInfoDashboardFragment extends DashboardFragment getContext().unregisterReceiver(mPackageRemovedReceiver); } private void finishActivity(Activity activity) { mFinishing = true; activity.finishAndRemoveTask(); } @VisibleForTesting final BroadcastReceiver mPackageRemovedReceiver = new BroadcastReceiver() { @Override Loading
tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java +16 −5 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.ActivityManager; import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.Intent; Loading Loading @@ -86,6 +87,8 @@ public final class AppInfoDashboardFragmentTest { private DevicePolicyManager mDevicePolicyManager; @Mock private PackageManager mPackageManager; @Mock private ActivityManager mActivityManager; private AppInfoDashboardFragment mFragment; private Context mShadowContext; Loading @@ -93,11 +96,13 @@ public final class AppInfoDashboardFragmentTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); mShadowContext = RuntimeEnvironment.application; mShadowContext = spy(RuntimeEnvironment.application); mFragment = spy(new AppInfoDashboardFragment()); doReturn(mActivity).when(mFragment).getActivity(); doReturn(mShadowContext).when(mFragment).getContext(); doReturn(mPackageManager).when(mActivity).getPackageManager(); doReturn(mShadowContext).when(mActivity).getApplicationContext(); doReturn(mActivityManager).when(mActivity).getSystemService(ActivityManager.class); when(mUserManager.isAdminUser()).thenReturn(true); ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager); Loading Loading @@ -202,7 +207,6 @@ public final class AppInfoDashboardFragmentTest { ShadowAppUtils.addHiddenModule(PACKAGE_NAME); ReflectionHelpers.setField(mFragment, "mPackageName", PACKAGE_NAME); assertThat(mFragment.ensureDisplayableModule(mActivity)).isFalse(); } Loading @@ -214,6 +218,14 @@ public final class AppInfoDashboardFragmentTest { assertThat(mFragment.ensureDisplayableModule(mActivity)).isTrue(); } @Test public void isLockTaskModePinned_pinned_shouldReturnTrue() { doReturn(ActivityManager.LOCK_TASK_MODE_PINNED).when( mActivityManager).getLockTaskModeState(); assertThat(mFragment.isLockTaskModePinned(mActivity)).isTrue(); } @Test public void createPreference_hasNoPackageInfo_shouldSkip() { ReflectionHelpers.setField(mFragment, "mPackageInfo", null); Loading Loading @@ -267,8 +279,7 @@ public final class AppInfoDashboardFragmentTest { public void onActivityResult_uninstalledUpdates_shouldInvalidateOptionsMenu() { doReturn(true).when(mFragment).refreshUi(); mFragment .onActivityResult(AppInfoDashboardFragment.REQUEST_UNINSTALL, 0, mFragment.onActivityResult(AppInfoDashboardFragment.REQUEST_UNINSTALL, 0, mock(Intent.class)); verify(mActivity).invalidateOptionsMenu(); Loading