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

Commit a59ce66b authored by Raff Tsai's avatar Raff Tsai Committed by Android (Google) Code Review
Browse files

Merge "Close searchActivity doesn't go back to previous activity"

parents 3b4ca982 4778a9af
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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();
+2 −1
Original line number Diff line number Diff line
@@ -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.
@@ -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);
        });
    }
}
+75 −17
Original line number Diff line number Diff line
@@ -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;
@@ -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(),
@@ -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();
    }
}