Loading AndroidManifest.xml +5 −0 Original line number Diff line number Diff line Loading @@ -947,6 +947,11 @@ </intent-filter> </activity> <activity android:name=".localepicker.NotificationActionActivity" android:excludeFromRecents="true" android:theme="@android:style/Theme.NoDisplay"> </activity> <activity android:name=".Settings$LanguageAndInputSettingsActivity" android:label="@string/language_settings" Loading src/com/android/settings/localepicker/AppLocalePickerActivity.java +1 −6 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import android.net.Uri; import android.os.Bundle; import android.os.LocaleList; import android.os.SystemClock; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; import android.view.MenuItem; Loading @@ -52,8 +51,6 @@ public class AppLocalePickerActivity extends SettingsBaseActivity private static final String TAG = AppLocalePickerActivity.class.getSimpleName(); private static final String CHANNEL_ID_SUGGESTION = "suggestion"; private static final String CHANNEL_ID_SUGGESTION_TO_USER = "Locale suggestion"; private static final String EXTRA_SYSTEM_LOCALE_DIALOG_TYPE = "system_locale_dialog_type"; private static final String LOCALE_SUGGESTION = "locale_suggestion"; static final String EXTRA_APP_LOCALE = "app_locale"; static final String EXTRA_NOTIFICATION_ID = "notification_id"; Loading Loading @@ -194,7 +191,6 @@ public class AppLocalePickerActivity extends SettingsBaseActivity channel.setSound(/* sound */ null, /* audioAttributes */ null); // silent notification notificationManager.createNotificationChannel(channel); } final NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID_SUGGESTION) .setSmallIcon(R.drawable.ic_settings_language) Loading @@ -213,8 +209,7 @@ public class AppLocalePickerActivity extends SettingsBaseActivity boolean isDeleteIntent) { Intent intent = isDeleteIntent ? new Intent(this, NotificationCancelReceiver.class) : new Intent(Settings.ACTION_LOCALE_SETTINGS) .putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, LOCALE_SUGGESTION) : new Intent(this, NotificationActionActivity.class) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.putExtra(EXTRA_APP_LOCALE, locale) Loading src/com/android/settings/localepicker/LocaleListEditor.java +5 −14 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static android.os.UserManager.DISALLOW_CONFIG_LOCALE; import static com.android.settings.flags.Flags.localeNotificationEnabled; import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_APP_LOCALE; import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_NOTIFICATION_ID; import static com.android.settings.localepicker.LocaleDialogFragment.DIALOG_ADD_SYSTEM_LOCALE; import static com.android.settings.localepicker.LocaleDialogFragment.DIALOG_CONFIRM_SYSTEM_DEFAULT; Loading Loading @@ -71,6 +70,8 @@ import java.util.Locale; @SearchIndexable public class LocaleListEditor extends RestrictedSettingsFragment implements View.OnTouchListener { 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 LOCALE_SUGGESTION = "locale_suggestion"; private static final String TAG = LocaleListEditor.class.getSimpleName(); private static final String CFGKEY_REMOVE_MODE = "localeRemoveMode"; Loading @@ -81,11 +82,8 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View private static final String TAG_DIALOG_CONFIRM_SYSTEM_DEFAULT = "dialog_confirm_system_default"; 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 String EXTRA_SYSTEM_LOCALE_DIALOG_TYPE = "system_locale_dialog_type"; private static final String LOCALE_SUGGESTION = "locale_suggestion"; private static final int MENU_ID_REMOVE = Menu.FIRST + 1; private static final int REQUEST_LOCALE_PICKER = 0; private static final int INVALID_NOTIFICATION_ID = -1; private LocaleDragAndDropAdapter mAdapter; private Menu mMenu; Loading Loading @@ -282,9 +280,9 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View Intent intent = this.getIntent(); String dialogType = intent.getStringExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE); String localeTag = intent.getStringExtra(EXTRA_APP_LOCALE); int notificationId = intent.getIntExtra(EXTRA_NOTIFICATION_ID, INVALID_NOTIFICATION_ID); String callingPackage = getActivity().getCallingPackage(); if (!localeNotificationEnabled() || !isValidNotificationId(localeTag, notificationId) || !getContext().getPackageName().equals(callingPackage) || !isValidDialogType(dialogType) || !isValidLocale(localeTag) || LocaleUtils.isInSystemLocale(localeTag)) { Loading @@ -293,13 +291,6 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View return true; } private boolean isValidNotificationId(String localeTag, long id) { if (id == -1) { return false; } return id == getNotificationController().getNotificationId(localeTag); } @VisibleForTesting NotificationController getNotificationController() { return NotificationController.getInstance(getContext()); Loading Loading @@ -328,7 +319,7 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View } private void showDialogForAddedLocale() { Log.d(TAG, "Show confirmation dialog"); 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); Loading src/com/android/settings/localepicker/NotificationActionActivity.java 0 → 100644 +77 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.localepicker; import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_APP_LOCALE; import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_NOTIFICATION_ID; import static com.android.settings.localepicker.LocaleListEditor.EXTRA_SYSTEM_LOCALE_DIALOG_TYPE; import static com.android.settings.localepicker.LocaleListEditor.LOCALE_SUGGESTION; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.provider.Settings; import android.text.TextUtils; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AppCompatActivity; /** * An Activity that launches the system locale settings page. */ public class NotificationActionActivity extends AppCompatActivity { private static final String TAG = "NotificationActionActivity"; private static final int INVALID_NOTIFICATION_ID = -1; private final ActivityResultLauncher<Intent> mStartForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { }); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); int notificationId = intent.getIntExtra(EXTRA_NOTIFICATION_ID, INVALID_NOTIFICATION_ID); String appLocale = intent.getStringExtra(EXTRA_APP_LOCALE); if (TextUtils.isEmpty(appLocale) || notificationId == INVALID_NOTIFICATION_ID) { finish(); return; } int savedNotificationID = getNotificationController(this).getNotificationId(appLocale); if (savedNotificationID == notificationId) { Intent actionIntent = new Intent(Settings.ACTION_LOCALE_SETTINGS); actionIntent.putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, LOCALE_SUGGESTION); actionIntent.putExtra(EXTRA_APP_LOCALE, appLocale); actionIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); getLauncher().launch(actionIntent); finish(); return; } } @VisibleForTesting protected NotificationController getNotificationController(Context context) { return NotificationController.getInstance(context); } @VisibleForTesting protected ActivityResultLauncher<Intent> getLauncher() { return mStartForResult; } } tests/robotests/src/com/android/settings/localepicker/LocaleListEditorTest.java +8 −9 Original line number Diff line number Diff line Loading @@ -17,8 +17,9 @@ package com.android.settings.localepicker; import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_APP_LOCALE; import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_NOTIFICATION_ID; import static com.android.settings.localepicker.LocaleDialogFragment.DIALOG_ADD_SYSTEM_LOCALE; import static com.android.settings.localepicker.LocaleListEditor.EXTRA_SYSTEM_LOCALE_DIALOG_TYPE; import static com.android.settings.localepicker.LocaleListEditor.LOCALE_SUGGESTION; import static com.google.common.truth.Truth.assertThat; Loading Loading @@ -96,7 +97,6 @@ public class LocaleListEditorTest { private static final String TAG_DIALOG_CONFIRM_SYSTEM_DEFAULT = "dialog_confirm_system_default"; 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 String EXTRA_SYSTEM_LOCALE_DIALOG_TYPE = "system_locale_dialog_type"; private static final int DIALOG_CONFIRM_SYSTEM_DEFAULT = 1; private static final int REQUEST_CONFIRM_SYSTEM_DEFAULT = 1; Loading Loading @@ -151,7 +151,7 @@ public class LocaleListEditorTest { mContext = spy(RuntimeEnvironment.application); mLocaleListEditor = spy(new LocaleListEditor()); when(mLocaleListEditor.getContext()).thenReturn(mContext); mActivity = Robolectric.buildActivity(FragmentActivity.class).get(); mActivity = spy(Robolectric.buildActivity(FragmentActivity.class).get()); when(mLocaleListEditor.getActivity()).thenReturn(mActivity); when(mLocaleListEditor.getNotificationController()).thenReturn( mNotificationController); Loading Loading @@ -402,7 +402,7 @@ public class LocaleListEditorTest { public void showDiallogForAddedLocale_invalidLocale_noDialog() { Intent intent = new Intent("ACTION") .putExtra(EXTRA_APP_LOCALE, "ab-CD") // invalid locale .putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, "locale_suggestion"); .putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, LOCALE_SUGGESTION); mActivity.setIntent(intent); mLocaleListEditor.onViewStateRestored(null); Loading Loading @@ -431,7 +431,7 @@ public class LocaleListEditorTest { LocaleList.setDefault(LocaleList.forLanguageTags("en-US,ar-AE-u-nu-arab")); Intent intent = new Intent("ACTION") .putExtra(EXTRA_APP_LOCALE, "ar-AE") .putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, "locale_suggestion"); .putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, LOCALE_SUGGESTION); mActivity.setIntent(intent); mLocaleListEditor.onViewStateRestored(null); Loading @@ -441,18 +441,17 @@ public class LocaleListEditorTest { } private void initIntentAndResourceForLocaleDialog() { int notificationId = 1000; Intent intent = new Intent("ACTION") .putExtra(EXTRA_APP_LOCALE, "ja-JP") .putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, "locale_suggestion") .putExtra(EXTRA_NOTIFICATION_ID, notificationId); .putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, LOCALE_SUGGESTION); mActivity.setIntent(intent); String[] supportedLocales = new String[]{"en-US", "ja-JP"}; View contentView = LayoutInflater.from(mActivity).inflate(R.layout.locale_dialog, null); doReturn(contentView).when(mLocaleListEditor).getLocaleDialogView(); when(mNotificationController.getNotificationId("ja-JP")).thenReturn(notificationId); when(mLocaleListEditor.getSupportedLocales()).thenReturn(supportedLocales); when(mContext.getPackageName()).thenReturn("com.android.settings"); when(mActivity.getCallingPackage()).thenReturn("com.android.settings"); } @Test Loading Loading
AndroidManifest.xml +5 −0 Original line number Diff line number Diff line Loading @@ -947,6 +947,11 @@ </intent-filter> </activity> <activity android:name=".localepicker.NotificationActionActivity" android:excludeFromRecents="true" android:theme="@android:style/Theme.NoDisplay"> </activity> <activity android:name=".Settings$LanguageAndInputSettingsActivity" android:label="@string/language_settings" Loading
src/com/android/settings/localepicker/AppLocalePickerActivity.java +1 −6 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import android.net.Uri; import android.os.Bundle; import android.os.LocaleList; import android.os.SystemClock; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; import android.view.MenuItem; Loading @@ -52,8 +51,6 @@ public class AppLocalePickerActivity extends SettingsBaseActivity private static final String TAG = AppLocalePickerActivity.class.getSimpleName(); private static final String CHANNEL_ID_SUGGESTION = "suggestion"; private static final String CHANNEL_ID_SUGGESTION_TO_USER = "Locale suggestion"; private static final String EXTRA_SYSTEM_LOCALE_DIALOG_TYPE = "system_locale_dialog_type"; private static final String LOCALE_SUGGESTION = "locale_suggestion"; static final String EXTRA_APP_LOCALE = "app_locale"; static final String EXTRA_NOTIFICATION_ID = "notification_id"; Loading Loading @@ -194,7 +191,6 @@ public class AppLocalePickerActivity extends SettingsBaseActivity channel.setSound(/* sound */ null, /* audioAttributes */ null); // silent notification notificationManager.createNotificationChannel(channel); } final NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID_SUGGESTION) .setSmallIcon(R.drawable.ic_settings_language) Loading @@ -213,8 +209,7 @@ public class AppLocalePickerActivity extends SettingsBaseActivity boolean isDeleteIntent) { Intent intent = isDeleteIntent ? new Intent(this, NotificationCancelReceiver.class) : new Intent(Settings.ACTION_LOCALE_SETTINGS) .putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, LOCALE_SUGGESTION) : new Intent(this, NotificationActionActivity.class) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.putExtra(EXTRA_APP_LOCALE, locale) Loading
src/com/android/settings/localepicker/LocaleListEditor.java +5 −14 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static android.os.UserManager.DISALLOW_CONFIG_LOCALE; import static com.android.settings.flags.Flags.localeNotificationEnabled; import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_APP_LOCALE; import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_NOTIFICATION_ID; import static com.android.settings.localepicker.LocaleDialogFragment.DIALOG_ADD_SYSTEM_LOCALE; import static com.android.settings.localepicker.LocaleDialogFragment.DIALOG_CONFIRM_SYSTEM_DEFAULT; Loading Loading @@ -71,6 +70,8 @@ import java.util.Locale; @SearchIndexable public class LocaleListEditor extends RestrictedSettingsFragment implements View.OnTouchListener { 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 LOCALE_SUGGESTION = "locale_suggestion"; private static final String TAG = LocaleListEditor.class.getSimpleName(); private static final String CFGKEY_REMOVE_MODE = "localeRemoveMode"; Loading @@ -81,11 +82,8 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View private static final String TAG_DIALOG_CONFIRM_SYSTEM_DEFAULT = "dialog_confirm_system_default"; 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 String EXTRA_SYSTEM_LOCALE_DIALOG_TYPE = "system_locale_dialog_type"; private static final String LOCALE_SUGGESTION = "locale_suggestion"; private static final int MENU_ID_REMOVE = Menu.FIRST + 1; private static final int REQUEST_LOCALE_PICKER = 0; private static final int INVALID_NOTIFICATION_ID = -1; private LocaleDragAndDropAdapter mAdapter; private Menu mMenu; Loading Loading @@ -282,9 +280,9 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View Intent intent = this.getIntent(); String dialogType = intent.getStringExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE); String localeTag = intent.getStringExtra(EXTRA_APP_LOCALE); int notificationId = intent.getIntExtra(EXTRA_NOTIFICATION_ID, INVALID_NOTIFICATION_ID); String callingPackage = getActivity().getCallingPackage(); if (!localeNotificationEnabled() || !isValidNotificationId(localeTag, notificationId) || !getContext().getPackageName().equals(callingPackage) || !isValidDialogType(dialogType) || !isValidLocale(localeTag) || LocaleUtils.isInSystemLocale(localeTag)) { Loading @@ -293,13 +291,6 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View return true; } private boolean isValidNotificationId(String localeTag, long id) { if (id == -1) { return false; } return id == getNotificationController().getNotificationId(localeTag); } @VisibleForTesting NotificationController getNotificationController() { return NotificationController.getInstance(getContext()); Loading Loading @@ -328,7 +319,7 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View } private void showDialogForAddedLocale() { Log.d(TAG, "Show confirmation dialog"); 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); Loading
src/com/android/settings/localepicker/NotificationActionActivity.java 0 → 100644 +77 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.localepicker; import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_APP_LOCALE; import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_NOTIFICATION_ID; import static com.android.settings.localepicker.LocaleListEditor.EXTRA_SYSTEM_LOCALE_DIALOG_TYPE; import static com.android.settings.localepicker.LocaleListEditor.LOCALE_SUGGESTION; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.provider.Settings; import android.text.TextUtils; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AppCompatActivity; /** * An Activity that launches the system locale settings page. */ public class NotificationActionActivity extends AppCompatActivity { private static final String TAG = "NotificationActionActivity"; private static final int INVALID_NOTIFICATION_ID = -1; private final ActivityResultLauncher<Intent> mStartForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { }); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); int notificationId = intent.getIntExtra(EXTRA_NOTIFICATION_ID, INVALID_NOTIFICATION_ID); String appLocale = intent.getStringExtra(EXTRA_APP_LOCALE); if (TextUtils.isEmpty(appLocale) || notificationId == INVALID_NOTIFICATION_ID) { finish(); return; } int savedNotificationID = getNotificationController(this).getNotificationId(appLocale); if (savedNotificationID == notificationId) { Intent actionIntent = new Intent(Settings.ACTION_LOCALE_SETTINGS); actionIntent.putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, LOCALE_SUGGESTION); actionIntent.putExtra(EXTRA_APP_LOCALE, appLocale); actionIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); getLauncher().launch(actionIntent); finish(); return; } } @VisibleForTesting protected NotificationController getNotificationController(Context context) { return NotificationController.getInstance(context); } @VisibleForTesting protected ActivityResultLauncher<Intent> getLauncher() { return mStartForResult; } }
tests/robotests/src/com/android/settings/localepicker/LocaleListEditorTest.java +8 −9 Original line number Diff line number Diff line Loading @@ -17,8 +17,9 @@ package com.android.settings.localepicker; import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_APP_LOCALE; import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_NOTIFICATION_ID; import static com.android.settings.localepicker.LocaleDialogFragment.DIALOG_ADD_SYSTEM_LOCALE; import static com.android.settings.localepicker.LocaleListEditor.EXTRA_SYSTEM_LOCALE_DIALOG_TYPE; import static com.android.settings.localepicker.LocaleListEditor.LOCALE_SUGGESTION; import static com.google.common.truth.Truth.assertThat; Loading Loading @@ -96,7 +97,6 @@ public class LocaleListEditorTest { private static final String TAG_DIALOG_CONFIRM_SYSTEM_DEFAULT = "dialog_confirm_system_default"; 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 String EXTRA_SYSTEM_LOCALE_DIALOG_TYPE = "system_locale_dialog_type"; private static final int DIALOG_CONFIRM_SYSTEM_DEFAULT = 1; private static final int REQUEST_CONFIRM_SYSTEM_DEFAULT = 1; Loading Loading @@ -151,7 +151,7 @@ public class LocaleListEditorTest { mContext = spy(RuntimeEnvironment.application); mLocaleListEditor = spy(new LocaleListEditor()); when(mLocaleListEditor.getContext()).thenReturn(mContext); mActivity = Robolectric.buildActivity(FragmentActivity.class).get(); mActivity = spy(Robolectric.buildActivity(FragmentActivity.class).get()); when(mLocaleListEditor.getActivity()).thenReturn(mActivity); when(mLocaleListEditor.getNotificationController()).thenReturn( mNotificationController); Loading Loading @@ -402,7 +402,7 @@ public class LocaleListEditorTest { public void showDiallogForAddedLocale_invalidLocale_noDialog() { Intent intent = new Intent("ACTION") .putExtra(EXTRA_APP_LOCALE, "ab-CD") // invalid locale .putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, "locale_suggestion"); .putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, LOCALE_SUGGESTION); mActivity.setIntent(intent); mLocaleListEditor.onViewStateRestored(null); Loading Loading @@ -431,7 +431,7 @@ public class LocaleListEditorTest { LocaleList.setDefault(LocaleList.forLanguageTags("en-US,ar-AE-u-nu-arab")); Intent intent = new Intent("ACTION") .putExtra(EXTRA_APP_LOCALE, "ar-AE") .putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, "locale_suggestion"); .putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, LOCALE_SUGGESTION); mActivity.setIntent(intent); mLocaleListEditor.onViewStateRestored(null); Loading @@ -441,18 +441,17 @@ public class LocaleListEditorTest { } private void initIntentAndResourceForLocaleDialog() { int notificationId = 1000; Intent intent = new Intent("ACTION") .putExtra(EXTRA_APP_LOCALE, "ja-JP") .putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, "locale_suggestion") .putExtra(EXTRA_NOTIFICATION_ID, notificationId); .putExtra(EXTRA_SYSTEM_LOCALE_DIALOG_TYPE, LOCALE_SUGGESTION); mActivity.setIntent(intent); String[] supportedLocales = new String[]{"en-US", "ja-JP"}; View contentView = LayoutInflater.from(mActivity).inflate(R.layout.locale_dialog, null); doReturn(contentView).when(mLocaleListEditor).getLocaleDialogView(); when(mNotificationController.getNotificationId("ja-JP")).thenReturn(notificationId); when(mLocaleListEditor.getSupportedLocales()).thenReturn(supportedLocales); when(mContext.getPackageName()).thenReturn("com.android.settings"); when(mActivity.getCallingPackage()).thenReturn("com.android.settings"); } @Test Loading