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
This commit is contained in:
Sunny Shao
2019-11-14 21:57:12 +08:00
parent 2b7c8937de
commit f3865e9264
6 changed files with 65 additions and 26 deletions

View File

@@ -24,8 +24,6 @@ import android.content.Context;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
import android.text.TextUtils; import android.text.TextUtils;
import android.widget.Toast; import android.widget.Toast;
@@ -159,10 +157,10 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
@VisibleForTesting @VisibleForTesting
CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) { CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) {
final String phoneNumber = DeviceInfoUtils.getFormattedPhoneNumber(mContext, final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext,
subscriptionInfo); subscriptionInfo);
return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default) return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default)
: BidiFormatter.getInstance().unicodeWrap(phoneNumber, TextDirectionHeuristics.LTR); : phoneNumber;
} }
@VisibleForTesting @VisibleForTesting

View File

@@ -35,8 +35,6 @@ import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.telephony.euicc.EuiccManager; import android.telephony.euicc.EuiccManager;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
import android.text.TextUtils; import android.text.TextUtils;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -224,8 +222,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
private void updatePhoneNumber() { private void updatePhoneNumber() {
// If formattedNumber is null or empty, it'll display as "Unknown". // If formattedNumber is null or empty, it'll display as "Unknown".
mDialog.setText(PHONE_NUMBER_VALUE_ID, BidiFormatter.getInstance().unicodeWrap( mDialog.setText(PHONE_NUMBER_VALUE_ID,
getPhoneNumber(), TextDirectionHeuristics.LTR)); DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext, mSubscriptionInfo));
} }
private void updateDataState(int state) { 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 @VisibleForTesting
SignalStrength getSignalStrength() { SignalStrength getSignalStrength() {
return mTelephonyManager.getSignalStrength(); return mTelephonyManager.getSignalStrength();

View File

@@ -23,8 +23,6 @@ import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
import android.text.TextUtils; import android.text.TextUtils;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
@@ -100,10 +98,10 @@ public class DeviceInfoSlice implements CustomSliceable {
if (subscriptionInfo == null) { if (subscriptionInfo == null) {
return mContext.getString(R.string.device_info_default); return mContext.getString(R.string.device_info_default);
} }
final String phoneNumber = DeviceInfoUtils.getFormattedPhoneNumber(mContext, final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext,
subscriptionInfo); subscriptionInfo);
return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default) return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default)
: BidiFormatter.getInstance().unicodeWrap(phoneNumber, TextDirectionHeuristics.LTR); : phoneNumber;
} }
private CharSequence getDeviceModel() { private CharSequence getDeviceModel() {

View File

@@ -28,14 +28,11 @@ import android.telephony.ServiceState;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
@@ -159,9 +156,7 @@ public class RenameMobileNetworkDialogFragment extends InstrumentedDialogFragmen
phoneTitle.setVisibility(info.isOpportunistic() ? View.GONE : View.VISIBLE); phoneTitle.setVisibility(info.isOpportunistic() ? View.GONE : View.VISIBLE);
final TextView phoneNumber = view.findViewById(R.id.number_value); final TextView phoneNumber = view.findViewById(R.id.number_value);
final String formattedNumber = DeviceInfoUtils.getFormattedPhoneNumber(getContext(), info); phoneNumber.setText(DeviceInfoUtils.getBidiFormattedPhoneNumber(getContext(), info));
phoneNumber.setText(BidiFormatter.getInstance().unicodeWrap(formattedNumber,
TextDirectionHeuristics.LTR));
} }
@Override @Override

View File

@@ -70,8 +70,11 @@ import android.telephony.euicc.EuiccManager;
import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleOwner;
import com.android.settings.R; 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 com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -80,10 +83,12 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows; import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowPackageManager; import org.robolectric.shadows.ShadowPackageManager;
import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowDeviceInfoUtils.class})
public class SimStatusDialogControllerTest { public class SimStatusDialogControllerTest {
@Mock @Mock
@@ -120,11 +125,11 @@ public class SimStatusDialogControllerTest {
mLifecycleOwner = () -> mLifecycle; mLifecycleOwner = () -> mLifecycle;
mLifecycle = new Lifecycle(mLifecycleOwner); mLifecycle = new Lifecycle(mLifecycleOwner);
mController = spy(new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */)); mController = spy(new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */));
ShadowDeviceInfoUtils.setPhoneNumber("");
doReturn(mServiceState).when(mController).getCurrentServiceState(); doReturn(mServiceState).when(mController).getCurrentServiceState();
doReturn(0).when(mSignalStrength).getDbm(); doReturn(0).when(mSignalStrength).getDbm();
doReturn(0).when(mSignalStrength).getAsuLevel(); doReturn(0).when(mSignalStrength).getAsuLevel();
doReturn(mPhoneStateListener).when(mController).getPhoneStateListener(); doReturn(mPhoneStateListener).when(mController).getPhoneStateListener();
doReturn("").when(mController).getPhoneNumber();
doReturn(mSignalStrength).when(mController).getSignalStrength(); doReturn(mSignalStrength).when(mController).getSignalStrength();
doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt()); doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt());
@@ -147,6 +152,11 @@ public class SimStatusDialogControllerTest {
shadowPackageManager.addPackage(sysUIPackageInfo); shadowPackageManager.addPackage(sysUIPackageInfo);
} }
@After
public void tearDown() {
ShadowDeviceInfoUtils.reset();
}
@Test @Test
public void initialize_updateNetworkProviderWithFoobarCarrier_shouldUpdateCarrierWithFoobar() { public void initialize_updateNetworkProviderWithFoobarCarrier_shouldUpdateCarrierWithFoobar() {
final CharSequence carrierName = "foobar"; final CharSequence carrierName = "foobar";
@@ -159,8 +169,10 @@ public class SimStatusDialogControllerTest {
@Test @Test
public void initialize_updatePhoneNumberWith1111111111_shouldUpdatePhoneNumber() { public void initialize_updatePhoneNumberWith1111111111_shouldUpdatePhoneNumber() {
final String phoneNumber = "1111111111"; ShadowDeviceInfoUtils.setPhoneNumber("1111111111");
doReturn(phoneNumber).when(mController).getPhoneNumber();
final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext,
mSubscriptionInfo);
mController.initialize(); mController.initialize();

View File

@@ -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;
}
}