Loading src/com/android/settings/accounts/AccountDashboardFragment.java +21 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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() { Loading Loading @@ -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 Loading tests/robotests/src/com/android/settings/accounts/AccountDashboardFragmentTest.java +34 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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 Loading @@ -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(); } } Loading
src/com/android/settings/accounts/AccountDashboardFragment.java +21 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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() { Loading Loading @@ -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 Loading
tests/robotests/src/com/android/settings/accounts/AccountDashboardFragmentTest.java +34 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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 Loading @@ -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(); } }