From f3865e926404ceab28d51846f6efa82940e575ac Mon Sep 17 00:00:00 2001 From: Sunny Shao Date: Thu, 14 Nov 2019 21:57:12 +0800 Subject: [PATCH] Synced the code from master branch Fixes: 144364245 Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.deviceinfo.PhoneNumberPreferenceControllerTest Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.deviceinfo.simstatus.SimStatusDialogControllerTest Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.network.telephony.RenameMobileNetworkDialogFragmentTest Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.homepage.contextualcards.deviceinfo.DeviceInfoSliceTest Change-Id: Ibb26f5a63a969b28915a226a0197bc4033c91346 Merged-In: I5dfb71ceb87a8f658ef7fbceacf460ef8d35593a --- .../PhoneNumberPreferenceController.java | 6 +-- .../simstatus/SimStatusDialogController.java | 11 +---- .../deviceinfo/DeviceInfoSlice.java | 6 +-- .../RenameMobileNetworkDialogFragment.java | 7 +-- .../SimStatusDialogControllerTest.java | 18 ++++++-- .../shadow/ShadowDeviceInfoUtils.java | 43 +++++++++++++++++++ 6 files changed, 65 insertions(+), 26 deletions(-) create mode 100644 tests/robotests/src/com/android/settings/testutils/shadow/ShadowDeviceInfoUtils.java diff --git a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java index 537c705d0bf..55e8dc2ac50 100644 --- a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java @@ -24,8 +24,6 @@ import android.content.Context; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; -import android.text.BidiFormatter; -import android.text.TextDirectionHeuristics; import android.text.TextUtils; import android.widget.Toast; @@ -159,10 +157,10 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { @VisibleForTesting CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) { - final String phoneNumber = DeviceInfoUtils.getFormattedPhoneNumber(mContext, + final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext, subscriptionInfo); return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default) - : BidiFormatter.getInstance().unicodeWrap(phoneNumber, TextDirectionHeuristics.LTR); + : phoneNumber; } @VisibleForTesting diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java index 86374b4d454..166eda3306c 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java @@ -35,8 +35,6 @@ import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; import android.telephony.TelephonyManager; import android.telephony.euicc.EuiccManager; -import android.text.BidiFormatter; -import android.text.TextDirectionHeuristics; import android.text.TextUtils; import androidx.annotation.NonNull; @@ -224,8 +222,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O private void updatePhoneNumber() { // If formattedNumber is null or empty, it'll display as "Unknown". - mDialog.setText(PHONE_NUMBER_VALUE_ID, BidiFormatter.getInstance().unicodeWrap( - getPhoneNumber(), TextDirectionHeuristics.LTR)); + mDialog.setText(PHONE_NUMBER_VALUE_ID, + DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext, mSubscriptionInfo)); } private void updateDataState(int state) { @@ -461,11 +459,6 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O }; } - @VisibleForTesting - String getPhoneNumber() { - return DeviceInfoUtils.getFormattedPhoneNumber(mContext, mSubscriptionInfo); - } - @VisibleForTesting SignalStrength getSignalStrength() { return mTelephonyManager.getSignalStrength(); diff --git a/src/com/android/settings/homepage/contextualcards/deviceinfo/DeviceInfoSlice.java b/src/com/android/settings/homepage/contextualcards/deviceinfo/DeviceInfoSlice.java index 48a9aa54617..f3baaa1db6a 100644 --- a/src/com/android/settings/homepage/contextualcards/deviceinfo/DeviceInfoSlice.java +++ b/src/com/android/settings/homepage/contextualcards/deviceinfo/DeviceInfoSlice.java @@ -23,8 +23,6 @@ import android.content.Intent; import android.net.Uri; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; -import android.text.BidiFormatter; -import android.text.TextDirectionHeuristics; import android.text.TextUtils; import androidx.annotation.VisibleForTesting; @@ -100,10 +98,10 @@ public class DeviceInfoSlice implements CustomSliceable { if (subscriptionInfo == null) { return mContext.getString(R.string.device_info_default); } - final String phoneNumber = DeviceInfoUtils.getFormattedPhoneNumber(mContext, + final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext, subscriptionInfo); return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default) - : BidiFormatter.getInstance().unicodeWrap(phoneNumber, TextDirectionHeuristics.LTR); + : phoneNumber; } private CharSequence getDeviceModel() { diff --git a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java index a28fc91e43a..2085cdf3f94 100644 --- a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java +++ b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java @@ -28,14 +28,11 @@ import android.telephony.ServiceState; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; -import android.text.BidiFormatter; -import android.text.TextDirectionHeuristics; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ImageView; @@ -159,9 +156,7 @@ public class RenameMobileNetworkDialogFragment extends InstrumentedDialogFragmen phoneTitle.setVisibility(info.isOpportunistic() ? View.GONE : View.VISIBLE); final TextView phoneNumber = view.findViewById(R.id.number_value); - final String formattedNumber = DeviceInfoUtils.getFormattedPhoneNumber(getContext(), info); - phoneNumber.setText(BidiFormatter.getInstance().unicodeWrap(formattedNumber, - TextDirectionHeuristics.LTR)); + phoneNumber.setText(DeviceInfoUtils.getBidiFormattedPhoneNumber(getContext(), info)); } @Override diff --git a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java index 0f39fc9a520..147e627b8b2 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java @@ -70,8 +70,11 @@ import android.telephony.euicc.EuiccManager; import androidx.lifecycle.LifecycleOwner; import com.android.settings.R; +import com.android.settings.testutils.shadow.ShadowDeviceInfoUtils; +import com.android.settingslib.DeviceInfoUtils; import com.android.settingslib.core.lifecycle.Lifecycle; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -80,10 +83,12 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.Shadows; +import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowPackageManager; import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) +@Config(shadows = {ShadowDeviceInfoUtils.class}) public class SimStatusDialogControllerTest { @Mock @@ -120,11 +125,11 @@ public class SimStatusDialogControllerTest { mLifecycleOwner = () -> mLifecycle; mLifecycle = new Lifecycle(mLifecycleOwner); mController = spy(new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */)); + ShadowDeviceInfoUtils.setPhoneNumber(""); doReturn(mServiceState).when(mController).getCurrentServiceState(); doReturn(0).when(mSignalStrength).getDbm(); doReturn(0).when(mSignalStrength).getAsuLevel(); doReturn(mPhoneStateListener).when(mController).getPhoneStateListener(); - doReturn("").when(mController).getPhoneNumber(); doReturn(mSignalStrength).when(mController).getSignalStrength(); doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt()); @@ -147,6 +152,11 @@ public class SimStatusDialogControllerTest { shadowPackageManager.addPackage(sysUIPackageInfo); } + @After + public void tearDown() { + ShadowDeviceInfoUtils.reset(); + } + @Test public void initialize_updateNetworkProviderWithFoobarCarrier_shouldUpdateCarrierWithFoobar() { final CharSequence carrierName = "foobar"; @@ -159,8 +169,10 @@ public class SimStatusDialogControllerTest { @Test public void initialize_updatePhoneNumberWith1111111111_shouldUpdatePhoneNumber() { - final String phoneNumber = "1111111111"; - doReturn(phoneNumber).when(mController).getPhoneNumber(); + ShadowDeviceInfoUtils.setPhoneNumber("1111111111"); + + final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext, + mSubscriptionInfo); mController.initialize(); diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDeviceInfoUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDeviceInfoUtils.java new file mode 100644 index 00000000000..dda98e356b5 --- /dev/null +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDeviceInfoUtils.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2019 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.testutils.shadow; + +import android.content.Context; +import android.telephony.SubscriptionInfo; + +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; +import org.robolectric.annotation.Resetter; + +@Implements(com.android.settingslib.DeviceInfoUtils.class) +public class ShadowDeviceInfoUtils { + private static String sPhoneNumber; + + @Resetter + public static void reset() { + sPhoneNumber = ""; + } + + @Implementation + public static String getBidiFormattedPhoneNumber(Context context, + SubscriptionInfo subscriptionInfo) { + return sPhoneNumber; + } + + public static void setPhoneNumber(String phoneNumber) { + sPhoneNumber = phoneNumber; + } +} \ No newline at end of file