Loading src/com/android/settings/localepicker/AppLocalePickerActivity.java +1 −7 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ import android.view.View; import android.widget.FrameLayout; import android.widget.ListView; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.LocalePickerWithRegion; import com.android.internal.app.LocaleStore; import com.android.settings.R; Loading @@ -38,10 +37,6 @@ import com.android.settings.applications.AppInfoBase; import com.android.settings.applications.appinfo.AppLocaleDetails; import com.android.settings.core.SettingsBaseActivity; /** * TODO(b/223503670): Add unit test for AppLocalePickerActivity. * A activity to show the locale picker and information page. */ public class AppLocalePickerActivity extends SettingsBaseActivity implements LocalePickerWithRegion.LocaleSelectedListener { private static final String TAG = AppLocalePickerActivity.class.getSimpleName(); Loading Loading @@ -128,8 +123,7 @@ public class AppLocalePickerActivity extends SettingsBaseActivity return appLocaleDetailsContainer; } @VisibleForTesting void launchLocalePickerPage() { private void launchLocalePickerPage() { // LocalePickerWithRegion use android.app.ListFragment. Thus, it can not use // getSupportFragmentManager() to add this into container. android.app.FragmentManager fragmentManager = getFragmentManager(); Loading tests/robotests/src/com/android/settings/localepicker/AppLocalePickerActivityTest.java 0 → 100644 +118 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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.google.common.truth.Truth.assertThat; import android.app.Activity; import android.app.ApplicationPackageManager; import android.content.Context; import android.content.Intent; import android.content.pm.InstallSourceInfo; import android.net.Uri; import android.os.Process; import android.os.UserHandle; import android.telephony.TelephonyManager; import androidx.fragment.app.Fragment; import com.android.settings.R; import com.android.settings.applications.AppInfoBase; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.Shadows; import org.robolectric.android.controller.ActivityController; import org.robolectric.annotation.Config; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; import org.robolectric.shadows.ShadowTelephonyManager; @RunWith(RobolectricTestRunner.class) @Config( shadows = { AppLocalePickerActivityTest.ShadowApplicationPackageManager.class, }) public class AppLocalePickerActivityTest { private static final String TEST_PACKAGE_NAME = "com.android.settings"; private static final Uri TEST_PACKAGE_URI = Uri.parse("package:" + TEST_PACKAGE_NAME); @Rule public MockitoRule rule = MockitoJUnit.rule(); @Test public void launchAppLocalePickerActivity_hasPackageName_success() { ActivityController<TestAppLocalePickerActivity> controller = initActivityController(true); controller.create(); assertThat(controller.get().isFinishing()).isFalse(); } @Test public void launchAppLocalePickerActivity_intentWithoutPackageName_failed() { ActivityController<TestAppLocalePickerActivity> controller = initActivityController(false); controller.create(); assertThat(controller.get().isFinishing()).isTrue(); } private ActivityController<TestAppLocalePickerActivity> initActivityController( boolean hasPackageName) { Intent data = new Intent(); if (hasPackageName) { data.setData(TEST_PACKAGE_URI); } data.putExtra(AppInfoBase.ARG_PACKAGE_UID, UserHandle.getUserId(Process.myUid())); ActivityController<TestAppLocalePickerActivity> activityController = Robolectric.buildActivity(TestAppLocalePickerActivity.class, data); Activity activity = activityController.get(); ShadowTelephonyManager shadowTelephonyManager = Shadows.shadowOf( activity.getSystemService(TelephonyManager.class)); shadowTelephonyManager.setSimCountryIso("US"); shadowTelephonyManager.setNetworkCountryIso("US"); return activityController; } private static class TestAppLocalePickerActivity extends AppLocalePickerActivity { @Override public Context createContextAsUser(UserHandle user, int flags) { // return the current context as a work profile return this; } } @Implements(ApplicationPackageManager.class) public static class ShadowApplicationPackageManager extends org.robolectric.shadows.ShadowApplicationPackageManager { @Implementation protected Object getInstallSourceInfo(String packageName) { return new InstallSourceInfo("", null, null, ""); } } } Loading
src/com/android/settings/localepicker/AppLocalePickerActivity.java +1 −7 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ import android.view.View; import android.widget.FrameLayout; import android.widget.ListView; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.LocalePickerWithRegion; import com.android.internal.app.LocaleStore; import com.android.settings.R; Loading @@ -38,10 +37,6 @@ import com.android.settings.applications.AppInfoBase; import com.android.settings.applications.appinfo.AppLocaleDetails; import com.android.settings.core.SettingsBaseActivity; /** * TODO(b/223503670): Add unit test for AppLocalePickerActivity. * A activity to show the locale picker and information page. */ public class AppLocalePickerActivity extends SettingsBaseActivity implements LocalePickerWithRegion.LocaleSelectedListener { private static final String TAG = AppLocalePickerActivity.class.getSimpleName(); Loading Loading @@ -128,8 +123,7 @@ public class AppLocalePickerActivity extends SettingsBaseActivity return appLocaleDetailsContainer; } @VisibleForTesting void launchLocalePickerPage() { private void launchLocalePickerPage() { // LocalePickerWithRegion use android.app.ListFragment. Thus, it can not use // getSupportFragmentManager() to add this into container. android.app.FragmentManager fragmentManager = getFragmentManager(); Loading
tests/robotests/src/com/android/settings/localepicker/AppLocalePickerActivityTest.java 0 → 100644 +118 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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.google.common.truth.Truth.assertThat; import android.app.Activity; import android.app.ApplicationPackageManager; import android.content.Context; import android.content.Intent; import android.content.pm.InstallSourceInfo; import android.net.Uri; import android.os.Process; import android.os.UserHandle; import android.telephony.TelephonyManager; import androidx.fragment.app.Fragment; import com.android.settings.R; import com.android.settings.applications.AppInfoBase; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.Shadows; import org.robolectric.android.controller.ActivityController; import org.robolectric.annotation.Config; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; import org.robolectric.shadows.ShadowTelephonyManager; @RunWith(RobolectricTestRunner.class) @Config( shadows = { AppLocalePickerActivityTest.ShadowApplicationPackageManager.class, }) public class AppLocalePickerActivityTest { private static final String TEST_PACKAGE_NAME = "com.android.settings"; private static final Uri TEST_PACKAGE_URI = Uri.parse("package:" + TEST_PACKAGE_NAME); @Rule public MockitoRule rule = MockitoJUnit.rule(); @Test public void launchAppLocalePickerActivity_hasPackageName_success() { ActivityController<TestAppLocalePickerActivity> controller = initActivityController(true); controller.create(); assertThat(controller.get().isFinishing()).isFalse(); } @Test public void launchAppLocalePickerActivity_intentWithoutPackageName_failed() { ActivityController<TestAppLocalePickerActivity> controller = initActivityController(false); controller.create(); assertThat(controller.get().isFinishing()).isTrue(); } private ActivityController<TestAppLocalePickerActivity> initActivityController( boolean hasPackageName) { Intent data = new Intent(); if (hasPackageName) { data.setData(TEST_PACKAGE_URI); } data.putExtra(AppInfoBase.ARG_PACKAGE_UID, UserHandle.getUserId(Process.myUid())); ActivityController<TestAppLocalePickerActivity> activityController = Robolectric.buildActivity(TestAppLocalePickerActivity.class, data); Activity activity = activityController.get(); ShadowTelephonyManager shadowTelephonyManager = Shadows.shadowOf( activity.getSystemService(TelephonyManager.class)); shadowTelephonyManager.setSimCountryIso("US"); shadowTelephonyManager.setNetworkCountryIso("US"); return activityController; } private static class TestAppLocalePickerActivity extends AppLocalePickerActivity { @Override public Context createContextAsUser(UserHandle user, int flags) { // return the current context as a work profile return this; } } @Implements(ApplicationPackageManager.class) public static class ShadowApplicationPackageManager extends org.robolectric.shadows.ShadowApplicationPackageManager { @Implementation protected Object getInstallSourceInfo(String packageName) { return new InstallSourceInfo("", null, null, ""); } } }