Loading src/com/android/settings/password/ChooseLockGeneric.java +11 −4 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ import com.android.settings.Utils; import com.android.settings.biometrics.BiometricEnrollBase; import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.search.SearchFeatureProvider; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import com.android.settingslib.RestrictedPreference; Loading Loading @@ -132,10 +133,14 @@ public class ChooseLockGeneric extends SettingsActivity { @VisibleForTesting static final int CONFIRM_EXISTING_REQUEST = 100; private static final int ENABLE_ENCRYPTION_REQUEST = 101; private static final int CHOOSE_LOCK_REQUEST = 102; private static final int CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST = 103; private static final int SKIP_FINGERPRINT_REQUEST = 104; @VisibleForTesting static final int ENABLE_ENCRYPTION_REQUEST = 101; @VisibleForTesting static final int CHOOSE_LOCK_REQUEST = 102; @VisibleForTesting static final int CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST = 103; @VisibleForTesting static final int SKIP_FINGERPRINT_REQUEST = 104; private ChooseLockSettingsHelper mChooseLockSettingsHelper; private DevicePolicyManager mDPM; Loading Loading @@ -401,6 +406,8 @@ public class ChooseLockGeneric extends SettingsActivity { resultCode == RESULT_FINISHED ? RESULT_OK : resultCode, data); finish(); } } else if (requestCode == SearchFeatureProvider.REQUEST_CODE) { return; } else { getActivity().setResult(Activity.RESULT_CANCELED); finish(); Loading src/com/android/settings/search/SearchFeatureProvider.java +2 −1 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import com.android.settingslib.search.SearchIndexableResources; public interface SearchFeatureProvider { Intent SEARCH_UI_INTENT = new Intent("com.android.settings.action.SETTINGS_SEARCH"); int REQUEST_CODE = 0; /** * Ensures the caller has necessary privilege to launch search result page. Loading Loading @@ -65,7 +66,7 @@ public interface SearchFeatureProvider { FeatureFactory.getFactory( activity.getApplicationContext()).getSlicesFeatureProvider() .indexSliceDataAsync(activity.getApplicationContext()); activity.startActivityForResult(intent, 0 /* requestCode */); activity.startActivityForResult(intent, REQUEST_CODE); }); } } tests/robotests/src/com/android/settings/password/ChooseLockGenericTest.java +75 −17 Original line number Diff line number Diff line Loading @@ -16,25 +16,32 @@ package com.android.settings.password; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.provider.Settings.Global; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import com.android.settings.biometrics.BiometricEnrollBase; import com.android.settings.password.ChooseLockGeneric.ChooseLockGenericFragment; import com.android.settings.search.SearchFeatureProvider; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowResources; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RuntimeEnvironment; Loading @@ -43,6 +50,20 @@ import org.robolectric.annotation.Config; @RunWith(SettingsRobolectricTestRunner.class) public class ChooseLockGenericTest { private Context mContext; private ChooseLockGenericFragment mFragment; private FragmentActivity mActivity; @Before public void setUp() { mContext = RuntimeEnvironment.application; mFragment = spy(new ChooseLockGenericFragment()); mActivity = mock(FragmentActivity.class); when(mFragment.getActivity()).thenReturn(mActivity); when(mFragment.getFragmentManager()).thenReturn(mock(FragmentManager.class)); doNothing().when(mFragment).startActivity(any(Intent.class)); } @After public void tearDown() { Global.putInt(RuntimeEnvironment.application.getContentResolver(), Loading @@ -52,28 +73,65 @@ public class ChooseLockGenericTest { @Test @Config(shadows = SettingsShadowResources.SettingsShadowTheme.class) public void onCreate_deviceNotProvisioned_shouldFinishActivity() { final Context context = RuntimeEnvironment.application; Global.putInt(context.getContentResolver(), Global.DEVICE_PROVISIONED, 0); final FragmentActivity activity = mock(FragmentActivity.class); when(activity.getContentResolver()).thenReturn(context.getContentResolver()); when(activity.getTheme()).thenReturn(context.getTheme()); final ChooseLockGenericFragment fragment = spy(new ChooseLockGenericFragment()); when(fragment.getActivity()).thenReturn(activity); when(fragment.getArguments()).thenReturn(Bundle.EMPTY); fragment.onCreate(Bundle.EMPTY); verify(activity).finish(); Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 0); when(mActivity.getContentResolver()).thenReturn(mContext.getContentResolver()); when(mActivity.getTheme()).thenReturn(mContext.getTheme()); when(mFragment.getArguments()).thenReturn(Bundle.EMPTY); mFragment.onCreate(Bundle.EMPTY); verify(mActivity).finish(); } @Test public void onActivityResult_nullIntentData_shouldNotCrash() { ChooseLockGenericFragment fragment = spy(new ChooseLockGenericFragment()); doNothing().when(fragment).updatePreferencesOrFinish(anyBoolean()); doNothing().when(mFragment).updatePreferencesOrFinish(anyBoolean()); fragment.onActivityResult( fragment.CONFIRM_EXISTING_REQUEST, Activity.RESULT_OK, null /* data */); mFragment.onActivityResult( ChooseLockGenericFragment.CONFIRM_EXISTING_REQUEST, Activity.RESULT_OK, null /* data */); // no crash } @Test public void onActivityResult_requestcode0_shouldNotFinish() { mFragment.onActivityResult( SearchFeatureProvider.REQUEST_CODE, Activity.RESULT_OK, null /* data */); verify(mFragment, never()).finish(); } @Test public void onActivityResult_requestcode101_shouldFinish() { mFragment.onActivityResult( ChooseLockGenericFragment.ENABLE_ENCRYPTION_REQUEST, Activity.RESULT_OK, null /* data */); verify(mFragment).finish(); } @Test public void onActivityResult_requestcode102_shouldFinish() { mFragment.onActivityResult( ChooseLockGenericFragment.CHOOSE_LOCK_REQUEST, Activity.RESULT_OK, null /* data */); verify(mFragment).finish(); } @Test public void onActivityResult_requestcode103_shouldFinish() { mFragment.onActivityResult( ChooseLockGenericFragment.CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST, BiometricEnrollBase.RESULT_FINISHED, null /* data */); verify(mFragment).finish(); } @Test public void onActivityResult_requestcode104_shouldFinish() { mFragment.onActivityResult( ChooseLockGenericFragment.SKIP_FINGERPRINT_REQUEST, Activity.RESULT_OK, null /* data */); verify(mFragment).finish(); } } Loading
src/com/android/settings/password/ChooseLockGeneric.java +11 −4 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ import com.android.settings.Utils; import com.android.settings.biometrics.BiometricEnrollBase; import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.search.SearchFeatureProvider; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import com.android.settingslib.RestrictedPreference; Loading Loading @@ -132,10 +133,14 @@ public class ChooseLockGeneric extends SettingsActivity { @VisibleForTesting static final int CONFIRM_EXISTING_REQUEST = 100; private static final int ENABLE_ENCRYPTION_REQUEST = 101; private static final int CHOOSE_LOCK_REQUEST = 102; private static final int CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST = 103; private static final int SKIP_FINGERPRINT_REQUEST = 104; @VisibleForTesting static final int ENABLE_ENCRYPTION_REQUEST = 101; @VisibleForTesting static final int CHOOSE_LOCK_REQUEST = 102; @VisibleForTesting static final int CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST = 103; @VisibleForTesting static final int SKIP_FINGERPRINT_REQUEST = 104; private ChooseLockSettingsHelper mChooseLockSettingsHelper; private DevicePolicyManager mDPM; Loading Loading @@ -401,6 +406,8 @@ public class ChooseLockGeneric extends SettingsActivity { resultCode == RESULT_FINISHED ? RESULT_OK : resultCode, data); finish(); } } else if (requestCode == SearchFeatureProvider.REQUEST_CODE) { return; } else { getActivity().setResult(Activity.RESULT_CANCELED); finish(); Loading
src/com/android/settings/search/SearchFeatureProvider.java +2 −1 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import com.android.settingslib.search.SearchIndexableResources; public interface SearchFeatureProvider { Intent SEARCH_UI_INTENT = new Intent("com.android.settings.action.SETTINGS_SEARCH"); int REQUEST_CODE = 0; /** * Ensures the caller has necessary privilege to launch search result page. Loading Loading @@ -65,7 +66,7 @@ public interface SearchFeatureProvider { FeatureFactory.getFactory( activity.getApplicationContext()).getSlicesFeatureProvider() .indexSliceDataAsync(activity.getApplicationContext()); activity.startActivityForResult(intent, 0 /* requestCode */); activity.startActivityForResult(intent, REQUEST_CODE); }); } }
tests/robotests/src/com/android/settings/password/ChooseLockGenericTest.java +75 −17 Original line number Diff line number Diff line Loading @@ -16,25 +16,32 @@ package com.android.settings.password; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.provider.Settings.Global; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import com.android.settings.biometrics.BiometricEnrollBase; import com.android.settings.password.ChooseLockGeneric.ChooseLockGenericFragment; import com.android.settings.search.SearchFeatureProvider; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowResources; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RuntimeEnvironment; Loading @@ -43,6 +50,20 @@ import org.robolectric.annotation.Config; @RunWith(SettingsRobolectricTestRunner.class) public class ChooseLockGenericTest { private Context mContext; private ChooseLockGenericFragment mFragment; private FragmentActivity mActivity; @Before public void setUp() { mContext = RuntimeEnvironment.application; mFragment = spy(new ChooseLockGenericFragment()); mActivity = mock(FragmentActivity.class); when(mFragment.getActivity()).thenReturn(mActivity); when(mFragment.getFragmentManager()).thenReturn(mock(FragmentManager.class)); doNothing().when(mFragment).startActivity(any(Intent.class)); } @After public void tearDown() { Global.putInt(RuntimeEnvironment.application.getContentResolver(), Loading @@ -52,28 +73,65 @@ public class ChooseLockGenericTest { @Test @Config(shadows = SettingsShadowResources.SettingsShadowTheme.class) public void onCreate_deviceNotProvisioned_shouldFinishActivity() { final Context context = RuntimeEnvironment.application; Global.putInt(context.getContentResolver(), Global.DEVICE_PROVISIONED, 0); final FragmentActivity activity = mock(FragmentActivity.class); when(activity.getContentResolver()).thenReturn(context.getContentResolver()); when(activity.getTheme()).thenReturn(context.getTheme()); final ChooseLockGenericFragment fragment = spy(new ChooseLockGenericFragment()); when(fragment.getActivity()).thenReturn(activity); when(fragment.getArguments()).thenReturn(Bundle.EMPTY); fragment.onCreate(Bundle.EMPTY); verify(activity).finish(); Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 0); when(mActivity.getContentResolver()).thenReturn(mContext.getContentResolver()); when(mActivity.getTheme()).thenReturn(mContext.getTheme()); when(mFragment.getArguments()).thenReturn(Bundle.EMPTY); mFragment.onCreate(Bundle.EMPTY); verify(mActivity).finish(); } @Test public void onActivityResult_nullIntentData_shouldNotCrash() { ChooseLockGenericFragment fragment = spy(new ChooseLockGenericFragment()); doNothing().when(fragment).updatePreferencesOrFinish(anyBoolean()); doNothing().when(mFragment).updatePreferencesOrFinish(anyBoolean()); fragment.onActivityResult( fragment.CONFIRM_EXISTING_REQUEST, Activity.RESULT_OK, null /* data */); mFragment.onActivityResult( ChooseLockGenericFragment.CONFIRM_EXISTING_REQUEST, Activity.RESULT_OK, null /* data */); // no crash } @Test public void onActivityResult_requestcode0_shouldNotFinish() { mFragment.onActivityResult( SearchFeatureProvider.REQUEST_CODE, Activity.RESULT_OK, null /* data */); verify(mFragment, never()).finish(); } @Test public void onActivityResult_requestcode101_shouldFinish() { mFragment.onActivityResult( ChooseLockGenericFragment.ENABLE_ENCRYPTION_REQUEST, Activity.RESULT_OK, null /* data */); verify(mFragment).finish(); } @Test public void onActivityResult_requestcode102_shouldFinish() { mFragment.onActivityResult( ChooseLockGenericFragment.CHOOSE_LOCK_REQUEST, Activity.RESULT_OK, null /* data */); verify(mFragment).finish(); } @Test public void onActivityResult_requestcode103_shouldFinish() { mFragment.onActivityResult( ChooseLockGenericFragment.CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST, BiometricEnrollBase.RESULT_FINISHED, null /* data */); verify(mFragment).finish(); } @Test public void onActivityResult_requestcode104_shouldFinish() { mFragment.onActivityResult( ChooseLockGenericFragment.SKIP_FINGERPRINT_REQUEST, Activity.RESULT_OK, null /* data */); verify(mFragment).finish(); } }