diff options
Diffstat (limited to 'Settings/tests/robotests')
13 files changed, 155 insertions, 182 deletions
diff --git a/Settings/tests/robotests/Android.bp b/Settings/tests/robotests/Android.bp index 9fc8f9612..72ce36b90 100644 --- a/Settings/tests/robotests/Android.bp +++ b/Settings/tests/robotests/Android.bp @@ -14,9 +14,19 @@ package { android_robolectric_test { name: "TvSettingsRoboTests", - srcs: ["src/**/*.java"], + srcs: [ + "src/**/*.java", + "src/**/*.kt", + ], libs: ["services.core"], + + static_libs: [ + "Robolectric_shadows_androidx_fragment_upstream", + "Settings_robolectric_meta_service_file", + "SettingsLib-robo-testutils", + "Settings-robo-testutils", + ], java_resource_dirs: ["config"], @@ -25,4 +35,6 @@ android_robolectric_test { test_options: { timeout: 36000, }, + + upstream: true, } diff --git a/Settings/tests/robotests/config/robolectric.properties b/Settings/tests/robotests/config/robolectric.properties index 9a6053d0a..034345989 100644 --- a/Settings/tests/robotests/config/robolectric.properties +++ b/Settings/tests/robotests/config/robolectric.properties @@ -14,3 +14,5 @@ # limitations under the License. # sdk=NEWEST_SDK +instrumentedPackages=androidx + diff --git a/Settings/tests/robotests/src/com/android/tv/settings/autofill/AutofillPickerFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/autofill/AutofillPickerFragmentTest.java index 14d217fab..ed182bc2c 100644 --- a/Settings/tests/robotests/src/com/android/tv/settings/autofill/AutofillPickerFragmentTest.java +++ b/Settings/tests/robotests/src/com/android/tv/settings/autofill/AutofillPickerFragmentTest.java @@ -29,6 +29,7 @@ import android.provider.Settings; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; +import com.android.settings.testutils.shadow.ShadowUserManager; import com.android.tv.settings.RadioPreference; import com.android.tv.settings.testutils.ShadowInputMethodManager; import com.android.tv.settings.testutils.Utils; @@ -43,10 +44,9 @@ import org.mockito.Spy; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; -import org.robolectric.shadows.ShadowUserManager; @RunWith(RobolectricTestRunner.class) -@Config(shadows = {ShadowInputMethodManager.class}) +@Config(shadows = {ShadowInputMethodManager.class, ShadowUserManager.class}) public class AutofillPickerFragmentTest { @Spy private AutofillPickerFragment mFragment; diff --git a/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/AddPageBasedOnNetworkStateTest.java b/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/AddPageBasedOnNetworkStateTest.java deleted file mode 100644 index 1d11a61e3..000000000 --- a/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/AddPageBasedOnNetworkStateTest.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (C) 2017 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.tv.settings.connectivity.setup; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.robolectric.shadow.api.Shadow.extract; - -import android.content.Intent; -import android.net.wifi.ScanResult; -import android.net.wifi.WifiConfiguration; -import android.os.Bundle; - -import androidx.lifecycle.ViewModelProviders; - -import com.android.tv.settings.R; -import com.android.tv.settings.connectivity.WifiConfigHelper; -import com.android.tv.settings.connectivity.util.State; -import com.android.tv.settings.connectivity.util.StateMachine; -import com.android.tv.settings.testutils.ShadowStateMachine; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; -import org.robolectric.Robolectric; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.annotation.Config; - -@RunWith(RobolectricTestRunner.class) -@Config(shadows = ShadowStateMachine.class) -public class AddPageBasedOnNetworkStateTest { - private WifiSetupActivity mActivity; - private AddPageBasedOnNetworkState mAddPageBasedOnNetworkState; - private UserChoiceInfo mUserChoiceInfo; - @Mock - private State.StateCompleteListener mStateCompleteListener; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - mActivity = Mockito.spy(Robolectric.buildActivity( - WifiSetupActivity.class, new Intent().putExtras(new Bundle())).get()); - StateMachine stateMachine = ViewModelProviders.of(mActivity).get(StateMachine.class); - mUserChoiceInfo = ViewModelProviders.of(mActivity).get(UserChoiceInfo.class); - ShadowStateMachine shadowStateMachine = extract(stateMachine); - shadowStateMachine.setListener(mStateCompleteListener); - mAddPageBasedOnNetworkState = new AddPageBasedOnNetworkState(mActivity); - } - - @Test - public void testForward_otherNetwork() { - mUserChoiceInfo.init(); - mUserChoiceInfo.put(UserChoiceInfo.SELECT_WIFI, getString(R.string.other_network)); - mAddPageBasedOnNetworkState.processForward(); - verify(mStateCompleteListener).onComplete(StateMachine.OTHER_NETWORK); - } - - @Test - public void testForward_clearPassword_ssidNotMatch() { - mUserChoiceInfo.init(); - ScanResult scanResult = mock(ScanResult.class); - scanResult.SSID = "atv01"; - scanResult.capabilities = ""; - mUserChoiceInfo.setChosenNetwork(scanResult); - mUserChoiceInfo.put(UserChoiceInfo.PASSWORD, "123"); - WifiConfiguration wifiConfiguration = new WifiConfiguration(); - wifiConfiguration.SSID = "atv02"; - mUserChoiceInfo.setWifiConfiguration(wifiConfiguration); - WifiConfigHelper.saveConfiguration(mActivity, wifiConfiguration); - assertNotNull(mUserChoiceInfo.getChosenNetwork()); - mAddPageBasedOnNetworkState.processForward(); - assertNull(mUserChoiceInfo.getPageSummary(UserChoiceInfo.PASSWORD)); - } - - @Test - public void testForward_clearPassword_ssidIsNull() { - mUserChoiceInfo.init(); - ScanResult scanResult = mock(ScanResult.class); - scanResult.SSID = "atv"; - scanResult.capabilities = ""; - mUserChoiceInfo.setChosenNetwork(scanResult); - mUserChoiceInfo.put(UserChoiceInfo.PASSWORD, "123"); - mUserChoiceInfo.setWifiConfiguration(null); - mAddPageBasedOnNetworkState.processForward(); - assertNull(mUserChoiceInfo.getPageSummary(UserChoiceInfo.PASSWORD)); - } - - @Test - public void testForward_networkSaved() { - mUserChoiceInfo.init(); - ScanResult scanResult = mock(ScanResult.class); - scanResult.SSID = "atv"; - scanResult.capabilities = ""; - mUserChoiceInfo.setChosenNetwork(scanResult); - WifiConfiguration config = new WifiConfiguration(); - config.SSID = "\"atv\""; - WifiConfigHelper.saveConfiguration(mActivity, config); - mAddPageBasedOnNetworkState.processForward(); - verify(mStateCompleteListener).onComplete(StateMachine.KNOWN_NETWORK); - } - - @Test - public void testForward_networkNotSaved() { - mUserChoiceInfo.init(); - ScanResult scanResult = mock(ScanResult.class); - scanResult.SSID = "atv"; - scanResult.capabilities = ""; - mUserChoiceInfo.setChosenNetwork(scanResult); - mUserChoiceInfo.put(UserChoiceInfo.PASSWORD, "123"); - WifiConfiguration config = new WifiConfiguration(); - config.networkId = -1; - WifiConfigHelper.saveConfiguration(mActivity, config); - mAddPageBasedOnNetworkState.processForward(); - verify(mStateCompleteListener).onComplete(StateMachine.ADD_START); - } - - private String getString(int id) { - return RuntimeEnvironment.application.getString(id); - } -} diff --git a/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/AddStartStateTest.java b/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/AddStartStateTest.java index e31cfaf56..59aca204a 100644 --- a/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/AddStartStateTest.java +++ b/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/AddStartStateTest.java @@ -19,14 +19,20 @@ package com.android.tv.settings.connectivity.setup; import static org.mockito.Mockito.verify; import static org.robolectric.shadow.api.Shadow.extract; +import android.content.Context; import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiManager; +import androidx.fragment.app.FragmentActivity; import androidx.lifecycle.ViewModelProviders; -import com.android.settingslib.wifi.AccessPoint; +import com.android.tv.settings.library.network.AccessPoint; import com.android.tv.settings.connectivity.util.State; import com.android.tv.settings.connectivity.util.StateMachine; +import com.android.tv.settings.library.util.ThreadUtils; import com.android.tv.settings.testutils.ShadowStateMachine; +import com.android.wifitrackerlib.WifiEntry; +import com.android.wifitrackerlib.WifiTrackerInjector; import org.junit.Before; import org.junit.Test; @@ -40,16 +46,18 @@ import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) @Config(shadows = ShadowStateMachine.class) public class AddStartStateTest { - private WifiSetupActivity mActivity; + private FragmentActivity mActivity; private AddStartState mAddStartState; private UserChoiceInfo mUserChoiceInfo; @Mock private State.StateCompleteListener mStateCompleteListener; + @Mock private WifiManager mMockWifiManager; + @Mock private WifiTrackerInjector mWifiTrackerInjector; @Before public void setUp() { MockitoAnnotations.initMocks(this); - mActivity = Robolectric.buildActivity(WifiSetupActivity.class).get(); + mActivity = Robolectric.buildActivity(FragmentActivity.class).get(); StateMachine stateMachine = ViewModelProviders.of(mActivity).get(StateMachine.class); mUserChoiceInfo = ViewModelProviders.of(mActivity).get(UserChoiceInfo.class); ShadowStateMachine shadowStateMachine = extract(stateMachine); @@ -58,48 +66,47 @@ public class AddStartStateTest { } @Test - public void testForward_WEP_NeedPassword() { + public void testForward_needsWifiConfiguration_NeedPassword() { mUserChoiceInfo.init(); - mUserChoiceInfo.setWifiSecurity(AccessPoint.SECURITY_WEP); - mUserChoiceInfo.setWifiConfiguration(new WifiConfiguration()); + mUserChoiceInfo.setWifiEntry(makeWifiEntry( + /* needsWifiConfiguration= */ true, + /* shouldEditBeforeConnect= */ false)); mAddStartState.processForward(); verify(mStateCompleteListener).onComplete(StateMachine.PASSWORD); } @Test - public void testForward_WPA_NeedPassword() { + public void testForward_shouldEditBeforeConnect_NeedPassword() { mUserChoiceInfo.init(); - mUserChoiceInfo.setWifiSecurity(AccessPoint.SECURITY_PSK); - mUserChoiceInfo.setWifiConfiguration(new WifiConfiguration()); + mUserChoiceInfo.setWifiEntry(makeWifiEntry( + /* needsWifiConfiguration= */ false, + /* shouldEditBeforeConnect= */ true)); mAddStartState.processForward(); verify(mStateCompleteListener).onComplete(StateMachine.PASSWORD); } @Test - public void testForward_EAP_NeedPassword() { - mUserChoiceInfo.init(); - mUserChoiceInfo.setWifiSecurity(AccessPoint.SECURITY_EAP); - mUserChoiceInfo.setWifiConfiguration(new WifiConfiguration()); - mAddStartState.processForward(); - verify(mStateCompleteListener).onComplete(StateMachine.PASSWORD); - } - - @Test - public void testForward_AlreadyHasPassword() { - mUserChoiceInfo.init(); - mUserChoiceInfo.setWifiSecurity(AccessPoint.SECURITY_PSK); - WifiConfiguration config = new WifiConfiguration(); - config.preSharedKey = "PasswordTest"; - mUserChoiceInfo.setWifiConfiguration(config); + public void testForward_DoNotNeedPassword_Connect() { + mUserChoiceInfo.setWifiEntry(makeWifiEntry( + /* needsWifiConfiguration= */ false, + /* shouldEditBeforeConnect= */ false)); mAddStartState.processForward(); verify(mStateCompleteListener).onComplete(StateMachine.CONNECT); } - @Test - public void testForward_DoNotNeedPassword() { - mUserChoiceInfo.init(); - mUserChoiceInfo.setWifiSecurity(AccessPoint.SECURITY_NONE); - mAddStartState.processForward(); - verify(mStateCompleteListener).onComplete(StateMachine.CONNECT); + private WifiEntry makeWifiEntry(boolean needsWifiConfiguration, + boolean shouldEditBeforeConnect) { + return new WifiEntry(mWifiTrackerInjector, + ThreadUtils.getUiThreadHandler(), mMockWifiManager, false) { + @Override + public boolean needsWifiConfiguration() { + return needsWifiConfiguration; + } + + @Override + public boolean shouldEditBeforeConnect() { + return shouldEditBeforeConnect; + } + }; } } diff --git a/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/ConnectFailedFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/ConnectFailedFragmentTest.java index c41f8c505..990cae28e 100644 --- a/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/ConnectFailedFragmentTest.java +++ b/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/ConnectFailedFragmentTest.java @@ -21,9 +21,11 @@ import static org.mockito.Mockito.doReturn; import android.net.wifi.WifiConfiguration; +import androidx.fragment.app.FragmentActivity; import androidx.lifecycle.ViewModelProviders; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.MockitoAnnotations; @@ -32,18 +34,19 @@ import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; @RunWith(RobolectricTestRunner.class) +@Ignore // TODO(b/293309151) Find out how to mock WifiManager public class ConnectFailedFragmentTest { WifiConfiguration mWifiConfig; @Spy private ConnectFailedState.ConnectFailedFragment mConnectFailedFragment; - private WifiSetupActivity mActivity; + private FragmentActivity mActivity; private UserChoiceInfo mUserChoiceInfo; @Before public void setUp() { MockitoAnnotations.initMocks(this); - mActivity = Robolectric.buildActivity(WifiSetupActivity.class).create().get(); + mActivity = Robolectric.buildActivity(FragmentActivity.class).create().get(); doReturn(mActivity).when(mConnectFailedFragment).getContext(); mUserChoiceInfo = ViewModelProviders.of(mActivity).get(UserChoiceInfo.class); mUserChoiceInfo.init(); diff --git a/Settings/tests/robotests/src/com/android/tv/settings/device/DevicePrefFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/device/DevicePrefFragmentTest.java index b70d1762d..87e608582 100644 --- a/Settings/tests/robotests/src/com/android/tv/settings/device/DevicePrefFragmentTest.java +++ b/Settings/tests/robotests/src/com/android/tv/settings/device/DevicePrefFragmentTest.java @@ -36,6 +36,7 @@ import android.provider.Settings; import androidx.preference.Preference; +import com.android.settings.testutils.shadow.ShadowUserManager; import com.android.settingslib.development.DevelopmentSettingsEnabler; import com.android.tv.settings.R; import com.android.tv.settings.testutils.Utils; @@ -47,10 +48,11 @@ import org.mockito.MockitoAnnotations; import org.mockito.Spy; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowPackageManager; -import org.robolectric.shadows.ShadowUserManager; @RunWith(RobolectricTestRunner.class) +@Config(shadows = {ShadowUserManager.class}) public class DevicePrefFragmentTest { @Spy private DevicePrefFragment mDevicePrefFragment; diff --git a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/HdrFormatSelectionFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/HdrFormatSelectionFragmentTest.java index 9b8c9af3c..495797c00 100644 --- a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/HdrFormatSelectionFragmentTest.java +++ b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/HdrFormatSelectionFragmentTest.java @@ -43,6 +43,7 @@ import com.android.tv.settings.R; import com.android.tv.settings.RadioPreference; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; @@ -85,6 +86,7 @@ public class HdrFormatSelectionFragmentTest { verify(mDisplayManager).setAreUserDisabledHdrTypesAllowed(false); } + @Ignore // TODO(b/293314245) Find how to mock missing method in tests @Test public void testOnPreferenceTreeClick_withFormatDisabled_disablesHdrTypeInDisplayManager() { int[] deviceHdrTypes = { HDR_TYPE_DOLBY_VISION, diff --git a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/MatchContentFrameRateFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/MatchContentFrameRateFragmentTest.java index 769a643a4..0c45aa760 100644 --- a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/MatchContentFrameRateFragmentTest.java +++ b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/MatchContentFrameRateFragmentTest.java @@ -35,6 +35,7 @@ import org.mockito.MockitoAnnotations; import org.mockito.Spy; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.LooperMode; import org.robolectric.shadows.androidx.fragment.FragmentController; @RunWith(RobolectricTestRunner.class) @@ -152,6 +153,7 @@ public class MatchContentFrameRateFragmentTest { } @Test + @LooperMode(LooperMode.Mode.LEGACY) public void testDefaultPreference() { FragmentController.of(mMatchContentFrameRateFragment) .create(); diff --git a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/ResolutionSelectionFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/ResolutionSelectionFragmentTest.java index 40969edb1..5b2042b6d 100644 --- a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/ResolutionSelectionFragmentTest.java +++ b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/ResolutionSelectionFragmentTest.java @@ -139,11 +139,11 @@ public class ResolutionSelectionFragmentTest { ResolutionSelectionUtils.getRefreshRateString(59.944f))); assertThat(getChildrenSummaries(modePreference)).containsExactly( - "2160 x 2160", - "2160 x 2160", + "2,160 x 2,160", + "2,160 x 2,160", "576 x 576", - "800 x 1200", - "800 x 1200", + "800 x 1,200", + "800 x 1,200", "600 x 800", "600 x 800"); } diff --git a/Settings/tests/robotests/src/com/android/tv/settings/inputmethod/KeyboardFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/inputmethod/KeyboardFragmentTest.java index 4f968399b..a3d33bbd5 100644 --- a/Settings/tests/robotests/src/com/android/tv/settings/inputmethod/KeyboardFragmentTest.java +++ b/Settings/tests/robotests/src/com/android/tv/settings/inputmethod/KeyboardFragmentTest.java @@ -30,6 +30,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; +import com.android.settings.testutils.shadow.ShadowUserManager; import com.android.tv.settings.R; import com.android.tv.settings.testutils.ShadowInputMethodManager; import com.android.tv.settings.testutils.Utils; @@ -43,10 +44,9 @@ import org.mockito.Spy; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; -import org.robolectric.shadows.ShadowUserManager; @RunWith(RobolectricTestRunner.class) -@Config(shadows = {ShadowInputMethodManager.class}) +@Config(shadows = {ShadowInputMethodManager.class, ShadowUserManager.class}) public class KeyboardFragmentTest { @Spy private KeyboardFragment mKeyboardFragment; diff --git a/Settings/tests/robotests/src/com/android/tv/settings/system/locale/CountryPickerFragmentTest.kt b/Settings/tests/robotests/src/com/android/tv/settings/system/locale/CountryPickerFragmentTest.kt new file mode 100644 index 000000000..177c02539 --- /dev/null +++ b/Settings/tests/robotests/src/com/android/tv/settings/system/locale/CountryPickerFragmentTest.kt @@ -0,0 +1,53 @@ +package com.android.tv.settings.system.locale + +import android.os.Bundle +import androidx.lifecycle.ViewModelProvider +import com.android.internal.app.LocaleStore +import com.android.tv.settings.testutils.SettingsShadowActivityManager +import com.google.common.truth.Truth.assertThat +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import org.robolectric.shadows.androidx.fragment.FragmentController +import java.util.Locale + +@RunWith(RobolectricTestRunner::class) +@Config(shadows = [SettingsShadowActivityManager::class]) +class CountryPickerFragmentTest { + companion object { + val EXTRA_PARENT_LOCALE = "PARENT_LOCALE" + val parentLocale = LocaleStore.fromLocale(Locale.ENGLISH) + } + + @Test + fun testCountrySorting() { + val fragment = createCountryPickerFragment() + val preferenceScreen = fragment.preferenceScreen + assertThat(preferenceScreen.preferenceCount).isEqualTo(3) + assertThat(preferenceScreen.getPreference(0).title) + .isEqualTo(LocaleStore.fromLocale(Locale.CANADA).fullCountryNameNative) + assertThat(preferenceScreen.getPreference(1).title) + .isEqualTo(LocaleStore.fromLocale(Locale.UK).fullCountryNameNative) + assertThat(preferenceScreen.getPreference(2).title) + .isEqualTo(LocaleStore.fromLocale(Locale.US).fullCountryNameNative) + } + + private fun createCountryPickerFragment(): CountryPickerFragment { + val fragment = TestCountryPickerFragment() + fragment.arguments = Bundle().apply { + putSerializable(EXTRA_PARENT_LOCALE, parentLocale) + } + + return FragmentController.of(fragment).create().start().get() + } + + class TestCountryPickerFragment : CountryPickerFragment() { + override fun onCreatePreferences(savedInstanceState: Bundle?, s: String?) { + val viewModel = ViewModelProvider(requireActivity())[LocaleDataViewModel::class.java] + viewModel.mLocaleMap[parentLocale] = listOf(LocaleStore.fromLocale(Locale.UK), + LocaleStore.fromLocale(Locale.CANADA), LocaleStore.fromLocale(Locale.US)) + super.onCreatePreferences(savedInstanceState, s) + } + } +}
\ No newline at end of file diff --git a/Settings/tests/robotests/src/com/android/tv/settings/testutils/SettingsShadowActivityManager.kt b/Settings/tests/robotests/src/com/android/tv/settings/testutils/SettingsShadowActivityManager.kt new file mode 100644 index 000000000..96a9dcece --- /dev/null +++ b/Settings/tests/robotests/src/com/android/tv/settings/testutils/SettingsShadowActivityManager.kt @@ -0,0 +1,30 @@ +package com.android.tv.settings.testutils + +import android.app.ActivityManager +import android.app.IActivityManager +import android.content.res.Configuration +import android.os.LocaleList +import org.robolectric.annotation.Implements +import org.robolectric.shadows.ShadowActivityManager +import java.lang.reflect.Proxy +import java.util.Locale + + +@Implements(ActivityManager::class) +@Suppress("ACCIDENTAL_OVERRIDE") // override doesn't work with JvmStatic +open class SettingsShadowActivityManager : ShadowActivityManager() { + companion object { + val configuration: Configuration = Configuration().apply { + setLocales(LocaleList(Locale.US)) + } + + @JvmStatic + protected fun getService(): IActivityManager { + val clazz = IActivityManager::class.java + return Proxy.newProxyInstance(clazz.classLoader, arrayOf<Class<*>>(clazz)) { + _, method, _ -> + if (method.name == "getConfiguration") configuration else null + } as IActivityManager + } + } +} |