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
This commit is contained in:
@@ -11793,4 +11793,7 @@
|
|||||||
<string name="color_selector_dialog_done">Done</string>
|
<string name="color_selector_dialog_done">Done</string>
|
||||||
<!-- Button to close the dialog without saving in screen flash color selection dialog. [CHAR LIMIT=20] -->
|
<!-- Button to close the dialog without saving in screen flash color selection dialog. [CHAR LIMIT=20] -->
|
||||||
<string name="color_selector_dialog_cancel">Cancel</string>
|
<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>
|
</resources>
|
||||||
|
@@ -66,6 +66,7 @@ import android.widget.LinearLayout;
|
|||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.IdRes;
|
import androidx.annotation.IdRes;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
@@ -249,6 +250,14 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(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) {
|
if (savedInstanceState != null) {
|
||||||
restoreSavedState(savedInstanceState);
|
restoreSavedState(savedInstanceState);
|
||||||
}
|
}
|
||||||
|
@@ -74,6 +74,7 @@ import org.mockito.MockitoAnnotations;
|
|||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.android.controller.ActivityController;
|
import org.robolectric.android.controller.ActivityController;
|
||||||
|
import org.robolectric.shadows.ShadowToast;
|
||||||
import org.robolectric.util.ReflectionHelpers;
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -113,6 +114,16 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
FakeFeatureFactory.setupForTest();
|
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
|
@Test
|
||||||
public void fingerprintUdfpsEnrollSuccessProgress_shouldNotVibrate() {
|
public void fingerprintUdfpsEnrollSuccessProgress_shouldNotVibrate() {
|
||||||
initializeActivityFor(TYPE_UDFPS_OPTICAL);
|
initializeActivityFor(TYPE_UDFPS_OPTICAL);
|
||||||
@@ -438,7 +449,7 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
assertThat(appliedThemes.contains("SetupWizardPartnerResource")).isTrue();
|
assertThat(appliedThemes.contains("SetupWizardPartnerResource")).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializeActivityFor(int sensorType) {
|
private void initializeActivityWithoutCreate(int sensorType) {
|
||||||
final List<ComponentInfoInternal> componentInfo = new ArrayList<>();
|
final List<ComponentInfoInternal> componentInfo = new ArrayList<>();
|
||||||
final FingerprintSensorPropertiesInternal prop =
|
final FingerprintSensorPropertiesInternal prop =
|
||||||
new FingerprintSensorPropertiesInternal(
|
new FingerprintSensorPropertiesInternal(
|
||||||
@@ -449,8 +460,6 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
sensorType,
|
sensorType,
|
||||||
true /* resetLockoutRequiresHardwareAuthToken */);
|
true /* resetLockoutRequiresHardwareAuthToken */);
|
||||||
final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();
|
final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();
|
||||||
final Bundle savedInstanceState = new Bundle();
|
|
||||||
savedInstanceState.putInt(KEY_STATE_PREVIOUS_ROTATION, Surface.ROTATION_90);
|
|
||||||
props.add(prop);
|
props.add(prop);
|
||||||
when(mFingerprintManager.getSensorPropertiesInternal()).thenReturn(props);
|
when(mFingerprintManager.getSensorPropertiesInternal()).thenReturn(props);
|
||||||
mContext = spy(RuntimeEnvironment.application);
|
mContext = spy(RuntimeEnvironment.application);
|
||||||
@@ -483,11 +492,21 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
}
|
}
|
||||||
doReturn(true).when(mSidecar).isEnrolling();
|
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);
|
ActivityController.of(mActivity).create(savedInstanceState);
|
||||||
mTheme = mActivity.getTheme();
|
mTheme = mActivity.getTheme();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initializeActivityFor(int sensorType) {
|
||||||
|
initializeActivityWithoutCreate(sensorType);
|
||||||
|
createActivity();
|
||||||
|
}
|
||||||
|
|
||||||
private EnrollmentCallback verifyAndCaptureEnrollmentCallback() {
|
private EnrollmentCallback verifyAndCaptureEnrollmentCallback() {
|
||||||
ArgumentCaptor<EnrollmentCallback> callbackCaptor =
|
ArgumentCaptor<EnrollmentCallback> callbackCaptor =
|
||||||
ArgumentCaptor.forClass(EnrollmentCallback.class);
|
ArgumentCaptor.forClass(EnrollmentCallback.class);
|
||||||
|
Reference in New Issue
Block a user