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

Commit 064b21e0 authored by Stanley Wang's avatar Stanley Wang
Browse files

Revert "Fix app uninstalling/stopping possible in screen pinning mode"

This reverts commit 161c3595.

Reason for revert: This solution has a bug.

Change-Id: I925dab9b1a8d50de538a4fc652f722744fe3fadf
parent 161c3595
Loading
Loading
Loading
Loading
+5 −27
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ 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;
@@ -183,10 +182,6 @@ 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();
@@ -197,6 +192,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
            return;
        }
        startListeningToPackageRemove();

        setHasOptionsMenu(true);
    }

@@ -318,8 +314,9 @@ 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?");
            finishActivity(activity);
            activity.finishAndRemoveTask();
            return false;
        }
        return true;
@@ -334,28 +331,14 @@ 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);
            finishActivity(activity);
            activity.finishAndRemoveTask();
            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);
@@ -654,11 +637,6 @@ public class AppInfoDashboardFragment extends DashboardFragment
        getContext().unregisterReceiver(mPackageRemovedReceiver);
    }

    private void finishActivity(Activity activity) {
        mFinishing = true;
        activity.finishAndRemoveTask();
    }

    @VisibleForTesting
    final BroadcastReceiver mPackageRemovedReceiver = new BroadcastReceiver() {
        @Override
+5 −16
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ 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;
@@ -87,8 +86,6 @@ public final class AppInfoDashboardFragmentTest {
    private DevicePolicyManager mDevicePolicyManager;
    @Mock
    private PackageManager mPackageManager;
    @Mock
    private ActivityManager mActivityManager;

    private AppInfoDashboardFragment mFragment;
    private Context mShadowContext;
@@ -96,13 +93,11 @@ public final class AppInfoDashboardFragmentTest {
    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mShadowContext = spy(RuntimeEnvironment.application);
        mShadowContext = 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);
@@ -207,6 +202,7 @@ public final class AppInfoDashboardFragmentTest {
        ShadowAppUtils.addHiddenModule(PACKAGE_NAME);
        ReflectionHelpers.setField(mFragment, "mPackageName", PACKAGE_NAME);


        assertThat(mFragment.ensureDisplayableModule(mActivity)).isFalse();
    }

@@ -218,14 +214,6 @@ 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);
@@ -279,7 +267,8 @@ 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();