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

Commit f88b71f4 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Prevent accounts page directly opening in screen pinning mode"

parents a2be917d f3242dab
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -15,11 +15,17 @@
 */
package com.android.settings.accounts;

import static android.app.ActivityManager.LOCK_TASK_MODE_PINNED;
import static android.provider.Settings.EXTRA_AUTHORITIES;

import android.app.ActivityManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
import android.provider.SearchIndexableResource;
import android.util.Log;

import androidx.annotation.VisibleForTesting;

import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
@@ -40,6 +46,14 @@ public class AccountDashboardFragment extends DashboardFragment {

    private static final String TAG = "AccountDashboardFrag";

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        if (isLockTaskModePinned()) {
            Log.w(TAG, "Devices lock task mode pinned.");
            finish();
        }
    }

    @Override
    public int getMetricsCategory() {
@@ -83,6 +97,13 @@ public class AccountDashboardFragment extends DashboardFragment {
        return controllers;
    }

    @VisibleForTesting
    boolean isLockTaskModePinned() {
        final ActivityManager activityManager =
                getContext().getSystemService(ActivityManager.class);
        return activityManager.getLockTaskModeState() == LOCK_TASK_MODE_PINNED;
    }

    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider() {
                @Override
+34 −0
Original line number Diff line number Diff line
@@ -15,8 +15,16 @@
 */
package com.android.settings.accounts;

import static android.app.ActivityManager.LOCK_TASK_MODE_NONE;
import static android.app.ActivityManager.LOCK_TASK_MODE_PINNED;

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

import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;

import android.app.ActivityManager;
import android.content.Context;
import android.provider.SearchIndexableResource;

import com.android.settingslib.drawer.CategoryKey;
@@ -26,6 +34,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowActivityManager;

import java.util.List;

@@ -33,10 +43,12 @@ import java.util.List;
public class AccountDashboardFragmentTest {

    private AccountDashboardFragment mFragment;
    private Context mContext;

    @Before
    public void setUp() {
        mFragment = new AccountDashboardFragment();
        mContext = RuntimeEnvironment.application;
    }

    @Test
@@ -53,4 +65,26 @@ public class AccountDashboardFragmentTest {
        assertThat(indexRes).isNotNull();
        assertThat(indexRes.get(0).xmlResId).isEqualTo(mFragment.getPreferenceScreenResId());
    }

    @Test
    public void isLockTaskModePinned_disableLockTaskMode_shouldReturnFalse() {
        final AccountDashboardFragment fragment = spy(mFragment);
        doReturn(mContext).when(fragment).getContext();
        final ShadowActivityManager activityManager =
                Shadow.extract(mContext.getSystemService(ActivityManager.class));
        activityManager.setLockTaskModeState(LOCK_TASK_MODE_NONE);

        assertThat(fragment.isLockTaskModePinned()).isFalse();
    }

    @Test
    public void isLockTaskModePinned_hasTaskPinned_shouldReturnTrue() {
        final AccountDashboardFragment fragment = spy(mFragment);
        doReturn(mContext).when(fragment).getContext();
        final ShadowActivityManager activityManager =
                Shadow.extract(mContext.getSystemService(ActivityManager.class));
        activityManager.setLockTaskModeState(LOCK_TASK_MODE_PINNED);

        assertThat(fragment.isLockTaskModePinned()).isTrue();
    }
}