OSDN Git Service

Use the getBidiFormattedPhoneNumber to replace getFormattedPhoneNumber
authorSunny Shao <sunnyshao@google.com>
Fri, 8 Nov 2019 03:44:55 +0000 (11:44 +0800)
committerSunny Shao <sunnyshao@google.com>
Fri, 8 Nov 2019 08:36:33 +0000 (16:36 +0800)
Fixes: 123698996
Test: make RunSettingsGoogleRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo.PhoneNumberPreferenceControllerTest
Test: make RunSettingsGoogleRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo.simstatus.SimStatusDialogControllerTest
Test: make RunSettingsGoogleRoboTests -j ROBOTEST_FILTER=com.android.settings.network.telephony.RenameMobileNetworkDialogFragmentTest
Test: make RunSettingsGoogleRoboTests -j ROBOTEST_FILTER=com.android.settings.homepage.contextualcards.deviceinfo.DeviceInfoSliceTest
Change-Id: I5dfb71ceb87a8f658ef7fbceacf460ef8d35593a

src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
src/com/android/settings/homepage/contextualcards/deviceinfo/DeviceInfoSlice.java
src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java
tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
tests/robotests/src/com/android/settings/testutils/shadow/ShadowDeviceInfoUtils.java [new file with mode: 0644]

index 52ecc97..71bd8c5 100644 (file)
@@ -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;
 
@@ -160,10 +158,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
index 86374b4..857f535 100644 (file)
@@ -26,17 +26,15 @@ import android.os.Bundle;
 import android.os.PersistableBundle;
 import android.os.UserHandle;
 import android.telephony.CarrierConfigManager;
-import android.telephony.SmsCbMessage;
 import android.telephony.PhoneStateListener;
 import android.telephony.ServiceState;
 import android.telephony.SignalStrength;
+import android.telephony.SmsCbMessage;
 import android.telephony.SubscriptionInfo;
 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;
@@ -143,9 +141,9 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
         mSlotIndex = slotId;
         mSubscriptionInfo = getPhoneSubscriptionInfo(slotId);
 
-        mTelephonyManager =  mContext.getSystemService(TelephonyManager.class);
-        mCarrierConfigManager =  mContext.getSystemService(CarrierConfigManager.class);
-        mEuiccManager =  mContext.getSystemService(EuiccManager.class);
+        mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
+        mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class);
+        mEuiccManager = mContext.getSystemService(EuiccManager.class);
         mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class);
 
         mRes = mContext.getResources();
@@ -184,9 +182,9 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
 
         mTelephonyManager.createForSubscriptionId(mSubscriptionInfo.getSubscriptionId())
                 .listen(mPhoneStateListener,
-                PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
-                        | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
-                        | PhoneStateListener.LISTEN_SERVICE_STATE);
+                        PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
+                                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
+                                | PhoneStateListener.LISTEN_SERVICE_STATE);
         mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener);
 
         if (mShowLatestAreaInfo) {
@@ -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) {
@@ -407,13 +405,14 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
     private void updateImsRegistrationState() {
         final int subscriptionId = mSubscriptionInfo.getSubscriptionId();
         final PersistableBundle carrierConfig =
-            mCarrierConfigManager.getConfigForSubId(subscriptionId);
+                mCarrierConfigManager.getConfigForSubId(subscriptionId);
         final boolean showImsRegState = carrierConfig == null ? false :
-            carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL);
+                carrierConfig.getBoolean(
+                        CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL);
         if (showImsRegState) {
             final boolean isImsRegistered = mTelephonyManager.isImsRegistered(subscriptionId);
             mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(isImsRegistered ?
-                R.string.ims_reg_status_registered : R.string.ims_reg_status_not_registered));
+                    R.string.ims_reg_status_registered : R.string.ims_reg_status_not_registered));
         } else {
             mDialog.removeSettingFromScreen(IMS_REGISTRATION_STATE_LABEL_ID);
             mDialog.removeSettingFromScreen(IMS_REGISTRATION_STATE_VALUE_ID);
@@ -462,11 +461,6 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
     }
 
     @VisibleForTesting
-    String getPhoneNumber() {
-        return DeviceInfoUtils.getFormattedPhoneNumber(mContext, mSubscriptionInfo);
-    }
-
-    @VisibleForTesting
     SignalStrength getSignalStrength() {
         return mTelephonyManager.getSignalStrength();
     }
index 48a9aa5..f3baaa1 100644 (file)
@@ -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() {
index a28fc91..f572927 100644 (file)
@@ -28,29 +28,26 @@ 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;
 import android.widget.Spinner;
 import android.widget.TextView;
 
-import com.android.settings.R;
-import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settingslib.DeviceInfoUtils;
-
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 import androidx.appcompat.app.AlertDialog;
 
+import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settingslib.DeviceInfoUtils;
+
 /**
  * A dialog allowing the display name of a mobile network subscription to be changed
  */
@@ -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
index 0f39fc9..3ecdcff 100644 (file)
 
 package com.android.settings.deviceinfo.simstatus;
 
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .CELL_DATA_NETWORK_TYPE_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .CELL_VOICE_NETWORK_TYPE_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.CELL_DATA_NETWORK_TYPE_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.CELL_VOICE_NETWORK_TYPE_VALUE_ID;
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.EID_INFO_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .ICCID_INFO_LABEL_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .ICCID_INFO_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .IMS_REGISTRATION_STATE_LABEL_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .IMS_REGISTRATION_STATE_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .NETWORK_PROVIDER_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .OPERATOR_INFO_LABEL_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .OPERATOR_INFO_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .PHONE_NUMBER_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .ROAMING_INFO_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .SERVICE_STATE_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .SIGNAL_STRENGTH_LABEL_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .SIGNAL_STRENGTH_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ICCID_INFO_LABEL_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ICCID_INFO_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.IMS_REGISTRATION_STATE_LABEL_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.IMS_REGISTRATION_STATE_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.NETWORK_PROVIDER_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.OPERATOR_INFO_LABEL_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.OPERATOR_INFO_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.PHONE_NUMBER_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ROAMING_INFO_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SERVICE_STATE_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SIGNAL_STRENGTH_LABEL_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SIGNAL_STRENGTH_VALUE_ID;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
@@ -70,8 +56,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 +69,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 +111,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());
 
@@ -141,12 +132,17 @@ public class SimStatusDialogControllerTest {
                 .thenReturn(true);
 
         final ShadowPackageManager shadowPackageManager =
-            Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager());
+                Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager());
         final PackageInfo sysUIPackageInfo = new PackageInfo();
         sysUIPackageInfo.packageName = "com.android.systemui";
         shadowPackageManager.addPackage(sysUIPackageInfo);
     }
 
+    @After
+    public void tearDown() {
+        ShadowDeviceInfoUtils.reset();
+    }
+
     @Test
     public void initialize_updateNetworkProviderWithFoobarCarrier_shouldUpdateCarrierWithFoobar() {
         final CharSequence carrierName = "foobar";
@@ -159,8 +155,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();
 
@@ -239,7 +237,7 @@ public class SimStatusDialogControllerTest {
         mController.initialize();
 
         final String signalStrengthString =
-            mContext.getString(R.string.sim_signal_strength, signalDbm, signalAsu);
+                mContext.getString(R.string.sim_signal_strength, signalDbm, signalAsu);
         verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
     }
 
@@ -321,7 +319,7 @@ public class SimStatusDialogControllerTest {
     public void initialize_doNotShowSignalStrength_shouldRemoveSignalStrengthSetting() {
         when(mPersistableBundle.getBoolean(
                 CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL))
-            .thenReturn(false);
+                .thenReturn(false);
 
         mController.initialize();
 
@@ -377,31 +375,31 @@ public class SimStatusDialogControllerTest {
     @Test
     public void initialize_imsRegistered_shouldSetImsRegistrationStateSummaryToRegisterd() {
         when(mPersistableBundle.getBoolean(
-            CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
+                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
         when(mTelephonyManager.isImsRegistered(anyInt())).thenReturn(true);
 
         mController.initialize();
 
         verify(mDialog).setText(IMS_REGISTRATION_STATE_VALUE_ID,
-            mContext.getString(R.string.ims_reg_status_registered));
+                mContext.getString(R.string.ims_reg_status_registered));
     }
 
     @Test
     public void initialize_imsNotRegistered_shouldSetImsRegistrationStateSummaryToNotRegisterd() {
         when(mPersistableBundle.getBoolean(
-            CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
+                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
         when(mTelephonyManager.isImsRegistered(anyInt())).thenReturn(false);
 
         mController.initialize();
 
         verify(mDialog).setText(IMS_REGISTRATION_STATE_VALUE_ID,
-            mContext.getString(R.string.ims_reg_status_not_registered));
+                mContext.getString(R.string.ims_reg_status_not_registered));
     }
 
     @Test
     public void initialize_showImsRegistration_shouldNotRemoveImsRegistrationStateSetting() {
         when(mPersistableBundle.getBoolean(
-            CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
+                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
 
         mController.initialize();
 
@@ -411,7 +409,7 @@ public class SimStatusDialogControllerTest {
     @Test
     public void initialize_doNotShowImsRegistration_shouldRemoveImsRegistrationStateSetting() {
         when(mPersistableBundle.getBoolean(
-            CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(false);
+                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(false);
 
         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 (file)
index 0000000..f51cfe3
--- /dev/null
@@ -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;
+    }
+}