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

Commit 54003698 authored by Hao Dong's avatar Hao Dong
Browse files

Do not show udfps enrollment page in multi window mode.

In multi window mode, finish FingerprintEnrollEnrolling activity
and show a toast.

Test: atest FingerprintEnrollEnrollingTest
Bug: 184118847
Change-Id: I8cfa61b334c029185e1bbf46fdbf158bb493a1e0
parent 56f1eb0f
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -11793,4 +11793,7 @@
    <string name="color_selector_dialog_done">Done</string>
    <!-- Button to close the dialog without saving in screen flash color selection dialog. [CHAR LIMIT=20] -->
    <string name="color_selector_dialog_cancel">Cancel</string>
    <!-- Warning message when we try to dock an app not supporting multiple instances split into multiple sides [CHAR LIMIT=NONE] -->
    <string name="dock_multi_instances_not_supported_text">"This app can only be opened in 1 window"</string>
</resources>
+9 −0
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.IdRes;
import androidx.appcompat.app.AlertDialog;
@@ -249,6 +250,14 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (isInMultiWindowMode()) {
            final Toast splitUnsupportedToast = Toast.makeText(this,
                    R.string.dock_multi_instances_not_supported_text, Toast.LENGTH_SHORT);
            splitUnsupportedToast.show();
            finish();
            return;
        }

        if (savedInstanceState != null) {
            restoreSavedState(savedInstanceState);
        }
+22 −3
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.android.controller.ActivityController;
import org.robolectric.shadows.ShadowToast;
import org.robolectric.util.ReflectionHelpers;

import java.util.ArrayList;
@@ -113,6 +114,16 @@ public class FingerprintEnrollEnrollingTest {
        FakeFeatureFactory.setupForTest();
    }

    @Test
    public void fingerprintMultiWindowMode() {
        initializeActivityWithoutCreate(TYPE_UDFPS_OPTICAL);
        when(mActivity.isInMultiWindowMode()).thenReturn(true);
        createActivity();

        assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
                mContext.getString(R.string.dock_multi_instances_not_supported_text));
    }

    @Test
    public void fingerprintUdfpsEnrollSuccessProgress_shouldNotVibrate() {
        initializeActivityFor(TYPE_UDFPS_OPTICAL);
@@ -438,7 +449,7 @@ public class FingerprintEnrollEnrollingTest {
        assertThat(appliedThemes.contains("SetupWizardPartnerResource")).isTrue();
    }

    private void initializeActivityFor(int sensorType) {
    private void initializeActivityWithoutCreate(int sensorType) {
        final List<ComponentInfoInternal> componentInfo = new ArrayList<>();
        final FingerprintSensorPropertiesInternal prop =
                new FingerprintSensorPropertiesInternal(
@@ -449,8 +460,6 @@ public class FingerprintEnrollEnrollingTest {
                        sensorType,
                        true /* resetLockoutRequiresHardwareAuthToken */);
        final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();
        final Bundle savedInstanceState = new Bundle();
        savedInstanceState.putInt(KEY_STATE_PREVIOUS_ROTATION, Surface.ROTATION_90);
        props.add(prop);
        when(mFingerprintManager.getSensorPropertiesInternal()).thenReturn(props);
        mContext = spy(RuntimeEnvironment.application);
@@ -483,11 +492,21 @@ public class FingerprintEnrollEnrollingTest {
            }
            doReturn(true).when(mSidecar).isEnrolling();
        }
    }

    private void createActivity() {
        final Bundle savedInstanceState = new Bundle();
        savedInstanceState.putInt(KEY_STATE_PREVIOUS_ROTATION, Surface.ROTATION_90);

        ActivityController.of(mActivity).create(savedInstanceState);
        mTheme = mActivity.getTheme();
    }

    private void initializeActivityFor(int sensorType) {
        initializeActivityWithoutCreate(sensorType);
        createActivity();
    }

    private EnrollmentCallback verifyAndCaptureEnrollmentCallback() {
        ArgumentCaptor<EnrollmentCallback> callbackCaptor =
                ArgumentCaptor.forClass(EnrollmentCallback.class);