diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockTypeDialogFragmentTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockTypeDialogFragmentTest.java index a7c71ad9bad..24418bfeb41 100644 --- a/tests/robotests/src/com/android/settings/password/ChooseLockTypeDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/password/ChooseLockTypeDialogFragmentTest.java @@ -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(); } diff --git a/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java index e207d2417fe..f2cbb1d50ed 100644 --- a/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java +++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java @@ -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(); } diff --git a/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java index ce47a9e9a9a..be3b63bf805 100644 --- a/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java +++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java @@ -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(); } diff --git a/tests/robotests/src/com/android/settings/password/SetupSkipDialogTest.java b/tests/robotests/src/com/android/settings/password/SetupSkipDialogTest.java index 53a80dc4e8e..b98eea98004 100644 --- a/tests/robotests/src/com/android/settings/password/SetupSkipDialogTest.java +++ b/tests/robotests/src/com/android/settings/password/SetupSkipDialogTest.java @@ -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();