Merge "If data switched to grouped CBRS subscription, show its provider name." into qt-dev
am: b8c956824b
Change-Id: Ib1a227fa3e47500823100b6ff630bf768090ead9
This commit is contained in:
@@ -16,14 +16,22 @@
|
|||||||
|
|
||||||
package com.android.keyguard;
|
package com.android.keyguard;
|
||||||
|
|
||||||
|
import static android.telephony.PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE;
|
||||||
|
import static android.telephony.PhoneStateListener.LISTEN_NONE;
|
||||||
|
|
||||||
|
import static com.android.internal.telephony.PhoneConstants.MAX_PHONE_COUNT_DUAL_SIM;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.telephony.CarrierConfigManager;
|
||||||
|
import android.telephony.PhoneStateListener;
|
||||||
import android.telephony.ServiceState;
|
import android.telephony.ServiceState;
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -36,6 +44,7 @@ import com.android.settingslib.WirelessUtils;
|
|||||||
import com.android.systemui.Dependency;
|
import com.android.systemui.Dependency;
|
||||||
import com.android.systemui.keyguard.WakefulnessLifecycle;
|
import com.android.systemui.keyguard.WakefulnessLifecycle;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@@ -113,6 +122,17 @@ public class CarrierTextController {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
|
private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
|
||||||
|
@Override
|
||||||
|
public void onActiveDataSubscriptionIdChanged(int subId) {
|
||||||
|
mActiveMobileDataSubscription = subId;
|
||||||
|
if (mKeyguardUpdateMonitor != null) {
|
||||||
|
updateCarrierText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The status of this lock screen. Primarily used for widgets on LockScreen.
|
* The status of this lock screen. Primarily used for widgets on LockScreen.
|
||||||
*/
|
*/
|
||||||
@@ -200,6 +220,8 @@ public class CarrierTextController {
|
|||||||
* @param callback Callback to provide text updates
|
* @param callback Callback to provide text updates
|
||||||
*/
|
*/
|
||||||
public void setListening(CarrierTextCallback callback) {
|
public void setListening(CarrierTextCallback callback) {
|
||||||
|
TelephonyManager telephonyManager = ((TelephonyManager) mContext
|
||||||
|
.getSystemService(Context.TELEPHONY_SERVICE));
|
||||||
if (callback != null) {
|
if (callback != null) {
|
||||||
mCarrierTextCallback = callback;
|
mCarrierTextCallback = callback;
|
||||||
if (ConnectivityManager.from(mContext).isNetworkSupported(
|
if (ConnectivityManager.from(mContext).isNetworkSupported(
|
||||||
@@ -207,6 +229,8 @@ public class CarrierTextController {
|
|||||||
mKeyguardUpdateMonitor = KeyguardUpdateMonitor.getInstance(mContext);
|
mKeyguardUpdateMonitor = KeyguardUpdateMonitor.getInstance(mContext);
|
||||||
mKeyguardUpdateMonitor.registerCallback(mCallback);
|
mKeyguardUpdateMonitor.registerCallback(mCallback);
|
||||||
mWakefulnessLifecycle.addObserver(mWakefulnessObserver);
|
mWakefulnessLifecycle.addObserver(mWakefulnessObserver);
|
||||||
|
telephonyManager.listen(mPhoneStateListener,
|
||||||
|
LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE);
|
||||||
} else {
|
} else {
|
||||||
// Don't listen and clear out the text when the device isn't a phone.
|
// Don't listen and clear out the text when the device isn't a phone.
|
||||||
mKeyguardUpdateMonitor = null;
|
mKeyguardUpdateMonitor = null;
|
||||||
@@ -218,6 +242,35 @@ public class CarrierTextController {
|
|||||||
mKeyguardUpdateMonitor.removeCallback(mCallback);
|
mKeyguardUpdateMonitor.removeCallback(mCallback);
|
||||||
mWakefulnessLifecycle.removeObserver(mWakefulnessObserver);
|
mWakefulnessLifecycle.removeObserver(mWakefulnessObserver);
|
||||||
}
|
}
|
||||||
|
telephonyManager.listen(mPhoneStateListener, LISTEN_NONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* STOPSHIP(b/130246708) remove when no longer needed for testing purpose.
|
||||||
|
* @param subscriptions
|
||||||
|
*/
|
||||||
|
private void filterMobileSubscriptionInSameGroup(List<SubscriptionInfo> subscriptions) {
|
||||||
|
if (subscriptions.size() == MAX_PHONE_COUNT_DUAL_SIM) {
|
||||||
|
SubscriptionInfo info1 = subscriptions.get(0);
|
||||||
|
SubscriptionInfo info2 = subscriptions.get(1);
|
||||||
|
if (info1.getGroupUuid() != null && info1.getGroupUuid().equals(info2.getGroupUuid())) {
|
||||||
|
// If both subscriptions are primary, show both.
|
||||||
|
if (!info1.isOpportunistic() && !info2.isOpportunistic()) return;
|
||||||
|
|
||||||
|
// If carrier required, always show signal bar of primary subscription.
|
||||||
|
// Otherwise, show whichever subscription is currently active for Internet.
|
||||||
|
boolean alwaysShowPrimary = CarrierConfigManager.getDefaultConfig()
|
||||||
|
.getBoolean(CarrierConfigManager
|
||||||
|
.KEY_ALWAYS_SHOW_PRIMARY_SIGNAL_BAR_IN_OPPORTUNISTIC_NETWORK_BOOLEAN);
|
||||||
|
if (alwaysShowPrimary) {
|
||||||
|
subscriptions.remove(info1.isOpportunistic() ? info1 : info2);
|
||||||
|
} else {
|
||||||
|
subscriptions.remove(info1.getSubscriptionId() == mActiveMobileDataSubscription
|
||||||
|
? info2 : info1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -226,7 +279,17 @@ public class CarrierTextController {
|
|||||||
boolean anySimReadyAndInService = false;
|
boolean anySimReadyAndInService = false;
|
||||||
CharSequence displayText = null;
|
CharSequence displayText = null;
|
||||||
|
|
||||||
List<SubscriptionInfo> subs = mKeyguardUpdateMonitor.getSubscriptionInfo(false);
|
// STOPSHIP(b/130246708) revert to mKeyguardUpdateMonitor.getSubscriptionInfo(false).
|
||||||
|
SubscriptionManager subscriptionManager = ((SubscriptionManager) mContext.getSystemService(
|
||||||
|
Context.TELEPHONY_SUBSCRIPTION_SERVICE));
|
||||||
|
List<SubscriptionInfo> subs = subscriptionManager.getActiveSubscriptionInfoList(false);
|
||||||
|
|
||||||
|
if (subs == null) {
|
||||||
|
subs = new ArrayList<>();
|
||||||
|
} else {
|
||||||
|
filterMobileSubscriptionInSameGroup(subs);
|
||||||
|
}
|
||||||
|
|
||||||
final int numSubs = subs.size();
|
final int numSubs = subs.size();
|
||||||
final int[] subsIds = new int[numSubs];
|
final int[] subsIds = new int[numSubs];
|
||||||
// This array will contain in position i, the index of subscription in slot ID i.
|
// This array will contain in position i, the index of subscription in slot ID i.
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ import android.net.ConnectivityManager;
|
|||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.test.suitebuilder.annotation.SmallTest;
|
import android.test.suitebuilder.annotation.SmallTest;
|
||||||
import android.testing.AndroidTestingRunner;
|
import android.testing.AndroidTestingRunner;
|
||||||
@@ -81,6 +82,8 @@ public class CarrierTextControllerTest extends SysuiTestCase {
|
|||||||
private ConnectivityManager mConnectivityManager;
|
private ConnectivityManager mConnectivityManager;
|
||||||
@Mock
|
@Mock
|
||||||
private TelephonyManager mTelephonyManager;
|
private TelephonyManager mTelephonyManager;
|
||||||
|
@Mock
|
||||||
|
private SubscriptionManager mSubscriptionManager;
|
||||||
private CarrierTextController.CarrierTextCallbackInfo mCarrierTextCallbackInfo;
|
private CarrierTextController.CarrierTextCallbackInfo mCarrierTextCallbackInfo;
|
||||||
|
|
||||||
private CarrierTextController mCarrierTextController;
|
private CarrierTextController mCarrierTextController;
|
||||||
@@ -94,6 +97,7 @@ public class CarrierTextControllerTest extends SysuiTestCase {
|
|||||||
mContext.addMockSystemService(WifiManager.class, mWifiManager);
|
mContext.addMockSystemService(WifiManager.class, mWifiManager);
|
||||||
mContext.addMockSystemService(ConnectivityManager.class, mConnectivityManager);
|
mContext.addMockSystemService(ConnectivityManager.class, mConnectivityManager);
|
||||||
mContext.addMockSystemService(TelephonyManager.class, mTelephonyManager);
|
mContext.addMockSystemService(TelephonyManager.class, mTelephonyManager);
|
||||||
|
mContext.addMockSystemService(SubscriptionManager.class, mSubscriptionManager);
|
||||||
mDependency.injectMockDependency(WakefulnessLifecycle.class);
|
mDependency.injectMockDependency(WakefulnessLifecycle.class);
|
||||||
mDependency.injectTestDependency(Dependency.MAIN_HANDLER,
|
mDependency.injectTestDependency(Dependency.MAIN_HANDLER,
|
||||||
new Handler(mTestableLooper.getLooper()));
|
new Handler(mTestableLooper.getLooper()));
|
||||||
@@ -169,6 +173,7 @@ public class CarrierTextControllerTest extends SysuiTestCase {
|
|||||||
list.add(TEST_SUBSCRIPTION);
|
list.add(TEST_SUBSCRIPTION);
|
||||||
when(mKeyguardUpdateMonitor.getSimState(anyInt())).thenReturn(IccCardConstants.State.READY);
|
when(mKeyguardUpdateMonitor.getSimState(anyInt())).thenReturn(IccCardConstants.State.READY);
|
||||||
when(mKeyguardUpdateMonitor.getSubscriptionInfo(anyBoolean())).thenReturn(list);
|
when(mKeyguardUpdateMonitor.getSubscriptionInfo(anyBoolean())).thenReturn(list);
|
||||||
|
when(mSubscriptionManager.getActiveSubscriptionInfoList(anyBoolean())).thenReturn(list);
|
||||||
mKeyguardUpdateMonitor.mServiceStates = new HashMap<>();
|
mKeyguardUpdateMonitor.mServiceStates = new HashMap<>();
|
||||||
|
|
||||||
ArgumentCaptor<CarrierTextController.CarrierTextCallbackInfo> captor =
|
ArgumentCaptor<CarrierTextController.CarrierTextCallbackInfo> captor =
|
||||||
@@ -192,6 +197,7 @@ public class CarrierTextControllerTest extends SysuiTestCase {
|
|||||||
list.add(TEST_SUBSCRIPTION_ROAMING);
|
list.add(TEST_SUBSCRIPTION_ROAMING);
|
||||||
when(mKeyguardUpdateMonitor.getSimState(anyInt())).thenReturn(IccCardConstants.State.READY);
|
when(mKeyguardUpdateMonitor.getSimState(anyInt())).thenReturn(IccCardConstants.State.READY);
|
||||||
when(mKeyguardUpdateMonitor.getSubscriptionInfo(anyBoolean())).thenReturn(list);
|
when(mKeyguardUpdateMonitor.getSubscriptionInfo(anyBoolean())).thenReturn(list);
|
||||||
|
when(mSubscriptionManager.getActiveSubscriptionInfoList(anyBoolean())).thenReturn(list);
|
||||||
mKeyguardUpdateMonitor.mServiceStates = new HashMap<>();
|
mKeyguardUpdateMonitor.mServiceStates = new HashMap<>();
|
||||||
|
|
||||||
ArgumentCaptor<CarrierTextController.CarrierTextCallbackInfo> captor =
|
ArgumentCaptor<CarrierTextController.CarrierTextCallbackInfo> captor =
|
||||||
|
|||||||
Reference in New Issue
Block a user