diff --git a/res/drawable/ic_settings_globe.xml b/res/drawable/ic_settings_globe.xml deleted file mode 100644 index 9834df6adba..00000000000 --- a/res/drawable/ic_settings_globe.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - \ No newline at end of file diff --git a/res/drawable/ic_settings_language_32dp.xml b/res/drawable/ic_settings_language_32dp.xml new file mode 100644 index 00000000000..b603d55598f --- /dev/null +++ b/res/drawable/ic_settings_language_32dp.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 0d0b9e6e6e7..0e88e265867 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -555,4 +555,10 @@ 5dp 2dp 10dp + + + 10dp + 16dp + 24dp + 32dp diff --git a/res/values/strings.xml b/res/values/strings.xml index c1b10146131..07d93fc9d7b 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -502,7 +502,7 @@ Your device settings and regional preferences will change. - + Change @@ -530,10 +530,11 @@ More language settings - Change region to %s ? + Change region to %1$s ? - Your device will keep %s as a system language - The digits used will be dependent on the numbering system + Your device will keep %1$s as a system language + + Most apps will use your regional preferences diff --git a/src/com/android/settings/localepicker/LocaleDialogFragment.java b/src/com/android/settings/localepicker/LocaleDialogFragment.java index 91cbc87ee2e..a3a4b8fee72 100644 --- a/src/com/android/settings/localepicker/LocaleDialogFragment.java +++ b/src/com/android/settings/localepicker/LocaleDialogFragment.java @@ -29,19 +29,20 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import android.widget.TextView; import android.window.OnBackInvokedCallback; import android.window.OnBackInvokedDispatcher; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; -import androidx.appcompat.app.AlertDialog; import com.android.internal.app.LocaleStore; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; +import com.android.settingslib.utils.CustomDialogHelper; /** * Create a dialog for system locale events. @@ -58,7 +59,6 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment { static final String ARG_SHOW_DIALOG = "arg_show_dialog"; private boolean mShouldKeepDialog; - private AlertDialog mAlertDialog; private OnBackInvokedDispatcher mBackDispatcher; private OnBackInvokedCallback mBackCallback = () -> { @@ -106,45 +106,53 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment { LocaleListEditor parentFragment = (LocaleListEditor) getParentFragment(); LocaleDialogController controller = getLocaleDialogController(getContext(), this, parentFragment); - LocaleDialogController.DialogContent dialogContent = controller.getDialogContent(); - ViewGroup viewGroup = (ViewGroup) LayoutInflater.from(getContext()).inflate( - R.layout.locale_dialog, null); - setDialogTitle(viewGroup, dialogContent.mTitle); - setDialogMessage(viewGroup, dialogContent.mMessage); - - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()) - .setView(viewGroup); - if (!dialogContent.mPositiveButton.isEmpty()) { - builder.setPositiveButton(dialogContent.mPositiveButton, controller); - } - if (!dialogContent.mNegativeButton.isEmpty()) { - builder.setNegativeButton(dialogContent.mNegativeButton, controller); - } - mAlertDialog = builder.create(); - getOnBackInvokedDispatcher().registerOnBackInvokedCallback(PRIORITY_DEFAULT, mBackCallback); - mAlertDialog.setCanceledOnTouchOutside(false); - mAlertDialog.setOnDismissListener(dialogInterface -> { - mAlertDialog.getOnBackInvokedDispatcher().unregisterOnBackInvokedCallback( - mBackCallback); + Dialog dialog = createDialog(getContext(), controller); + dialog.setCanceledOnTouchOutside(false); + getOnBackInvokedDispatcher(dialog).registerOnBackInvokedCallback(PRIORITY_DEFAULT, + mBackCallback); + dialog.setOnDismissListener(dialogInterface -> { + getOnBackInvokedDispatcher(dialog).unregisterOnBackInvokedCallback( + mBackCallback); }); - return mAlertDialog; + return dialog; } - private static void setDialogTitle(View root, String content) { - TextView titleView = root.findViewById(R.id.dialog_title); - if (titleView == null) { - return; + private Dialog createDialog(Context context, LocaleDialogController controller) { + CustomDialogHelper dialogHelper = new CustomDialogHelper(context); + LocaleDialogController.DialogContent dialogContent = controller.getDialogContent(); + dialogHelper.setIcon(context.getDrawable(R.drawable.ic_settings_language_32dp)) + .setTitle(dialogContent.mTitle) + .setMessage(dialogContent.mMessage) + .setIconPadding(0, + context.getResources().getDimensionPixelSize( + R.dimen.locale_picker_dialog_icon_padding), + 0, 0) + .setTitlePadding(0, + context.getResources().getDimensionPixelSize( + R.dimen.locale_picker_dialog_title_padding), + 0, + context.getResources().getDimensionPixelSize( + R.dimen.locale_picker_dialog_title_padding)) + .setMessagePadding(context.getResources().getDimensionPixelSize( + R.dimen.locale_picker_dialog_message_padding_left_right), 0, + context.getResources().getDimensionPixelSize( + R.dimen.locale_picker_dialog_message_padding_left_right), + context.getResources().getDimensionPixelSize( + R.dimen.locale_picker_dialog_message_padding_bottom)) + .setPositiveButton(dialogContent.mPositiveButton, + view -> { + controller.onClick(dialogHelper.getDialog(), + DialogInterface.BUTTON_POSITIVE); + dialogHelper.getDialog().dismiss(); + }); + if (dialogContent.mNegativeButton != 0) { + dialogHelper.setBackButton(dialogContent.mNegativeButton, view -> { + controller.onClick(dialogHelper.getDialog(), DialogInterface.BUTTON_NEGATIVE); + dialogHelper.getDialog().dismiss(); + }); } - titleView.setText(content); - } - - private static void setDialogMessage(View root, String content) { - TextView textView = root.findViewById(R.id.dialog_msg); - if (textView == null) { - return; - } - textView.setText(content); + return dialogHelper.getDialog(); } @VisibleForTesting @@ -158,11 +166,11 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment { } @VisibleForTesting - public OnBackInvokedDispatcher getOnBackInvokedDispatcher() { + public @NonNull OnBackInvokedDispatcher getOnBackInvokedDispatcher(@NonNull Dialog dialog) { if (mBackDispatcher != null) { return mBackDispatcher; } else { - return mAlertDialog.getOnBackInvokedDispatcher(); + return dialog.getOnBackInvokedDispatcher(); } } @@ -223,15 +231,15 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment { R.string.title_change_system_locale), mLocaleInfo.getFullNameNative()); dialogContent.mMessage = mContext.getString( R.string.desc_notice_device_locale_settings_change); - dialogContent.mPositiveButton = mContext.getString( - R.string.button_label_confirmation_of_system_locale_change); - dialogContent.mNegativeButton = mContext.getString(R.string.cancel); + dialogContent.mPositiveButton = + R.string.button_label_confirmation_of_system_locale_change; + dialogContent.mNegativeButton = R.string.cancel; break; case DIALOG_NOT_AVAILABLE_LOCALE: dialogContent.mTitle = String.format(mContext.getString( R.string.title_unavailable_locale), mLocaleInfo.getFullNameNative()); dialogContent.mMessage = mContext.getString(R.string.desc_unavailable_locale); - dialogContent.mPositiveButton = mContext.getString(R.string.okay); + dialogContent.mPositiveButton = R.string.okay; break; case DIALOG_ADD_SYSTEM_LOCALE: dialogContent.mTitle = String.format(mContext.getString( @@ -239,8 +247,8 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment { mLocaleInfo.getFullNameNative()); dialogContent.mMessage = mContext.getString( R.string.desc_system_locale_addition); - dialogContent.mPositiveButton = mContext.getString(R.string.add); - dialogContent.mNegativeButton = mContext.getString(R.string.cancel); + dialogContent.mPositiveButton = R.string.add; + dialogContent.mNegativeButton = R.string.cancel; break; default: break; @@ -252,8 +260,8 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment { static class DialogContent { String mTitle = ""; String mMessage = ""; - String mPositiveButton = ""; - String mNegativeButton = ""; + int mPositiveButton = 0; + int mNegativeButton = 0; } } } diff --git a/src/com/android/settings/localepicker/LocaleListEditor.java b/src/com/android/settings/localepicker/LocaleListEditor.java index f9c50b79bd7..461ea6587b9 100644 --- a/src/com/android/settings/localepicker/LocaleListEditor.java +++ b/src/com/android/settings/localepicker/LocaleListEditor.java @@ -43,8 +43,8 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; -import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentManager; import androidx.preference.PreferenceScreen; import androidx.recyclerview.widget.RecyclerView; @@ -57,6 +57,7 @@ import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.search.SearchIndexableRaw; +import com.android.settingslib.utils.CustomDialogHelper; import com.android.settingslib.utils.StringUtil; import com.android.settingslib.widget.LayoutPreference; @@ -69,6 +70,8 @@ import java.util.Locale; */ @SearchIndexable public class LocaleListEditor extends RestrictedSettingsFragment implements View.OnTouchListener { + public static final int REQUEST_LOCALE_PICKER = 0; + protected static final String INTENT_LOCALE_KEY = "localeInfo"; protected static final String EXTRA_SYSTEM_LOCALE_DIALOG_TYPE = "system_locale_dialog_type"; protected static final String EXTRA_RESULT_LOCALE = "result_locale"; @@ -85,12 +88,10 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View private static final String TAG_DIALOG_NOT_AVAILABLE = "dialog_not_available_locale"; private static final String TAG_DIALOG_ADD_SYSTEM_LOCALE = "dialog_add_system_locale"; private static final int MENU_ID_REMOVE = Menu.FIRST + 1; - private static final int REQUEST_LOCALE_PICKER = 0; private LocaleDragAndDropAdapter mAdapter; private Menu mMenu; private View mAddLanguage; - private AlertDialog mSuggestionDialog = null; private boolean mRemoveMode; private boolean mShowingRemoveDialog; private boolean mLocaleAdditionMode = false; @@ -330,7 +331,6 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View private void showDialogForAddedLocale() { Log.d(TAG, "show confirmation dialog"); Intent intent = this.getIntent(); - String dialogType = intent.getStringExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE); String appLocaleTag = intent.getStringExtra(EXTRA_APP_LOCALE); LocaleStore.LocaleInfo localeInfo = LocaleStore.getLocaleInfo( @@ -344,17 +344,6 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View localeDialogFragment.show(mFragmentManager, TAG_DIALOG_ADD_SYSTEM_LOCALE); } - private void customizeLayout(AlertDialog.Builder dialogBuilder, String language) { - View dialogView = getLocaleDialogView(); - dialogBuilder.setView(dialogView); - TextView title = dialogView.findViewById(R.id.dialog_title); - title.setText( - String.format(getContext().getResources().getString( - R.string.title_system_locale_addition), language)); - TextView message = dialogView.findViewById(R.id.dialog_msg); - message.setText(R.string.desc_system_locale_addition); - } - protected View getLocaleDialogView() { LayoutInflater inflater = this.getLayoutInflater(); return inflater.inflate(R.layout.locale_dialog, null); @@ -374,25 +363,33 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View return; } + int messagePaddingLeftRight = getContext().getResources().getDimensionPixelSize( + R.dimen.locale_picker_dialog_message_padding_left_right); + int messagePaddingBottom = getContext().getResources().getDimensionPixelSize( + R.dimen.locale_picker_dialog_message_padding_bottom); // All locales selected, warning dialog, can't remove them all if (checkedCount == mAdapter.getItemCount()) { mShowingRemoveDialog = true; - new AlertDialog.Builder(getActivity()) - .setTitle(R.string.dlg_remove_locales_error_title) - .setMessage(R.string.dlg_remove_locales_error_message) - .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - } - }) - .setOnDismissListener(new DialogInterface.OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - mShowingRemoveDialog = false; - } - }) - .create() - .show(); + + CustomDialogHelper dialogHelper = createRegionDialog(getContext(), + getContext().getString(R.string.dlg_remove_locales_error_title)); + dialogHelper.setMessage(R.string.dlg_remove_locales_error_message) + .setMessagePadding(messagePaddingLeftRight, 0, messagePaddingLeftRight, + messagePaddingBottom) + .setPositiveButton(android.R.string.ok, + view -> { + dialogHelper.getDialog().dismiss(); + }) + .setBackButton(R.string.cancel, view -> { + dialogHelper.getDialog().dismiss(); + }); + dialogHelper.getDialog().setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + mShowingRemoveDialog = false; + } + }); + dialogHelper.getDialog().show(); return; } @@ -400,54 +397,63 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View R.string.dlg_remove_locales_title); mShowingRemoveDialog = true; - final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + CustomDialogHelper dialogHelper = createRegionDialog(getContext(), title); if (mAdapter.isFirstLocaleChecked()) { - builder.setMessage(R.string.dlg_remove_locales_message); + dialogHelper.setMessage(R.string.dlg_remove_locales_message) + .setMessagePadding(messagePaddingLeftRight, 0, messagePaddingLeftRight, + messagePaddingBottom); } - builder.setTitle(title) - .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - setRemoveMode(false); - } - }) - .setPositiveButton(R.string.locale_remove_menu, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - // This is a sensitive area to change. - // removeChecked() triggers a system update and "kills" the frame. - // This means that saveState + restoreState are called before - // setRemoveMode is called. - // So we want that mRemoveMode and dialog status have the right - // values - // before that save. - // We can't just call setRemoveMode(false) before calling - // removeCheched - // because that unchecks all items and removeChecked would have - // nothing - // to remove. - mRemoveMode = false; - mShowingRemoveDialog = false; - LocaleStore.LocaleInfo firstLocale = - mAdapter.getFeedItemList().get(0); - mAdapter.removeChecked(); - boolean isFirstRemoved = - firstLocale != mAdapter.getFeedItemList().get(0); - showConfirmDialog(isFirstRemoved, isFirstRemoved ? firstLocale - : mAdapter.getFeedItemList().get(0)); - setRemoveMode(false); - } + dialogHelper.setPositiveButton(R.string.locale_remove_menu, + view -> { + // This is a sensitive area to change. + // removeChecked() triggers a system update and "kills" the frame. + // This means that saveState + restoreState are called before + // setRemoveMode is called. + // So we want that mRemoveMode and dialog status have the right + // values + // before that save. + // We can't just call setRemoveMode(false) before calling + // removeCheched + // because that unchecks all items and removeChecked would have + // nothing + // to remove. + mRemoveMode = false; + mShowingRemoveDialog = false; + LocaleStore.LocaleInfo firstLocale = + mAdapter.getFeedItemList().get(0); + mAdapter.removeChecked(); + boolean isFirstRemoved = + firstLocale != mAdapter.getFeedItemList().get(0); + showConfirmDialog(isFirstRemoved, isFirstRemoved ? firstLocale + : mAdapter.getFeedItemList().get(0)); + setRemoveMode(false); + dialogHelper.getDialog().dismiss(); }) - .setOnDismissListener(new DialogInterface.OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - mShowingRemoveDialog = false; - } - }) - .create() - .show(); + .setBackButton(R.string.cancel, view -> { + setRemoveMode(false); + dialogHelper.getDialog().dismiss(); + }); + dialogHelper.getDialog().setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + mShowingRemoveDialog = false; + } + }); + dialogHelper.getDialog().show(); + } + + private CustomDialogHelper createRegionDialog(Context context, String title) { + CustomDialogHelper dialogHelper = new CustomDialogHelper(context); + dialogHelper.setIcon(context.getDrawable(R.drawable.ic_settings_language_32dp)) + .setTitle(title) + .setIconPadding(0, context.getResources().getDimensionPixelSize( + R.dimen.locale_picker_dialog_icon_padding), 0, 0) + .setTitlePadding(0, context.getResources().getDimensionPixelSize( + R.dimen.locale_picker_dialog_title_padding), 0, + context.getResources().getDimensionPixelSize( + R.dimen.locale_picker_dialog_title_padding)); + return dialogHelper; } @Override @@ -483,7 +489,6 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View list.setAdapter(mAdapter); list.setOnTouchListener(this); list.requestFocus(); - mAddLanguage = layout.findViewById(R.id.add_language); mAddLanguage.setOnClickListener(new View.OnClickListener() { @Override diff --git a/tests/robotests/src/com/android/settings/localepicker/LocaleDialogFragmentTest.java b/tests/robotests/src/com/android/settings/localepicker/LocaleDialogFragmentTest.java index 0fc915f601f..758168268e2 100644 --- a/tests/robotests/src/com/android/settings/localepicker/LocaleDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/localepicker/LocaleDialogFragmentTest.java @@ -26,10 +26,10 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; +import android.app.Dialog; import android.os.Bundle; import android.window.OnBackInvokedDispatcher; -import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; @@ -92,17 +92,17 @@ public class LocaleDialogFragmentTest { @Test public void onBackInvoked_dialogIsStillDisplaying() { mDialogFragment.setBackDispatcher(mOnBackInvokedDispatcher); - AlertDialog alertDialog = (AlertDialog) mDialogFragment.onCreateDialog(null); - alertDialog.show(); - assertThat(alertDialog).isNotNull(); - assertThat(alertDialog.isShowing()).isTrue(); + Dialog dialog = mDialogFragment.onCreateDialog(null); + dialog.show(); + assertThat(dialog).isNotNull(); + assertThat(dialog.isShowing()).isTrue(); mOnBackInvokedDispatcher.registerOnBackInvokedCallback( eq(OnBackInvokedDispatcher.PRIORITY_DEFAULT), any()); mDialogFragment.getBackInvokedCallback().onBackInvoked(); - assertThat(alertDialog.isShowing()).isTrue(); + assertThat(dialog.isShowing()).isTrue(); } } diff --git a/tests/robotests/src/com/android/settings/localepicker/LocaleListEditorTest.java b/tests/robotests/src/com/android/settings/localepicker/LocaleListEditorTest.java index 10115399cfd..0d5a952f686 100644 --- a/tests/robotests/src/com/android/settings/localepicker/LocaleListEditorTest.java +++ b/tests/robotests/src/com/android/settings/localepicker/LocaleListEditorTest.java @@ -33,6 +33,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; +import android.app.Dialog; import android.app.IActivityManager; import android.content.Context; import android.content.DialogInterface; @@ -53,7 +54,6 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; -import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; @@ -78,6 +78,7 @@ import org.mockito.junit.MockitoRule; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowDialog; import org.robolectric.shadows.ShadowLooper; import org.robolectric.util.ReflectionHelpers; @@ -87,6 +88,7 @@ import java.util.Locale; @RunWith(RobolectricTestRunner.class) @Config(shadows = { + ShadowDialog.class, ShadowAlertDialogCompat.class, ShadowActivityManager.class, com.android.settings.testutils.shadow.ShadowFragment.class, @@ -178,7 +180,7 @@ public class LocaleListEditorTest { ReflectionHelpers.setField(mLocaleListEditor, "mRemoveMode", false); ReflectionHelpers.setField(mLocaleListEditor, "mShowingRemoveDialog", false); ReflectionHelpers.setField(mLocaleListEditor, "mLocaleAdditionMode", false); - ShadowAlertDialogCompat.reset(); + ShadowDialog.reset(); } @Test @@ -209,14 +211,13 @@ public class LocaleListEditorTest { //launch dialog mLocaleListEditor.showRemoveLocaleWarningDialog(); - final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); + final Dialog dialog = ShadowDialog.getLatestDialog(); assertThat(dialog).isNotNull(); - final ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog); - - assertThat(shadowDialog.getTitle()).isEqualTo( - mContext.getString(R.string.dlg_remove_locales_error_title)); + TextView dialogTitle = dialog.findViewById(R.id.dialog_with_icon_title); + assertThat(dialogTitle.getText().toString()) + .isEqualTo(mContext.getString(R.string.dlg_remove_locales_error_title)); } @Test @@ -231,14 +232,13 @@ public class LocaleListEditorTest { //launch dialog mLocaleListEditor.showRemoveLocaleWarningDialog(); - final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); + final Dialog dialog = ShadowDialog.getLatestDialog(); assertThat(dialog).isNotNull(); - final ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog); - - assertThat(shadowDialog.getMessage()).isEqualTo( - mContext.getString(R.string.dlg_remove_locales_message)); + TextView dialogMessage = dialog.findViewById(R.id.dialog_with_icon_message); + assertThat(dialogMessage.getText().toString()) + .isEqualTo(mContext.getString(R.string.dlg_remove_locales_message)); } @Test @@ -253,13 +253,12 @@ public class LocaleListEditorTest { //launch dialog mLocaleListEditor.showRemoveLocaleWarningDialog(); - final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); + final Dialog dialog = ShadowDialog.getLatestDialog(); assertThat(dialog).isNotNull(); - final ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog); - - assertThat(shadowDialog.getMessage()).isNull(); + TextView dialogMessage = dialog.findViewById(R.id.dialog_with_icon_message); + assertThat(dialogMessage.getText().isEmpty()).isTrue(); } @Test @@ -280,12 +279,12 @@ public class LocaleListEditorTest { //launch the first dialog mLocaleListEditor.showRemoveLocaleWarningDialog(); - final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); + final Dialog dialog = ShadowDialog.getLatestDialog(); assertThat(dialog).isNotNull(); // click the remove button - dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick(); + dialog.findViewById(R.id.button_ok).performClick(); ShadowLooper.idleMainLooper(); assertThat(dialog.isShowing()).isFalse(); diff --git a/tests/unit/src/com/android/settings/localepicker/LocaleDialogFragmentTest.java b/tests/unit/src/com/android/settings/localepicker/LocaleDialogFragmentTest.java index 824954da52d..9415d00e98b 100644 --- a/tests/unit/src/com/android/settings/localepicker/LocaleDialogFragmentTest.java +++ b/tests/unit/src/com/android/settings/localepicker/LocaleDialogFragmentTest.java @@ -35,6 +35,7 @@ import androidx.test.annotation.UiThreadTest; import androidx.test.core.app.ApplicationProvider; import com.android.internal.app.LocaleStore; +import com.android.settings.R; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.ResourcesUtils; @@ -82,11 +83,9 @@ public class LocaleDialogFragmentTest { LocaleDialogFragment.LocaleDialogController.DialogContent dialogContent = controller.getDialogContent(); - assertEquals(ResourcesUtils.getResourcesString( - mContext, "button_label_confirmation_of_system_locale_change"), + assertEquals(R.string.button_label_confirmation_of_system_locale_change, dialogContent.mPositiveButton); - assertEquals(ResourcesUtils.getResourcesString(mContext, "cancel"), - dialogContent.mNegativeButton); + assertEquals(R.string.cancel, dialogContent.mNegativeButton); } @Test @@ -99,9 +98,8 @@ public class LocaleDialogFragmentTest { LocaleDialogFragment.LocaleDialogController.DialogContent dialogContent = controller.getDialogContent(); - assertEquals(ResourcesUtils.getResourcesString(mContext, "okay"), - dialogContent.mPositiveButton); - assertTrue(dialogContent.mNegativeButton.isEmpty()); + assertEquals(R.string.okay, dialogContent.mPositiveButton); + assertTrue(dialogContent.mNegativeButton == 0); } @Test