Remove LooperMode.LEGACY from settings/password

Bug: 333831275

Test: atest
Change-Id: I34df868ceebf86d320ee5ff8de7657fbb221b9fc
This commit is contained in:
Fan Wu
2024-04-11 06:52:22 +00:00
parent 860bd52451
commit b941ff7b11
4 changed files with 50 additions and 41 deletions

View File

@@ -29,6 +29,7 @@ import android.content.Context;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import com.android.settings.password.ChooseLockTypeDialogFragment.OnLockTypeSelectedListener;
@@ -39,13 +40,11 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.LooperMode;
import org.robolectric.shadows.ShadowLooper;
import org.robolectric.shadows.androidx.fragment.FragmentController;
@RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
@Config(shadows = {ShadowAlertDialogCompat.class, ShadowLockPatternUtils.class})
public class ChooseLockTypeDialogFragmentTest {
@@ -54,7 +53,7 @@ public class ChooseLockTypeDialogFragmentTest {
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
mContext = ApplicationProvider.getApplicationContext();
mFragment = new TestFragment();
FragmentController.setupFragment(mFragment, FragmentActivity.class, 0 /* containerViewId */,
null /* bundle */);
@@ -97,6 +96,7 @@ public class ChooseLockTypeDialogFragmentTest {
ChooseLockTypeDialogFragment chooseLockTypeDialogFragment =
ChooseLockTypeDialogFragment.newInstance(1234);
chooseLockTypeDialogFragment.show(mFragment.getChildFragmentManager(), null);
ShadowLooper.idleMainLooper();
return ShadowAlertDialogCompat.getLatestAlertDialog();
}

View File

@@ -19,8 +19,7 @@ package com.android.settings.password;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
import static org.robolectric.RuntimeEnvironment.application;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
@@ -29,6 +28,7 @@ import android.widget.Button;
import android.widget.LinearLayout;
import androidx.appcompat.app.AlertDialog;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import com.android.settings.password.ChooseLockGeneric.ChooseLockGenericFragment;
@@ -56,16 +56,15 @@ import org.robolectric.android.controller.ActivityController;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.LooperMode;
import org.robolectric.shadows.ShadowActivity;
import org.robolectric.shadows.ShadowDialog;
import org.robolectric.shadows.ShadowInputMethodManager;
import org.robolectric.shadows.ShadowLooper;
import java.util.Collections;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
@Config(
shadows = {
SettingsShadowResources.class,
@@ -75,9 +74,11 @@ import java.util.List;
ShadowAlertDialogCompat.class
})
public class SetupChooseLockPasswordTest {
private Context mApplication;
@Before
public void setUp() {
mApplication = ApplicationProvider.getApplicationContext();
SettingsShadowResources.overrideResource(
com.android.internal.R.string.config_headlineFontFamily, "");
}
@@ -92,8 +93,8 @@ public class SetupChooseLockPasswordTest {
// Basic test for activity created without crashing
final Intent intent =
SetupChooseLockPassword.modifyIntentForSetup(
application,
new IntentBuilder(application).build());
mApplication,
new IntentBuilder(mApplication).build());
ActivityController.of(new SetupChooseLockPassword(), intent).setup().get();
}
@@ -104,6 +105,8 @@ public class SetupChooseLockPasswordTest {
Button optionsButton = activity.findViewById(R.id.screen_lock_options);
assertThat(optionsButton).isNotNull();
optionsButton.performClick();
ShadowLooper.idleMainLooper();
assertThat(ShadowDialog.getLatestDialog()).isNotNull();
}
@@ -118,6 +121,8 @@ public class SetupChooseLockPasswordTest {
assertThat(optionsButton).isNotNull();
optionsButton.performClick();
ShadowLooper.idleMainLooper();
assertThat(ShadowDialog.getLatestDialog()).isNotNull();
}
@@ -135,6 +140,8 @@ public class SetupChooseLockPasswordTest {
public void allSecurityOptions_shouldBeShown_When_OptionsButtonIsClicked() {
SetupChooseLockPassword activity = createSetupChooseLockPassword();
activity.findViewById(R.id.screen_lock_options).performClick();
ShadowLooper.idleMainLooper();
AlertDialog latestAlertDialog = (AlertDialog) ShadowDialog.getLatestDialog();
int count = latestAlertDialog.getListView().getCount();
assertWithMessage("List items shown").that(count).isEqualTo(3);
@@ -145,9 +152,9 @@ public class SetupChooseLockPasswordTest {
Bundle bundle = new Bundle();
bundle.putString("foo", "bar");
Intent intent = new IntentBuilder(application).build();
Intent intent = new IntentBuilder(mApplication).build();
intent.putExtra(ChooseLockGenericFragment.EXTRA_CHOOSE_LOCK_GENERIC_EXTRAS, bundle);
intent = SetupChooseLockPassword.modifyIntentForSetup(application, intent);
intent = SetupChooseLockPassword.modifyIntentForSetup(mApplication, intent);
intent.putExtra(ChooseLockGenericFragment.EXTRA_SHOW_OPTIONS_BUTTON, true);
SetupChooseLockPassword activity =
@@ -181,6 +188,8 @@ public class SetupChooseLockPasswordTest {
assertThat(skipOrClearButton.getVisibility()).isEqualTo(View.VISIBLE);
skipOrClearButton.performClick();
ShadowLooper.idleMainLooper();
final AlertDialog chooserDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
assertThat(chooserDialog).isNotNull();
assertThat(shadowImm.isSoftInputVisible()).isFalse();
@@ -208,14 +217,14 @@ public class SetupChooseLockPasswordTest {
fragment.updateUi();
assertThat(skipOrClearButton.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(skipOrClearButton.getText())
.isEqualTo(application.getString(R.string.lockpassword_clear_label));
.isEqualTo(mApplication.getString(R.string.lockpassword_clear_label));
}
private SetupChooseLockPassword createSetupChooseLockPassword() {
final Intent intent =
SetupChooseLockPassword.modifyIntentForSetup(
application,
new IntentBuilder(application).build());
mApplication,
new IntentBuilder(mApplication).build());
intent.putExtra(ChooseLockGenericFragment.EXTRA_SHOW_OPTIONS_BUTTON, true);
return ActivityController.of(new SetupChooseLockPassword(), intent).setup().get();
}

View File

@@ -19,9 +19,8 @@ package com.android.settings.password;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
import static org.robolectric.RuntimeEnvironment.application;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
@@ -33,6 +32,7 @@ import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentActivity;
import androidx.test.core.app.ApplicationProvider;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockPatternView;
@@ -58,7 +58,6 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.Shadows;
import org.robolectric.android.controller.ActivityController;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.LooperMode;
import org.robolectric.shadows.ShadowPackageManager;
import org.robolectric.util.ReflectionHelpers;
import org.robolectric.util.ReflectionHelpers.ClassParameter;
@@ -66,23 +65,24 @@ import org.robolectric.util.ReflectionHelpers.ClassParameter;
import java.util.Arrays;
@RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
@Config(shadows = {ShadowUtils.class, ShadowAlertDialogCompat.class, ShadowLockPatternUtils.class})
public class SetupChooseLockPatternTest {
private Context mContext;
private SetupChooseLockPattern mActivity;
@Before
public void setUp() {
application.getPackageManager().setComponentEnabledSetting(
new ComponentName(application, SetupRedactionInterstitial.class),
mContext = ApplicationProvider.getApplicationContext();
mContext.getPackageManager().setComponentEnabledSetting(
new ComponentName(mContext, SetupRedactionInterstitial.class),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
final Intent intent =
SetupChooseLockPattern.modifyIntentForSetup(
application,
new IntentBuilder(application)
mContext,
new IntentBuilder(mContext)
.setUserId(UserHandle.myUserId())
.build());
mActivity = ActivityController.of(new SetupChooseLockPattern(), intent).setup().get();
@@ -92,8 +92,8 @@ public class SetupChooseLockPatternTest {
public void chooseLockSaved_shouldEnableRedactionInterstitial() {
findFragment(mActivity).onChosenLockSaveFinished(false, null);
ShadowPackageManager spm = Shadows.shadowOf(application.getPackageManager());
ComponentName cname = new ComponentName(application, SetupRedactionInterstitial.class);
ShadowPackageManager spm = Shadows.shadowOf(mContext.getPackageManager());
ComponentName cname = new ComponentName(mContext, SetupRedactionInterstitial.class);
final int componentEnabled = spm.getComponentEnabledSettingFlags(cname)
& PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
assertThat(componentEnabled).isEqualTo(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
@@ -199,14 +199,14 @@ public class SetupChooseLockPatternTest {
assertThat(skipOrClearButton.isEnabled()).isTrue();
assertThat(skipOrClearButton.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(skipOrClearButton.getText())
.isEqualTo(application.getString(R.string.skip_label));
.isEqualTo(mContext.getString(R.string.skip_label));
enterPattern();
assertThat(skipOrClearButton.isEnabled()).isTrue();
assertThat(skipOrClearButton.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(skipOrClearButton.getText())
.isEqualTo(application.getString(R.string.lockpattern_retry_button_text));
.isEqualTo(mContext.getString(R.string.lockpattern_retry_button_text));
}
@Test
@@ -217,7 +217,7 @@ public class SetupChooseLockPatternTest {
assertThat(patternDescription.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(patternDescription.getText()).isEqualTo(
application.getString(R.string.lockpassword_choose_your_pattern_description));
mContext.getString(R.string.lockpassword_choose_your_pattern_description));
}
@Test
@@ -225,7 +225,7 @@ public class SetupChooseLockPatternTest {
final CharSequence headerView = mActivity.getTitle();
assertThat(headerView).isEqualTo(
application.getString(R.string.lockpassword_choose_your_pattern_header));
mContext.getString(R.string.lockpassword_choose_your_pattern_header));
}
@Test
@@ -235,7 +235,7 @@ public class SetupChooseLockPatternTest {
assertThat(headerView.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(headerView.getText().toString()).isEqualTo(
application.getString(R.string.lockpassword_choose_your_pattern_description));
mContext.getString(R.string.lockpassword_choose_your_pattern_description));
}
@Test
@@ -248,7 +248,7 @@ public class SetupChooseLockPatternTest {
enterPattern();
assertThat(headerView.getText().toString()).isEqualTo(
application.getString(R.string.lockpattern_pattern_entered_header));
mContext.getString(R.string.lockpattern_pattern_entered_header));
}
@Test
@@ -260,7 +260,7 @@ public class SetupChooseLockPatternTest {
assertThat(headerView.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(headerView.getText().toString()).isEqualTo(
application.getResources().getString(
mContext.getResources().getString(
R.string.lockpattern_recording_incorrect_too_short,
LockPatternUtils.MIN_LOCK_PATTERN_SIZE));
}
@@ -307,7 +307,7 @@ public class SetupChooseLockPatternTest {
nextButton.performClick();
assertThat(headerView.getText().toString()).isEqualTo(
application.getString(R.string.lockpattern_need_to_confirm));
mContext.getString(R.string.lockpattern_need_to_confirm));
}
@Test
@@ -324,15 +324,15 @@ public class SetupChooseLockPatternTest {
// NeedToConfirmStage
assertThat(headerView.getText().toString()).isEqualTo(
application.getString(R.string.lockpattern_need_to_confirm));
mContext.getString(R.string.lockpattern_need_to_confirm));
enterShortPattern();
// ConfirmWrongStage
assertThat(headerView.getText().toString()).isEqualTo(
application.getString(R.string.lockpattern_need_to_unlock_wrong));
mContext.getString(R.string.lockpattern_need_to_unlock_wrong));
assertThat(nextButton.getText().toString()).isEqualTo(
application.getString(R.string.lockpattern_confirm_button_text));
mContext.getString(R.string.lockpattern_confirm_button_text));
assertThat(nextButton.isEnabled()).isFalse();
}
@@ -350,15 +350,15 @@ public class SetupChooseLockPatternTest {
// NeedToConfirmStage
assertThat(headerView.getText().toString()).isEqualTo(
application.getString(R.string.lockpattern_need_to_confirm));
mContext.getString(R.string.lockpattern_need_to_confirm));
enterPattern();
// ChoiceConfirmedStage
assertThat(headerView.getText().toString()).isEqualTo(
application.getString(R.string.lockpattern_pattern_confirmed_header));
mContext.getString(R.string.lockpattern_pattern_confirmed_header));
assertThat(nextButton.getText().toString()).isEqualTo(
application.getString(R.string.lockpattern_confirm_button_text));
mContext.getString(R.string.lockpattern_confirm_button_text));
assertThat(nextButton.isEnabled()).isTrue();
}

View File

@@ -46,13 +46,12 @@ import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.LooperMode;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowAlertDialog;
import org.robolectric.shadows.ShadowApplication;
import org.robolectric.shadows.ShadowLooper;
@RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
@Config(shadows = {ShadowUtils.class, ShadowAlertDialog.class})
public class SetupSkipDialogTest {
@@ -77,6 +76,7 @@ public class SetupSkipDialogTest {
}
private ShadowAlertDialog getShadowAlertDialog() {
ShadowLooper.idleMainLooper();
ShadowApplication shadowApplication = Shadow.extract(
ApplicationProvider.getApplicationContext());
ShadowAlertDialog shadowAlertDialog = shadowApplication.getLatestAlertDialog();