Close searchActivity doesn't go back to previous activity
When requestCode is 0, we will not finish activity. Change-Id: Ib630951739031b05c83efe189875a4a41c8e51ec Fixes: 113372155 Test: make RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.password"
This commit is contained in:
@@ -63,6 +63,7 @@ import com.android.settings.Utils;
|
|||||||
import com.android.settings.biometrics.BiometricEnrollBase;
|
import com.android.settings.biometrics.BiometricEnrollBase;
|
||||||
import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor;
|
import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor;
|
||||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||||
|
import com.android.settings.search.SearchFeatureProvider;
|
||||||
import com.android.settingslib.RestrictedLockUtils;
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||||
import com.android.settingslib.RestrictedPreference;
|
import com.android.settingslib.RestrictedPreference;
|
||||||
@@ -132,10 +133,14 @@ public class ChooseLockGeneric extends SettingsActivity {
|
|||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static final int CONFIRM_EXISTING_REQUEST = 100;
|
static final int CONFIRM_EXISTING_REQUEST = 100;
|
||||||
private static final int ENABLE_ENCRYPTION_REQUEST = 101;
|
@VisibleForTesting
|
||||||
private static final int CHOOSE_LOCK_REQUEST = 102;
|
static final int ENABLE_ENCRYPTION_REQUEST = 101;
|
||||||
private static final int CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST = 103;
|
@VisibleForTesting
|
||||||
private static final int SKIP_FINGERPRINT_REQUEST = 104;
|
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 ChooseLockSettingsHelper mChooseLockSettingsHelper;
|
||||||
private DevicePolicyManager mDPM;
|
private DevicePolicyManager mDPM;
|
||||||
@@ -401,6 +406,8 @@ public class ChooseLockGeneric extends SettingsActivity {
|
|||||||
resultCode == RESULT_FINISHED ? RESULT_OK : resultCode, data);
|
resultCode == RESULT_FINISHED ? RESULT_OK : resultCode, data);
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
} else if (requestCode == SearchFeatureProvider.REQUEST_CODE) {
|
||||||
|
return;
|
||||||
} else {
|
} else {
|
||||||
getActivity().setResult(Activity.RESULT_CANCELED);
|
getActivity().setResult(Activity.RESULT_CANCELED);
|
||||||
finish();
|
finish();
|
||||||
|
@@ -32,6 +32,7 @@ import com.android.settingslib.search.SearchIndexableResources;
|
|||||||
public interface SearchFeatureProvider {
|
public interface SearchFeatureProvider {
|
||||||
|
|
||||||
Intent SEARCH_UI_INTENT = new Intent("com.android.settings.action.SETTINGS_SEARCH");
|
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.
|
* Ensures the caller has necessary privilege to launch search result page.
|
||||||
@@ -65,7 +66,7 @@ public interface SearchFeatureProvider {
|
|||||||
FeatureFactory.getFactory(
|
FeatureFactory.getFactory(
|
||||||
activity.getApplicationContext()).getSlicesFeatureProvider()
|
activity.getApplicationContext()).getSlicesFeatureProvider()
|
||||||
.indexSliceDataAsync(activity.getApplicationContext());
|
.indexSliceDataAsync(activity.getApplicationContext());
|
||||||
activity.startActivityForResult(intent, 0 /* requestCode */);
|
activity.startActivityForResult(intent, REQUEST_CODE);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -16,25 +16,32 @@
|
|||||||
|
|
||||||
package com.android.settings.password;
|
package com.android.settings.password;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.provider.Settings.Global;
|
import android.provider.Settings.Global;
|
||||||
|
|
||||||
import androidx.fragment.app.FragmentActivity;
|
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.password.ChooseLockGeneric.ChooseLockGenericFragment;
|
||||||
|
import com.android.settings.search.SearchFeatureProvider;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
@@ -43,6 +50,20 @@ import org.robolectric.annotation.Config;
|
|||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
public class ChooseLockGenericTest {
|
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
|
@After
|
||||||
public void tearDown() {
|
public void tearDown() {
|
||||||
Global.putInt(RuntimeEnvironment.application.getContentResolver(),
|
Global.putInt(RuntimeEnvironment.application.getContentResolver(),
|
||||||
@@ -52,28 +73,65 @@ public class ChooseLockGenericTest {
|
|||||||
@Test
|
@Test
|
||||||
@Config(shadows = SettingsShadowResources.SettingsShadowTheme.class)
|
@Config(shadows = SettingsShadowResources.SettingsShadowTheme.class)
|
||||||
public void onCreate_deviceNotProvisioned_shouldFinishActivity() {
|
public void onCreate_deviceNotProvisioned_shouldFinishActivity() {
|
||||||
final Context context = RuntimeEnvironment.application;
|
Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 0);
|
||||||
Global.putInt(context.getContentResolver(), Global.DEVICE_PROVISIONED, 0);
|
when(mActivity.getContentResolver()).thenReturn(mContext.getContentResolver());
|
||||||
final FragmentActivity activity = mock(FragmentActivity.class);
|
when(mActivity.getTheme()).thenReturn(mContext.getTheme());
|
||||||
when(activity.getContentResolver()).thenReturn(context.getContentResolver());
|
when(mFragment.getArguments()).thenReturn(Bundle.EMPTY);
|
||||||
when(activity.getTheme()).thenReturn(context.getTheme());
|
|
||||||
|
|
||||||
final ChooseLockGenericFragment fragment = spy(new ChooseLockGenericFragment());
|
mFragment.onCreate(Bundle.EMPTY);
|
||||||
when(fragment.getActivity()).thenReturn(activity);
|
verify(mActivity).finish();
|
||||||
when(fragment.getArguments()).thenReturn(Bundle.EMPTY);
|
|
||||||
|
|
||||||
fragment.onCreate(Bundle.EMPTY);
|
|
||||||
verify(activity).finish();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onActivityResult_nullIntentData_shouldNotCrash() {
|
public void onActivityResult_nullIntentData_shouldNotCrash() {
|
||||||
ChooseLockGenericFragment fragment = spy(new ChooseLockGenericFragment());
|
doNothing().when(mFragment).updatePreferencesOrFinish(anyBoolean());
|
||||||
doNothing().when(fragment).updatePreferencesOrFinish(anyBoolean());
|
|
||||||
|
|
||||||
fragment.onActivityResult(
|
mFragment.onActivityResult(
|
||||||
fragment.CONFIRM_EXISTING_REQUEST, Activity.RESULT_OK, null /* data */);
|
ChooseLockGenericFragment.CONFIRM_EXISTING_REQUEST, Activity.RESULT_OK,
|
||||||
|
null /* data */);
|
||||||
// no crash
|
// 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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user