Merge changes I1bef3f30,I38f76a74,I0b1dd8e7,Id1a02134,I405ad385 into tm-qpr-dev
* changes: Remove support for COMBINED_SIGNAL_ICONS Create a MobileStatusTrackerFactory Change from deprecated telephony api [Cleanup] Order NetworkController's intent filters Add an @Inject-able MobileSignalControllerFactory
This commit is contained in:
@@ -44,6 +44,8 @@ public class MobileStatusTracker {
|
|||||||
private final Handler mReceiverHandler;
|
private final Handler mReceiverHandler;
|
||||||
private final MobileTelephonyCallback mTelephonyCallback;
|
private final MobileTelephonyCallback mTelephonyCallback;
|
||||||
|
|
||||||
|
private boolean mListening = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MobileStatusTracker constructors
|
* MobileStatusTracker constructors
|
||||||
*
|
*
|
||||||
@@ -76,6 +78,7 @@ public class MobileStatusTracker {
|
|||||||
* Config the MobileStatusTracker to start or stop monitoring platform signals.
|
* Config the MobileStatusTracker to start or stop monitoring platform signals.
|
||||||
*/
|
*/
|
||||||
public void setListening(boolean listening) {
|
public void setListening(boolean listening) {
|
||||||
|
mListening = listening;
|
||||||
if (listening) {
|
if (listening) {
|
||||||
mPhone.registerTelephonyCallback(mReceiverHandler::post, mTelephonyCallback);
|
mPhone.registerTelephonyCallback(mReceiverHandler::post, mTelephonyCallback);
|
||||||
} else {
|
} else {
|
||||||
@@ -83,6 +86,10 @@ public class MobileStatusTracker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isListening() {
|
||||||
|
return mListening;
|
||||||
|
}
|
||||||
|
|
||||||
private void updateDataSim() {
|
private void updateDataSim() {
|
||||||
int activeDataSubId = mDefaults.getActiveDataSubId();
|
int activeDataSubId = mDefaults.getActiveDataSubId();
|
||||||
if (SubscriptionManager.isValidSubscriptionId(activeDataSubId)) {
|
if (SubscriptionManager.isValidSubscriptionId(activeDataSubId)) {
|
||||||
|
|||||||
@@ -134,18 +134,9 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
|
|||||||
mQSCarrierGroupController
|
mQSCarrierGroupController
|
||||||
.setOnSingleCarrierChangedListener(mView::setIsSingleCarrier);
|
.setOnSingleCarrierChangedListener(mView::setIsSingleCarrier);
|
||||||
|
|
||||||
List<String> rssiIgnoredSlots;
|
List<String> rssiIgnoredSlots = List.of(
|
||||||
|
getResources().getString(com.android.internal.R.string.status_bar_mobile)
|
||||||
if (mFeatureFlags.isEnabled(Flags.COMBINED_STATUS_BAR_SIGNAL_ICONS)) {
|
);
|
||||||
rssiIgnoredSlots = List.of(
|
|
||||||
getResources().getString(com.android.internal.R.string.status_bar_no_calling),
|
|
||||||
getResources().getString(com.android.internal.R.string.status_bar_call_strength)
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
rssiIgnoredSlots = List.of(
|
|
||||||
getResources().getString(com.android.internal.R.string.status_bar_mobile)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
mView.onAttach(mIconManager, mQSExpansionPathInterpolator, rssiIgnoredSlots,
|
mView.onAttach(mIconManager, mQSExpansionPathInterpolator, rssiIgnoredSlots,
|
||||||
mInsetsProvider, mFeatureFlags.isEnabled(Flags.COMBINED_QS_HEADERS));
|
mInsetsProvider, mFeatureFlags.isEnabled(Flags.COMBINED_QS_HEADERS));
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ data class CellSignalState(
|
|||||||
@JvmField val contentDescription: String? = null,
|
@JvmField val contentDescription: String? = null,
|
||||||
@JvmField val typeContentDescription: String? = null,
|
@JvmField val typeContentDescription: String? = null,
|
||||||
@JvmField val roaming: Boolean = false,
|
@JvmField val roaming: Boolean = false,
|
||||||
@JvmField val providerModelBehavior: Boolean = false
|
|
||||||
) {
|
) {
|
||||||
/**
|
/**
|
||||||
* Changes the visibility of this state by returning a copy with the visibility changed.
|
* Changes the visibility of this state by returning a copy with the visibility changed.
|
||||||
@@ -41,4 +40,4 @@ data class CellSignalState(
|
|||||||
if (this.visible == visible) return this
|
if (this.visible == visible) return this
|
||||||
else return copy(visible = visible)
|
else return copy(visible = visible)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class QSCarrier extends LinearLayout {
|
|||||||
private View mSpacer;
|
private View mSpacer;
|
||||||
@Nullable
|
@Nullable
|
||||||
private CellSignalState mLastSignalState;
|
private CellSignalState mLastSignalState;
|
||||||
private boolean mProviderModelInitialized = false;
|
private boolean mMobileSignalInitialized = false;
|
||||||
private boolean mIsSingleCarrier;
|
private boolean mIsSingleCarrier;
|
||||||
|
|
||||||
public QSCarrier(Context context) {
|
public QSCarrier(Context context) {
|
||||||
@@ -96,35 +96,25 @@ public class QSCarrier extends LinearLayout {
|
|||||||
mMobileRoaming.setImageTintList(colorStateList);
|
mMobileRoaming.setImageTintList(colorStateList);
|
||||||
mMobileSignal.setImageTintList(colorStateList);
|
mMobileSignal.setImageTintList(colorStateList);
|
||||||
|
|
||||||
if (state.providerModelBehavior) {
|
if (!mMobileSignalInitialized) {
|
||||||
if (!mProviderModelInitialized) {
|
mMobileSignalInitialized = true;
|
||||||
mProviderModelInitialized = true;
|
mMobileSignal.setImageDrawable(new SignalDrawable(mContext));
|
||||||
mMobileSignal.setImageDrawable(
|
|
||||||
mContext.getDrawable(R.drawable.ic_qs_no_calling_sms));
|
|
||||||
}
|
|
||||||
mMobileSignal.setImageDrawable(mContext.getDrawable(state.mobileSignalIconId));
|
|
||||||
mMobileSignal.setContentDescription(state.contentDescription);
|
|
||||||
} else {
|
|
||||||
if (!mProviderModelInitialized) {
|
|
||||||
mProviderModelInitialized = true;
|
|
||||||
mMobileSignal.setImageDrawable(new SignalDrawable(mContext));
|
|
||||||
}
|
|
||||||
mMobileSignal.setImageLevel(state.mobileSignalIconId);
|
|
||||||
StringBuilder contentDescription = new StringBuilder();
|
|
||||||
if (state.contentDescription != null) {
|
|
||||||
contentDescription.append(state.contentDescription).append(", ");
|
|
||||||
}
|
|
||||||
if (state.roaming) {
|
|
||||||
contentDescription
|
|
||||||
.append(mContext.getString(R.string.data_connection_roaming))
|
|
||||||
.append(", ");
|
|
||||||
}
|
|
||||||
// TODO: show mobile data off/no internet text for 5 seconds before carrier text
|
|
||||||
if (hasValidTypeContentDescription(state.typeContentDescription)) {
|
|
||||||
contentDescription.append(state.typeContentDescription);
|
|
||||||
}
|
|
||||||
mMobileSignal.setContentDescription(contentDescription);
|
|
||||||
}
|
}
|
||||||
|
mMobileSignal.setImageLevel(state.mobileSignalIconId);
|
||||||
|
StringBuilder contentDescription = new StringBuilder();
|
||||||
|
if (state.contentDescription != null) {
|
||||||
|
contentDescription.append(state.contentDescription).append(", ");
|
||||||
|
}
|
||||||
|
if (state.roaming) {
|
||||||
|
contentDescription
|
||||||
|
.append(mContext.getString(R.string.data_connection_roaming))
|
||||||
|
.append(", ");
|
||||||
|
}
|
||||||
|
// TODO: show mobile data off/no internet text for 5 seconds before carrier text
|
||||||
|
if (hasValidTypeContentDescription(state.typeContentDescription)) {
|
||||||
|
contentDescription.append(state.typeContentDescription);
|
||||||
|
}
|
||||||
|
mMobileSignal.setContentDescription(contentDescription);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,10 +42,7 @@ import com.android.systemui.R;
|
|||||||
import com.android.systemui.dagger.SysUISingleton;
|
import com.android.systemui.dagger.SysUISingleton;
|
||||||
import com.android.systemui.dagger.qualifiers.Background;
|
import com.android.systemui.dagger.qualifiers.Background;
|
||||||
import com.android.systemui.dagger.qualifiers.Main;
|
import com.android.systemui.dagger.qualifiers.Main;
|
||||||
import com.android.systemui.flags.FeatureFlags;
|
|
||||||
import com.android.systemui.flags.Flags;
|
|
||||||
import com.android.systemui.plugins.ActivityStarter;
|
import com.android.systemui.plugins.ActivityStarter;
|
||||||
import com.android.systemui.statusbar.connectivity.IconState;
|
|
||||||
import com.android.systemui.statusbar.connectivity.MobileDataIndicators;
|
import com.android.systemui.statusbar.connectivity.MobileDataIndicators;
|
||||||
import com.android.systemui.statusbar.connectivity.NetworkController;
|
import com.android.systemui.statusbar.connectivity.NetworkController;
|
||||||
import com.android.systemui.statusbar.connectivity.SignalCallback;
|
import com.android.systemui.statusbar.connectivity.SignalCallback;
|
||||||
@@ -78,7 +75,6 @@ public class QSCarrierGroupController {
|
|||||||
private QSCarrier[] mCarrierGroups = new QSCarrier[SIM_SLOTS];
|
private QSCarrier[] mCarrierGroups = new QSCarrier[SIM_SLOTS];
|
||||||
private int[] mLastSignalLevel = new int[SIM_SLOTS];
|
private int[] mLastSignalLevel = new int[SIM_SLOTS];
|
||||||
private String[] mLastSignalLevelDescription = new String[SIM_SLOTS];
|
private String[] mLastSignalLevelDescription = new String[SIM_SLOTS];
|
||||||
private final boolean mProviderModel;
|
|
||||||
private final CarrierConfigTracker mCarrierConfigTracker;
|
private final CarrierConfigTracker mCarrierConfigTracker;
|
||||||
|
|
||||||
private boolean mIsSingleCarrier;
|
private boolean mIsSingleCarrier;
|
||||||
@@ -90,9 +86,6 @@ public class QSCarrierGroupController {
|
|||||||
private final SignalCallback mSignalCallback = new SignalCallback() {
|
private final SignalCallback mSignalCallback = new SignalCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void setMobileDataIndicators(@NonNull MobileDataIndicators indicators) {
|
public void setMobileDataIndicators(@NonNull MobileDataIndicators indicators) {
|
||||||
if (mProviderModel) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int slotIndex = getSlotIndex(indicators.subId);
|
int slotIndex = getSlotIndex(indicators.subId);
|
||||||
if (slotIndex >= SIM_SLOTS) {
|
if (slotIndex >= SIM_SLOTS) {
|
||||||
Log.w(TAG, "setMobileDataIndicators - slot: " + slotIndex);
|
Log.w(TAG, "setMobileDataIndicators - slot: " + slotIndex);
|
||||||
@@ -107,90 +100,11 @@ public class QSCarrierGroupController {
|
|||||||
indicators.statusIcon.icon,
|
indicators.statusIcon.icon,
|
||||||
indicators.statusIcon.contentDescription,
|
indicators.statusIcon.contentDescription,
|
||||||
indicators.typeContentDescription.toString(),
|
indicators.typeContentDescription.toString(),
|
||||||
indicators.roaming,
|
indicators.roaming
|
||||||
mProviderModel
|
|
||||||
);
|
);
|
||||||
mMainHandler.obtainMessage(H.MSG_UPDATE_STATE).sendToTarget();
|
mMainHandler.obtainMessage(H.MSG_UPDATE_STATE).sendToTarget();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setCallIndicator(@NonNull IconState statusIcon, int subId) {
|
|
||||||
if (!mProviderModel) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int slotIndex = getSlotIndex(subId);
|
|
||||||
if (slotIndex >= SIM_SLOTS) {
|
|
||||||
Log.w(TAG, "setMobileDataIndicators - slot: " + slotIndex);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (slotIndex == SubscriptionManager.INVALID_SIM_SLOT_INDEX) {
|
|
||||||
Log.e(TAG, "Invalid SIM slot index for subscription: " + subId);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean displayCallStrengthIcon =
|
|
||||||
mCarrierConfigTracker.getCallStrengthConfig(subId);
|
|
||||||
|
|
||||||
if (statusIcon.icon == R.drawable.ic_qs_no_calling_sms) {
|
|
||||||
if (statusIcon.visible) {
|
|
||||||
mInfos[slotIndex] = new CellSignalState(
|
|
||||||
true,
|
|
||||||
statusIcon.icon,
|
|
||||||
statusIcon.contentDescription,
|
|
||||||
"",
|
|
||||||
false,
|
|
||||||
mProviderModel);
|
|
||||||
} else {
|
|
||||||
// Whenever the no Calling & SMS state is cleared, switched to the last
|
|
||||||
// known call strength icon.
|
|
||||||
if (displayCallStrengthIcon) {
|
|
||||||
mInfos[slotIndex] = new CellSignalState(
|
|
||||||
true,
|
|
||||||
mLastSignalLevel[slotIndex],
|
|
||||||
mLastSignalLevelDescription[slotIndex],
|
|
||||||
"",
|
|
||||||
false,
|
|
||||||
mProviderModel);
|
|
||||||
} else {
|
|
||||||
mInfos[slotIndex] = new CellSignalState(
|
|
||||||
true,
|
|
||||||
R.drawable.ic_qs_sim_card,
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
false,
|
|
||||||
mProviderModel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mMainHandler.obtainMessage(H.MSG_UPDATE_STATE).sendToTarget();
|
|
||||||
} else {
|
|
||||||
mLastSignalLevel[slotIndex] = statusIcon.icon;
|
|
||||||
mLastSignalLevelDescription[slotIndex] = statusIcon.contentDescription;
|
|
||||||
// Only Shows the call strength icon when the no Calling & SMS icon is not
|
|
||||||
// shown.
|
|
||||||
if (mInfos[slotIndex].mobileSignalIconId
|
|
||||||
!= R.drawable.ic_qs_no_calling_sms) {
|
|
||||||
if (displayCallStrengthIcon) {
|
|
||||||
mInfos[slotIndex] = new CellSignalState(
|
|
||||||
true,
|
|
||||||
statusIcon.icon,
|
|
||||||
statusIcon.contentDescription,
|
|
||||||
"",
|
|
||||||
false,
|
|
||||||
mProviderModel);
|
|
||||||
} else {
|
|
||||||
mInfos[slotIndex] = new CellSignalState(
|
|
||||||
true,
|
|
||||||
R.drawable.ic_qs_sim_card,
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
false,
|
|
||||||
mProviderModel);
|
|
||||||
}
|
|
||||||
mMainHandler.obtainMessage(H.MSG_UPDATE_STATE).sendToTarget();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setNoSims(boolean hasNoSims, boolean simDetected) {
|
public void setNoSims(boolean hasNoSims, boolean simDetected) {
|
||||||
if (hasNoSims) {
|
if (hasNoSims) {
|
||||||
@@ -219,14 +133,8 @@ public class QSCarrierGroupController {
|
|||||||
@Background Handler bgHandler, @Main Looper mainLooper,
|
@Background Handler bgHandler, @Main Looper mainLooper,
|
||||||
NetworkController networkController,
|
NetworkController networkController,
|
||||||
CarrierTextManager.Builder carrierTextManagerBuilder, Context context,
|
CarrierTextManager.Builder carrierTextManagerBuilder, Context context,
|
||||||
CarrierConfigTracker carrierConfigTracker, FeatureFlags featureFlags,
|
CarrierConfigTracker carrierConfigTracker, SlotIndexResolver slotIndexResolver) {
|
||||||
SlotIndexResolver slotIndexResolver) {
|
|
||||||
|
|
||||||
if (featureFlags.isEnabled(Flags.COMBINED_STATUS_BAR_SIGNAL_ICONS)) {
|
|
||||||
mProviderModel = true;
|
|
||||||
} else {
|
|
||||||
mProviderModel = false;
|
|
||||||
}
|
|
||||||
mActivityStarter = activityStarter;
|
mActivityStarter = activityStarter;
|
||||||
mBgHandler = bgHandler;
|
mBgHandler = bgHandler;
|
||||||
mNetworkController = networkController;
|
mNetworkController = networkController;
|
||||||
@@ -262,8 +170,7 @@ public class QSCarrierGroupController {
|
|||||||
R.drawable.ic_qs_no_calling_sms,
|
R.drawable.ic_qs_no_calling_sms,
|
||||||
context.getText(AccessibilityContentDescriptions.NO_CALLING).toString(),
|
context.getText(AccessibilityContentDescriptions.NO_CALLING).toString(),
|
||||||
"",
|
"",
|
||||||
false,
|
false);
|
||||||
mProviderModel);
|
|
||||||
mLastSignalLevel[i] = TelephonyIcons.MOBILE_CALL_STRENGTH_ICONS[0];
|
mLastSignalLevel[i] = TelephonyIcons.MOBILE_CALL_STRENGTH_ICONS[0];
|
||||||
mLastSignalLevelDescription[i] =
|
mLastSignalLevelDescription[i] =
|
||||||
context.getText(AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0])
|
context.getText(AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0])
|
||||||
@@ -351,8 +258,7 @@ public class QSCarrierGroupController {
|
|||||||
for (int i = 0; i < SIM_SLOTS; i++) {
|
for (int i = 0; i < SIM_SLOTS; i++) {
|
||||||
if (mInfos[i].visible
|
if (mInfos[i].visible
|
||||||
&& mInfos[i].mobileSignalIconId == R.drawable.ic_qs_sim_card) {
|
&& mInfos[i].mobileSignalIconId == R.drawable.ic_qs_sim_card) {
|
||||||
mInfos[i] = new CellSignalState(true, R.drawable.ic_blank, "", "", false,
|
mInfos[i] = new CellSignalState(true, R.drawable.ic_blank, "", "", false);
|
||||||
mProviderModel);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -470,15 +376,13 @@ public class QSCarrierGroupController {
|
|||||||
private final CarrierTextManager.Builder mCarrierTextControllerBuilder;
|
private final CarrierTextManager.Builder mCarrierTextControllerBuilder;
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final CarrierConfigTracker mCarrierConfigTracker;
|
private final CarrierConfigTracker mCarrierConfigTracker;
|
||||||
private final FeatureFlags mFeatureFlags;
|
|
||||||
private final SlotIndexResolver mSlotIndexResolver;
|
private final SlotIndexResolver mSlotIndexResolver;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public Builder(ActivityStarter activityStarter, @Background Handler handler,
|
public Builder(ActivityStarter activityStarter, @Background Handler handler,
|
||||||
@Main Looper looper, NetworkController networkController,
|
@Main Looper looper, NetworkController networkController,
|
||||||
CarrierTextManager.Builder carrierTextControllerBuilder, Context context,
|
CarrierTextManager.Builder carrierTextControllerBuilder, Context context,
|
||||||
CarrierConfigTracker carrierConfigTracker, FeatureFlags featureFlags,
|
CarrierConfigTracker carrierConfigTracker, SlotIndexResolver slotIndexResolver) {
|
||||||
SlotIndexResolver slotIndexResolver) {
|
|
||||||
mActivityStarter = activityStarter;
|
mActivityStarter = activityStarter;
|
||||||
mHandler = handler;
|
mHandler = handler;
|
||||||
mLooper = looper;
|
mLooper = looper;
|
||||||
@@ -486,7 +390,6 @@ public class QSCarrierGroupController {
|
|||||||
mCarrierTextControllerBuilder = carrierTextControllerBuilder;
|
mCarrierTextControllerBuilder = carrierTextControllerBuilder;
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mCarrierConfigTracker = carrierConfigTracker;
|
mCarrierConfigTracker = carrierConfigTracker;
|
||||||
mFeatureFlags = featureFlags;
|
|
||||||
mSlotIndexResolver = slotIndexResolver;
|
mSlotIndexResolver = slotIndexResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -498,7 +401,7 @@ public class QSCarrierGroupController {
|
|||||||
public QSCarrierGroupController build() {
|
public QSCarrierGroupController build() {
|
||||||
return new QSCarrierGroupController(mView, mActivityStarter, mHandler, mLooper,
|
return new QSCarrierGroupController(mView, mActivityStarter, mHandler, mLooper,
|
||||||
mNetworkController, mCarrierTextControllerBuilder, mContext,
|
mNetworkController, mCarrierTextControllerBuilder, mContext,
|
||||||
mCarrierConfigTracker, mFeatureFlags, mSlotIndexResolver);
|
mCarrierConfigTracker, mSlotIndexResolver);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -778,7 +778,8 @@ public class InternetDialogController implements AccessPointController.AccessPoi
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mTelephonyManager.setDataEnabled(enabled);
|
mTelephonyManager.setDataEnabledForReason(
|
||||||
|
TelephonyManager.DATA_ENABLED_REASON_USER, enabled);
|
||||||
if (disableOtherSubscriptions) {
|
if (disableOtherSubscriptions) {
|
||||||
final List<SubscriptionInfo> subInfoList =
|
final List<SubscriptionInfo> subInfoList =
|
||||||
mSubscriptionManager.getActiveSubscriptionInfoList();
|
mSubscriptionManager.getActiveSubscriptionInfoList();
|
||||||
|
|||||||
@@ -26,25 +26,17 @@ import android.net.NetworkCapabilities;
|
|||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.provider.Settings.Global;
|
import android.provider.Settings.Global;
|
||||||
import android.telephony.AccessNetworkConstants;
|
|
||||||
import android.telephony.CellSignalStrength;
|
import android.telephony.CellSignalStrength;
|
||||||
import android.telephony.CellSignalStrengthCdma;
|
import android.telephony.CellSignalStrengthCdma;
|
||||||
import android.telephony.ServiceState;
|
|
||||||
import android.telephony.SignalStrength;
|
import android.telephony.SignalStrength;
|
||||||
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.telephony.ims.ImsException;
|
|
||||||
import android.telephony.ims.ImsMmTelManager;
|
|
||||||
import android.telephony.ims.ImsReasonInfo;
|
|
||||||
import android.telephony.ims.ImsRegistrationAttributes;
|
|
||||||
import android.telephony.ims.RegistrationManager.RegistrationCallback;
|
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.settingslib.AccessibilityContentDescriptions;
|
|
||||||
import com.android.settingslib.SignalIcon.MobileIconGroup;
|
import com.android.settingslib.SignalIcon.MobileIconGroup;
|
||||||
import com.android.settingslib.graph.SignalDrawable;
|
import com.android.settingslib.graph.SignalDrawable;
|
||||||
import com.android.settingslib.mobile.MobileMappings.Config;
|
import com.android.settingslib.mobile.MobileMappings.Config;
|
||||||
@@ -54,8 +46,6 @@ import com.android.settingslib.mobile.MobileStatusTracker.SubscriptionDefaults;
|
|||||||
import com.android.settingslib.mobile.TelephonyIcons;
|
import com.android.settingslib.mobile.TelephonyIcons;
|
||||||
import com.android.settingslib.net.SignalStrengthUtil;
|
import com.android.settingslib.net.SignalStrengthUtil;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.flags.FeatureFlags;
|
|
||||||
import com.android.systemui.flags.Flags;
|
|
||||||
import com.android.systemui.util.CarrierConfigTracker;
|
import com.android.systemui.util.CarrierConfigTracker;
|
||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
@@ -70,33 +60,22 @@ import java.util.Map;
|
|||||||
public class MobileSignalController extends SignalController<MobileState, MobileIconGroup> {
|
public class MobileSignalController extends SignalController<MobileState, MobileIconGroup> {
|
||||||
private static final SimpleDateFormat SSDF = new SimpleDateFormat("MM-dd HH:mm:ss.SSS");
|
private static final SimpleDateFormat SSDF = new SimpleDateFormat("MM-dd HH:mm:ss.SSS");
|
||||||
private static final int STATUS_HISTORY_SIZE = 64;
|
private static final int STATUS_HISTORY_SIZE = 64;
|
||||||
private static final int IMS_TYPE_WWAN = 1;
|
|
||||||
private static final int IMS_TYPE_WLAN = 2;
|
|
||||||
private static final int IMS_TYPE_WLAN_CROSS_SIM = 3;
|
|
||||||
private final TelephonyManager mPhone;
|
private final TelephonyManager mPhone;
|
||||||
private final CarrierConfigTracker mCarrierConfigTracker;
|
private final CarrierConfigTracker mCarrierConfigTracker;
|
||||||
private final ImsMmTelManager mImsMmTelManager;
|
|
||||||
private final SubscriptionDefaults mDefaults;
|
private final SubscriptionDefaults mDefaults;
|
||||||
private final String mNetworkNameDefault;
|
private final String mNetworkNameDefault;
|
||||||
private final String mNetworkNameSeparator;
|
private final String mNetworkNameSeparator;
|
||||||
private final ContentObserver mObserver;
|
private final ContentObserver mObserver;
|
||||||
private final boolean mProviderModelBehavior;
|
|
||||||
private final Handler mReceiverHandler;
|
|
||||||
private int mImsType = IMS_TYPE_WWAN;
|
|
||||||
// Save entire info for logging, we only use the id.
|
// Save entire info for logging, we only use the id.
|
||||||
final SubscriptionInfo mSubscriptionInfo;
|
final SubscriptionInfo mSubscriptionInfo;
|
||||||
private Map<String, MobileIconGroup> mNetworkToIconLookup;
|
private Map<String, MobileIconGroup> mNetworkToIconLookup;
|
||||||
|
|
||||||
private int mLastLevel;
|
|
||||||
private MobileIconGroup mDefaultIcons;
|
private MobileIconGroup mDefaultIcons;
|
||||||
private Config mConfig;
|
private Config mConfig;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
boolean mInflateSignalStrengths = false;
|
boolean mInflateSignalStrengths = false;
|
||||||
private int mLastWwanLevel;
|
|
||||||
private int mLastWlanLevel;
|
|
||||||
private int mLastWlanCrossSimLevel;
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
MobileStatusTracker mMobileStatusTracker;
|
final MobileStatusTracker mMobileStatusTracker;
|
||||||
|
|
||||||
// Save the previous STATUS_HISTORY_SIZE states for logging.
|
// Save the previous STATUS_HISTORY_SIZE states for logging.
|
||||||
private final String[] mMobileStatusHistory = new String[STATUS_HISTORY_SIZE];
|
private final String[] mMobileStatusHistory = new String[STATUS_HISTORY_SIZE];
|
||||||
@@ -133,52 +112,6 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private final RegistrationCallback mRegistrationCallback = new RegistrationCallback() {
|
|
||||||
@Override
|
|
||||||
public void onRegistered(ImsRegistrationAttributes attributes) {
|
|
||||||
Log.d(mTag, "onRegistered: " + "attributes=" + attributes);
|
|
||||||
int imsTransportType = attributes.getTransportType();
|
|
||||||
int registrationAttributes = attributes.getAttributeFlags();
|
|
||||||
if (imsTransportType == AccessNetworkConstants.TRANSPORT_TYPE_WWAN) {
|
|
||||||
mImsType = IMS_TYPE_WWAN;
|
|
||||||
IconState statusIcon = new IconState(
|
|
||||||
true,
|
|
||||||
getCallStrengthIcon(mLastWwanLevel, /* isWifi= */false),
|
|
||||||
getCallStrengthDescription(mLastWwanLevel, /* isWifi= */false));
|
|
||||||
notifyCallStateChange(statusIcon, mSubscriptionInfo.getSubscriptionId());
|
|
||||||
} else if (imsTransportType == AccessNetworkConstants.TRANSPORT_TYPE_WLAN) {
|
|
||||||
if (registrationAttributes == 0) {
|
|
||||||
mImsType = IMS_TYPE_WLAN;
|
|
||||||
IconState statusIcon = new IconState(
|
|
||||||
true,
|
|
||||||
getCallStrengthIcon(mLastWlanLevel, /* isWifi= */true),
|
|
||||||
getCallStrengthDescription(mLastWlanLevel, /* isWifi= */true));
|
|
||||||
notifyCallStateChange(statusIcon, mSubscriptionInfo.getSubscriptionId());
|
|
||||||
} else if (registrationAttributes
|
|
||||||
== ImsRegistrationAttributes.ATTR_EPDG_OVER_CELL_INTERNET) {
|
|
||||||
mImsType = IMS_TYPE_WLAN_CROSS_SIM;
|
|
||||||
IconState statusIcon = new IconState(
|
|
||||||
true,
|
|
||||||
getCallStrengthIcon(mLastWlanCrossSimLevel, /* isWifi= */false),
|
|
||||||
getCallStrengthDescription(
|
|
||||||
mLastWlanCrossSimLevel, /* isWifi= */false));
|
|
||||||
notifyCallStateChange(statusIcon, mSubscriptionInfo.getSubscriptionId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onUnregistered(ImsReasonInfo info) {
|
|
||||||
Log.d(mTag, "onDeregistered: " + "info=" + info);
|
|
||||||
mImsType = IMS_TYPE_WWAN;
|
|
||||||
IconState statusIcon = new IconState(
|
|
||||||
true,
|
|
||||||
getCallStrengthIcon(mLastWwanLevel, /* isWifi= */false),
|
|
||||||
getCallStrengthDescription(mLastWwanLevel, /* isWifi= */false));
|
|
||||||
notifyCallStateChange(statusIcon, mSubscriptionInfo.getSubscriptionId());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// TODO: Reduce number of vars passed in, if we have the NetworkController, probably don't
|
// TODO: Reduce number of vars passed in, if we have the NetworkController, probably don't
|
||||||
// need listener lists anymore.
|
// need listener lists anymore.
|
||||||
public MobileSignalController(
|
public MobileSignalController(
|
||||||
@@ -192,7 +125,7 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
|||||||
SubscriptionDefaults defaults,
|
SubscriptionDefaults defaults,
|
||||||
Looper receiverLooper,
|
Looper receiverLooper,
|
||||||
CarrierConfigTracker carrierConfigTracker,
|
CarrierConfigTracker carrierConfigTracker,
|
||||||
FeatureFlags featureFlags
|
MobileStatusTrackerFactory mobileStatusTrackerFactory
|
||||||
) {
|
) {
|
||||||
super("MobileSignalController(" + info.getSubscriptionId() + ")", context,
|
super("MobileSignalController(" + info.getSubscriptionId() + ")", context,
|
||||||
NetworkCapabilities.TRANSPORT_CELLULAR, callbackHandler,
|
NetworkCapabilities.TRANSPORT_CELLULAR, callbackHandler,
|
||||||
@@ -206,7 +139,6 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
|||||||
R.string.status_bar_network_name_separator).toString();
|
R.string.status_bar_network_name_separator).toString();
|
||||||
mNetworkNameDefault = getTextIfExists(
|
mNetworkNameDefault = getTextIfExists(
|
||||||
com.android.internal.R.string.lockscreen_carrier_default).toString();
|
com.android.internal.R.string.lockscreen_carrier_default).toString();
|
||||||
mReceiverHandler = new Handler(receiverLooper);
|
|
||||||
|
|
||||||
mNetworkToIconLookup = mapIconSets(mConfig);
|
mNetworkToIconLookup = mapIconSets(mConfig);
|
||||||
mDefaultIcons = getDefaultIcons(mConfig);
|
mDefaultIcons = getDefaultIcons(mConfig);
|
||||||
@@ -223,10 +155,7 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
|||||||
updateTelephony();
|
updateTelephony();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
mImsMmTelManager = ImsMmTelManager.createForSubscriptionId(info.getSubscriptionId());
|
mMobileStatusTracker = mobileStatusTrackerFactory.createTracker(mMobileCallback);
|
||||||
mMobileStatusTracker = new MobileStatusTracker(mPhone, receiverLooper,
|
|
||||||
info, mDefaults, mMobileCallback);
|
|
||||||
mProviderModelBehavior = featureFlags.isEnabled(Flags.COMBINED_STATUS_BAR_SIGNAL_ICONS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void setConfiguration(Config config) {
|
void setConfiguration(Config config) {
|
||||||
@@ -271,41 +200,14 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
|||||||
mContext.getContentResolver().registerContentObserver(Global.getUriFor(
|
mContext.getContentResolver().registerContentObserver(Global.getUriFor(
|
||||||
Global.MOBILE_DATA + mSubscriptionInfo.getSubscriptionId()),
|
Global.MOBILE_DATA + mSubscriptionInfo.getSubscriptionId()),
|
||||||
true, mObserver);
|
true, mObserver);
|
||||||
if (mProviderModelBehavior) {
|
|
||||||
mReceiverHandler.post(mTryRegisterIms);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// There is no listener to monitor whether the IMS service is ready, so we have to retry the
|
|
||||||
// IMS registration.
|
|
||||||
private final Runnable mTryRegisterIms = new Runnable() {
|
|
||||||
private static final int MAX_RETRY = 12;
|
|
||||||
private int mRetryCount;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
mRetryCount++;
|
|
||||||
mImsMmTelManager.registerImsRegistrationCallback(
|
|
||||||
mReceiverHandler::post, mRegistrationCallback);
|
|
||||||
Log.d(mTag, "registerImsRegistrationCallback succeeded");
|
|
||||||
} catch (RuntimeException | ImsException e) {
|
|
||||||
if (mRetryCount < MAX_RETRY) {
|
|
||||||
Log.e(mTag, mRetryCount + " registerImsRegistrationCallback failed", e);
|
|
||||||
// Wait for 5 seconds to retry
|
|
||||||
mReceiverHandler.postDelayed(mTryRegisterIms, 5000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stop listening for phone state changes.
|
* Stop listening for phone state changes.
|
||||||
*/
|
*/
|
||||||
public void unregisterListener() {
|
public void unregisterListener() {
|
||||||
mMobileStatusTracker.setListening(false);
|
mMobileStatusTracker.setListening(false);
|
||||||
mContext.getContentResolver().unregisterContentObserver(mObserver);
|
mContext.getContentResolver().unregisterContentObserver(mObserver);
|
||||||
mImsMmTelManager.unregisterImsRegistrationCallback(mRegistrationCallback);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateInflateSignalStrength() {
|
private void updateInflateSignalStrength() {
|
||||||
@@ -394,7 +296,7 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
|||||||
CharSequence qsDescription = null;
|
CharSequence qsDescription = null;
|
||||||
|
|
||||||
if (mCurrentState.dataSim) {
|
if (mCurrentState.dataSim) {
|
||||||
// If using provider model behavior, only show QS icons if the state is also default
|
// only show QS icons if the state is also default
|
||||||
if (!mCurrentState.isDefault) {
|
if (!mCurrentState.isDefault) {
|
||||||
return new QsInfo(qsTypeIcon, qsIcon, qsDescription);
|
return new QsInfo(qsTypeIcon, qsIcon, qsDescription);
|
||||||
}
|
}
|
||||||
@@ -416,32 +318,15 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
|||||||
|
|
||||||
private SbInfo getSbInfo(String contentDescription, int dataTypeIcon) {
|
private SbInfo getSbInfo(String contentDescription, int dataTypeIcon) {
|
||||||
final boolean dataDisabled = mCurrentState.isDataDisabledOrNotDefault();
|
final boolean dataDisabled = mCurrentState.isDataDisabledOrNotDefault();
|
||||||
boolean showTriangle = false;
|
IconState statusIcon = new IconState(
|
||||||
int typeIcon = 0;
|
mCurrentState.enabled && !mCurrentState.airplaneMode,
|
||||||
IconState statusIcon = null;
|
getCurrentIconId(), contentDescription);
|
||||||
|
|
||||||
if (mProviderModelBehavior) {
|
boolean showDataIconInStatusBar =
|
||||||
boolean showDataIconStatusBar = (mCurrentState.dataConnected || dataDisabled)
|
(mCurrentState.dataConnected && mCurrentState.isDefault) || dataDisabled;
|
||||||
&& (mCurrentState.dataSim && mCurrentState.isDefault);
|
int typeIcon =
|
||||||
typeIcon =
|
(showDataIconInStatusBar || mConfig.alwaysShowDataRatIcon) ? dataTypeIcon : 0;
|
||||||
(showDataIconStatusBar || mConfig.alwaysShowDataRatIcon) ? dataTypeIcon : 0;
|
boolean showTriangle = mCurrentState.enabled && !mCurrentState.airplaneMode;
|
||||||
showDataIconStatusBar |= mCurrentState.roaming;
|
|
||||||
statusIcon = new IconState(
|
|
||||||
showDataIconStatusBar && !mCurrentState.airplaneMode,
|
|
||||||
getCurrentIconId(), contentDescription);
|
|
||||||
|
|
||||||
showTriangle = showDataIconStatusBar && !mCurrentState.airplaneMode;
|
|
||||||
} else {
|
|
||||||
statusIcon = new IconState(
|
|
||||||
mCurrentState.enabled && !mCurrentState.airplaneMode,
|
|
||||||
getCurrentIconId(), contentDescription);
|
|
||||||
|
|
||||||
boolean showDataIconInStatusBar =
|
|
||||||
(mCurrentState.dataConnected && mCurrentState.isDefault) || dataDisabled;
|
|
||||||
typeIcon =
|
|
||||||
(showDataIconInStatusBar || mConfig.alwaysShowDataRatIcon) ? dataTypeIcon : 0;
|
|
||||||
showTriangle = mCurrentState.enabled && !mCurrentState.airplaneMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new SbInfo(showTriangle, typeIcon, statusIcon);
|
return new SbInfo(showTriangle, typeIcon, statusIcon);
|
||||||
}
|
}
|
||||||
@@ -560,144 +445,7 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateMobileStatus(MobileStatus mobileStatus) {
|
private void updateMobileStatus(MobileStatus mobileStatus) {
|
||||||
int lastVoiceState = mCurrentState.getVoiceServiceState();
|
|
||||||
mCurrentState.setFromMobileStatus(mobileStatus);
|
mCurrentState.setFromMobileStatus(mobileStatus);
|
||||||
|
|
||||||
notifyMobileLevelChangeIfNecessary(mobileStatus.signalStrength);
|
|
||||||
if (mProviderModelBehavior) {
|
|
||||||
maybeNotifyCallStateChanged(lastVoiceState);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Call state changed is only applicable when provider model behavior is true */
|
|
||||||
private void maybeNotifyCallStateChanged(int lastVoiceState) {
|
|
||||||
int currentVoiceState = mCurrentState.getVoiceServiceState();
|
|
||||||
if (lastVoiceState == currentVoiceState) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Only update the no calling Status in the below scenarios
|
|
||||||
// 1. The first valid voice state has been received
|
|
||||||
// 2. The voice state has been changed and either the last or current state is
|
|
||||||
// ServiceState.STATE_IN_SERVICE
|
|
||||||
if (lastVoiceState == -1
|
|
||||||
|| (lastVoiceState == ServiceState.STATE_IN_SERVICE
|
|
||||||
|| currentVoiceState == ServiceState.STATE_IN_SERVICE)) {
|
|
||||||
boolean isNoCalling = mCurrentState.isNoCalling();
|
|
||||||
isNoCalling &= !hideNoCalling();
|
|
||||||
IconState statusIcon = new IconState(isNoCalling,
|
|
||||||
R.drawable.ic_qs_no_calling_sms,
|
|
||||||
getTextIfExists(AccessibilityContentDescriptions.NO_CALLING).toString());
|
|
||||||
notifyCallStateChange(statusIcon, mSubscriptionInfo.getSubscriptionId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void updateNoCallingState() {
|
|
||||||
int currentVoiceState = mCurrentState.getVoiceServiceState();
|
|
||||||
boolean isNoCalling = currentVoiceState != ServiceState.STATE_IN_SERVICE;
|
|
||||||
isNoCalling &= !hideNoCalling();
|
|
||||||
IconState statusIcon = new IconState(isNoCalling,
|
|
||||||
R.drawable.ic_qs_no_calling_sms,
|
|
||||||
getTextIfExists(AccessibilityContentDescriptions.NO_CALLING).toString());
|
|
||||||
notifyCallStateChange(statusIcon, mSubscriptionInfo.getSubscriptionId());
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean hideNoCalling() {
|
|
||||||
return mNetworkController.hasDefaultNetwork()
|
|
||||||
&& mCarrierConfigTracker.getNoCallingConfig(mSubscriptionInfo.getSubscriptionId());
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getCallStrengthIcon(int level, boolean isWifi) {
|
|
||||||
return isWifi ? TelephonyIcons.WIFI_CALL_STRENGTH_ICONS[level]
|
|
||||||
: TelephonyIcons.MOBILE_CALL_STRENGTH_ICONS[level];
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getCallStrengthDescription(int level, boolean isWifi) {
|
|
||||||
return isWifi
|
|
||||||
? getTextIfExists(AccessibilityContentDescriptions.WIFI_CONNECTION_STRENGTH[level])
|
|
||||||
.toString()
|
|
||||||
: getTextIfExists(AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[level])
|
|
||||||
.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
void refreshCallIndicator(SignalCallback callback) {
|
|
||||||
boolean isNoCalling = mCurrentState.isNoCalling();
|
|
||||||
isNoCalling &= !hideNoCalling();
|
|
||||||
IconState statusIcon = new IconState(isNoCalling,
|
|
||||||
R.drawable.ic_qs_no_calling_sms,
|
|
||||||
getTextIfExists(AccessibilityContentDescriptions.NO_CALLING).toString());
|
|
||||||
callback.setCallIndicator(statusIcon, mSubscriptionInfo.getSubscriptionId());
|
|
||||||
|
|
||||||
switch (mImsType) {
|
|
||||||
case IMS_TYPE_WWAN:
|
|
||||||
statusIcon = new IconState(
|
|
||||||
true,
|
|
||||||
getCallStrengthIcon(mLastWwanLevel, /* isWifi= */false),
|
|
||||||
getCallStrengthDescription(mLastWwanLevel, /* isWifi= */false));
|
|
||||||
break;
|
|
||||||
case IMS_TYPE_WLAN:
|
|
||||||
statusIcon = new IconState(
|
|
||||||
true,
|
|
||||||
getCallStrengthIcon(mLastWlanLevel, /* isWifi= */true),
|
|
||||||
getCallStrengthDescription(mLastWlanLevel, /* isWifi= */true));
|
|
||||||
break;
|
|
||||||
case IMS_TYPE_WLAN_CROSS_SIM:
|
|
||||||
statusIcon = new IconState(
|
|
||||||
true,
|
|
||||||
getCallStrengthIcon(mLastWlanCrossSimLevel, /* isWifi= */false),
|
|
||||||
getCallStrengthDescription(mLastWlanCrossSimLevel, /* isWifi= */false));
|
|
||||||
}
|
|
||||||
callback.setCallIndicator(statusIcon, mSubscriptionInfo.getSubscriptionId());
|
|
||||||
}
|
|
||||||
|
|
||||||
void notifyWifiLevelChange(int level) {
|
|
||||||
if (!mProviderModelBehavior) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
mLastWlanLevel = level;
|
|
||||||
if (mImsType != IMS_TYPE_WLAN) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
IconState statusIcon = new IconState(
|
|
||||||
true,
|
|
||||||
getCallStrengthIcon(level, /* isWifi= */true),
|
|
||||||
getCallStrengthDescription(level, /* isWifi= */true));
|
|
||||||
notifyCallStateChange(statusIcon, mSubscriptionInfo.getSubscriptionId());
|
|
||||||
}
|
|
||||||
|
|
||||||
void notifyDefaultMobileLevelChange(int level) {
|
|
||||||
if (!mProviderModelBehavior) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
mLastWlanCrossSimLevel = level;
|
|
||||||
if (mImsType != IMS_TYPE_WLAN_CROSS_SIM) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
IconState statusIcon = new IconState(
|
|
||||||
true,
|
|
||||||
getCallStrengthIcon(level, /* isWifi= */false),
|
|
||||||
getCallStrengthDescription(level, /* isWifi= */false));
|
|
||||||
notifyCallStateChange(statusIcon, mSubscriptionInfo.getSubscriptionId());
|
|
||||||
}
|
|
||||||
|
|
||||||
void notifyMobileLevelChangeIfNecessary(SignalStrength signalStrength) {
|
|
||||||
if (!mProviderModelBehavior) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int newLevel = getSignalLevel(signalStrength);
|
|
||||||
if (newLevel != mLastLevel) {
|
|
||||||
mLastLevel = newLevel;
|
|
||||||
mLastWwanLevel = newLevel;
|
|
||||||
if (mImsType == IMS_TYPE_WWAN) {
|
|
||||||
IconState statusIcon = new IconState(
|
|
||||||
true,
|
|
||||||
getCallStrengthIcon(newLevel, /* isWifi= */false),
|
|
||||||
getCallStrengthDescription(newLevel, /* isWifi= */false));
|
|
||||||
notifyCallStateChange(statusIcon, mSubscriptionInfo.getSubscriptionId());
|
|
||||||
}
|
|
||||||
if (mCurrentState.dataSim) {
|
|
||||||
mNetworkController.notifyDefaultMobileLevelChange(newLevel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int getSignalLevel(SignalStrength signalStrength) {
|
int getSignalLevel(SignalStrength signalStrength) {
|
||||||
@@ -801,19 +549,14 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
|||||||
mMobileStatusHistoryIndex = (mMobileStatusHistoryIndex + 1) % STATUS_HISTORY_SIZE;
|
mMobileStatusHistoryIndex = (mMobileStatusHistoryIndex + 1) % STATUS_HISTORY_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
void setImsType(int imsType) {
|
|
||||||
mImsType = imsType;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dump(PrintWriter pw) {
|
public void dump(PrintWriter pw) {
|
||||||
super.dump(pw);
|
super.dump(pw);
|
||||||
pw.println(" mSubscription=" + mSubscriptionInfo + ",");
|
pw.println(" mSubscription=" + mSubscriptionInfo + ",");
|
||||||
pw.println(" mProviderModelBehavior=" + mProviderModelBehavior + ",");
|
|
||||||
pw.println(" mInflateSignalStrengths=" + mInflateSignalStrengths + ",");
|
pw.println(" mInflateSignalStrengths=" + mInflateSignalStrengths + ",");
|
||||||
pw.println(" isDataDisabled=" + isDataDisabled() + ",");
|
pw.println(" isDataDisabled=" + isDataDisabled() + ",");
|
||||||
pw.println(" mNetworkToIconLookup=" + mNetworkToIconLookup + ",");
|
pw.println(" mNetworkToIconLookup=" + mNetworkToIconLookup + ",");
|
||||||
|
pw.println(" mMobileStatusTracker.isListening=" + mMobileStatusTracker.isListening());
|
||||||
pw.println(" MobileStatusHistory");
|
pw.println(" MobileStatusHistory");
|
||||||
int size = 0;
|
int size = 0;
|
||||||
for (int i = 0; i < STATUS_HISTORY_SIZE; i++) {
|
for (int i = 0; i < STATUS_HISTORY_SIZE; i++) {
|
||||||
@@ -843,6 +586,11 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
|||||||
icon = iconState;
|
icon = iconState;
|
||||||
description = desc;
|
description = desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "QsInfo: ratTypeIcon=" + ratTypeIcon + " icon=" + icon;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Box for status bar icon info */
|
/** Box for status bar icon info */
|
||||||
@@ -856,5 +604,11 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
|||||||
ratTypeIcon = typeIcon;
|
ratTypeIcon = typeIcon;
|
||||||
icon = iconState;
|
icon = iconState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "SbInfo: showTriangle=" + showTriangle + " ratTypeIcon=" + ratTypeIcon
|
||||||
|
+ " icon=" + icon;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2022 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.systemui.statusbar.connectivity
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.os.Looper
|
||||||
|
import android.telephony.SubscriptionInfo
|
||||||
|
import android.telephony.TelephonyManager
|
||||||
|
import com.android.settingslib.mobile.MobileMappings
|
||||||
|
import com.android.settingslib.mobile.MobileStatusTracker
|
||||||
|
import com.android.systemui.util.CarrierConfigTracker
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory to make MobileSignalController injectable
|
||||||
|
*/
|
||||||
|
internal class MobileSignalControllerFactory @Inject constructor(
|
||||||
|
val context: Context,
|
||||||
|
val callbackHandler: CallbackHandler,
|
||||||
|
val carrierConfigTracker: CarrierConfigTracker,
|
||||||
|
) {
|
||||||
|
fun createMobileSignalController(
|
||||||
|
config: MobileMappings.Config,
|
||||||
|
hasMobileData: Boolean,
|
||||||
|
phone: TelephonyManager,
|
||||||
|
networkController: NetworkControllerImpl,
|
||||||
|
subscriptionInfo: SubscriptionInfo,
|
||||||
|
subscriptionDefaults: MobileStatusTracker.SubscriptionDefaults,
|
||||||
|
receiverLooper: Looper,
|
||||||
|
): MobileSignalController {
|
||||||
|
val mobileTrackerFactory = MobileStatusTrackerFactory(
|
||||||
|
phone,
|
||||||
|
receiverLooper,
|
||||||
|
subscriptionInfo,
|
||||||
|
subscriptionDefaults)
|
||||||
|
|
||||||
|
return MobileSignalController(
|
||||||
|
context,
|
||||||
|
config,
|
||||||
|
hasMobileData,
|
||||||
|
phone,
|
||||||
|
callbackHandler,
|
||||||
|
networkController,
|
||||||
|
subscriptionInfo,
|
||||||
|
subscriptionDefaults,
|
||||||
|
receiverLooper,
|
||||||
|
carrierConfigTracker,
|
||||||
|
mobileTrackerFactory,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2022 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.systemui.statusbar.connectivity
|
||||||
|
|
||||||
|
import android.os.Looper
|
||||||
|
import android.telephony.SubscriptionInfo
|
||||||
|
import android.telephony.TelephonyManager
|
||||||
|
import com.android.settingslib.mobile.MobileStatusTracker
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory for [MobileStatusTracker], which lives in SettingsLib
|
||||||
|
*/
|
||||||
|
class MobileStatusTrackerFactory (
|
||||||
|
val phone: TelephonyManager,
|
||||||
|
val receiverLooper: Looper,
|
||||||
|
val info: SubscriptionInfo,
|
||||||
|
val defaults: MobileStatusTracker.SubscriptionDefaults,
|
||||||
|
) {
|
||||||
|
fun createTracker(
|
||||||
|
callback: MobileStatusTracker.Callback
|
||||||
|
): MobileStatusTracker {
|
||||||
|
return MobileStatusTracker(
|
||||||
|
phone,
|
||||||
|
receiverLooper,
|
||||||
|
info,
|
||||||
|
defaults,
|
||||||
|
callback)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -71,8 +71,6 @@ import com.android.systemui.dagger.qualifiers.Main;
|
|||||||
import com.android.systemui.demomode.DemoMode;
|
import com.android.systemui.demomode.DemoMode;
|
||||||
import com.android.systemui.demomode.DemoModeController;
|
import com.android.systemui.demomode.DemoModeController;
|
||||||
import com.android.systemui.dump.DumpManager;
|
import com.android.systemui.dump.DumpManager;
|
||||||
import com.android.systemui.flags.FeatureFlags;
|
|
||||||
import com.android.systemui.flags.Flags;
|
|
||||||
import com.android.systemui.log.LogBuffer;
|
import com.android.systemui.log.LogBuffer;
|
||||||
import com.android.systemui.log.LogLevel;
|
import com.android.systemui.log.LogLevel;
|
||||||
import com.android.systemui.log.dagger.StatusBarNetworkControllerLog;
|
import com.android.systemui.log.dagger.StatusBarNetworkControllerLog;
|
||||||
@@ -134,12 +132,11 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
private final BroadcastDispatcher mBroadcastDispatcher;
|
private final BroadcastDispatcher mBroadcastDispatcher;
|
||||||
private final DemoModeController mDemoModeController;
|
private final DemoModeController mDemoModeController;
|
||||||
private final Object mLock = new Object();
|
private final Object mLock = new Object();
|
||||||
private final boolean mProviderModelBehavior;
|
|
||||||
private Config mConfig;
|
private Config mConfig;
|
||||||
private final CarrierConfigTracker mCarrierConfigTracker;
|
private final CarrierConfigTracker mCarrierConfigTracker;
|
||||||
private final FeatureFlags mFeatureFlags;
|
|
||||||
private final DumpManager mDumpManager;
|
private final DumpManager mDumpManager;
|
||||||
private final LogBuffer mLogBuffer;
|
private final LogBuffer mLogBuffer;
|
||||||
|
private final MobileSignalControllerFactory mMobileFactory;
|
||||||
|
|
||||||
private TelephonyCallback.ActiveDataSubscriptionIdListener mPhoneStateListener;
|
private TelephonyCallback.ActiveDataSubscriptionIdListener mPhoneStateListener;
|
||||||
private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
@@ -235,9 +232,9 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
DemoModeController demoModeController,
|
DemoModeController demoModeController,
|
||||||
CarrierConfigTracker carrierConfigTracker,
|
CarrierConfigTracker carrierConfigTracker,
|
||||||
WifiStatusTrackerFactory trackerFactory,
|
WifiStatusTrackerFactory trackerFactory,
|
||||||
|
MobileSignalControllerFactory mobileFactory,
|
||||||
@Main Handler handler,
|
@Main Handler handler,
|
||||||
InternetDialogFactory internetDialogFactory,
|
InternetDialogFactory internetDialogFactory,
|
||||||
FeatureFlags featureFlags,
|
|
||||||
DumpManager dumpManager,
|
DumpManager dumpManager,
|
||||||
@StatusBarNetworkControllerLog LogBuffer logBuffer) {
|
@StatusBarNetworkControllerLog LogBuffer logBuffer) {
|
||||||
this(context, connectivityManager,
|
this(context, connectivityManager,
|
||||||
@@ -257,8 +254,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
demoModeController,
|
demoModeController,
|
||||||
carrierConfigTracker,
|
carrierConfigTracker,
|
||||||
trackerFactory,
|
trackerFactory,
|
||||||
|
mobileFactory,
|
||||||
handler,
|
handler,
|
||||||
featureFlags,
|
|
||||||
dumpManager,
|
dumpManager,
|
||||||
logBuffer);
|
logBuffer);
|
||||||
mReceiverHandler.post(mRegisterListeners);
|
mReceiverHandler.post(mRegisterListeners);
|
||||||
@@ -283,8 +280,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
DemoModeController demoModeController,
|
DemoModeController demoModeController,
|
||||||
CarrierConfigTracker carrierConfigTracker,
|
CarrierConfigTracker carrierConfigTracker,
|
||||||
WifiStatusTrackerFactory trackerFactory,
|
WifiStatusTrackerFactory trackerFactory,
|
||||||
|
MobileSignalControllerFactory mobileFactory,
|
||||||
@Main Handler handler,
|
@Main Handler handler,
|
||||||
FeatureFlags featureFlags,
|
|
||||||
DumpManager dumpManager,
|
DumpManager dumpManager,
|
||||||
LogBuffer logBuffer
|
LogBuffer logBuffer
|
||||||
) {
|
) {
|
||||||
@@ -298,6 +295,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
mCallbackHandler = callbackHandler;
|
mCallbackHandler = callbackHandler;
|
||||||
mDataSaverController = new DataSaverControllerImpl(context);
|
mDataSaverController = new DataSaverControllerImpl(context);
|
||||||
mBroadcastDispatcher = broadcastDispatcher;
|
mBroadcastDispatcher = broadcastDispatcher;
|
||||||
|
mMobileFactory = mobileFactory;
|
||||||
|
|
||||||
mSubscriptionManager = subManager;
|
mSubscriptionManager = subManager;
|
||||||
mSubDefaults = defaultsHandler;
|
mSubDefaults = defaultsHandler;
|
||||||
@@ -305,7 +303,6 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
mHasMobileDataFeature = telephonyManager.isDataCapable();
|
mHasMobileDataFeature = telephonyManager.isDataCapable();
|
||||||
mDemoModeController = demoModeController;
|
mDemoModeController = demoModeController;
|
||||||
mCarrierConfigTracker = carrierConfigTracker;
|
mCarrierConfigTracker = carrierConfigTracker;
|
||||||
mFeatureFlags = featureFlags;
|
|
||||||
mDumpManager = dumpManager;
|
mDumpManager = dumpManager;
|
||||||
mLogBuffer = logBuffer;
|
mLogBuffer = logBuffer;
|
||||||
|
|
||||||
@@ -457,7 +454,6 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
};
|
};
|
||||||
|
|
||||||
mDemoModeController.addCallback(this);
|
mDemoModeController.addCallback(this);
|
||||||
mProviderModelBehavior = mFeatureFlags.isEnabled(Flags.COMBINED_STATUS_BAR_SIGNAL_ICONS);
|
|
||||||
|
|
||||||
mDumpManager.registerDumpable(TAG, this);
|
mDumpManager.registerDumpable(TAG, this);
|
||||||
}
|
}
|
||||||
@@ -498,16 +494,16 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
|
|
||||||
// broadcasts
|
// broadcasts
|
||||||
IntentFilter filter = new IntentFilter();
|
IntentFilter filter = new IntentFilter();
|
||||||
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
|
filter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
|
||||||
filter.addAction(Intent.ACTION_SIM_STATE_CHANGED);
|
|
||||||
filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
|
|
||||||
filter.addAction(TelephonyManager.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED);
|
|
||||||
filter.addAction(Intent.ACTION_SERVICE_STATE);
|
|
||||||
filter.addAction(TelephonyManager.ACTION_SERVICE_PROVIDERS_UPDATED);
|
|
||||||
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
|
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
|
||||||
filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
|
filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
|
||||||
filter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
|
filter.addAction(Intent.ACTION_SERVICE_STATE);
|
||||||
|
filter.addAction(Intent.ACTION_SIM_STATE_CHANGED);
|
||||||
filter.addAction(Settings.Panel.ACTION_INTERNET_CONNECTIVITY);
|
filter.addAction(Settings.Panel.ACTION_INTERNET_CONNECTIVITY);
|
||||||
|
filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
|
||||||
|
filter.addAction(TelephonyManager.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED);
|
||||||
|
filter.addAction(TelephonyManager.ACTION_SERVICE_PROVIDERS_UPDATED);
|
||||||
|
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
|
||||||
mBroadcastDispatcher.registerReceiverWithHandler(this, filter, mReceiverHandler);
|
mBroadcastDispatcher.registerReceiverWithHandler(this, filter, mReceiverHandler);
|
||||||
mListening = true;
|
mListening = true;
|
||||||
|
|
||||||
@@ -660,20 +656,6 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
return controller != null ? controller.getNetworkNameForCarrierWiFi() : "";
|
return controller != null ? controller.getNetworkNameForCarrierWiFi() : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
void notifyWifiLevelChange(int level) {
|
|
||||||
for (int i = 0; i < mMobileSignalControllers.size(); i++) {
|
|
||||||
MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i);
|
|
||||||
mobileSignalController.notifyWifiLevelChange(level);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void notifyDefaultMobileLevelChange(int level) {
|
|
||||||
for (int i = 0; i < mMobileSignalControllers.size(); i++) {
|
|
||||||
MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i);
|
|
||||||
mobileSignalController.notifyDefaultMobileLevelChange(level);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void notifyControllersMobileDataChanged() {
|
private void notifyControllersMobileDataChanged() {
|
||||||
for (int i = 0; i < mMobileSignalControllers.size(); i++) {
|
for (int i = 0; i < mMobileSignalControllers.size(); i++) {
|
||||||
MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i);
|
MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i);
|
||||||
@@ -746,9 +728,6 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
for (int i = 0; i < mMobileSignalControllers.size(); i++) {
|
for (int i = 0; i < mMobileSignalControllers.size(); i++) {
|
||||||
MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i);
|
MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i);
|
||||||
mobileSignalController.notifyListeners(cb);
|
mobileSignalController.notifyListeners(cb);
|
||||||
if (mProviderModelBehavior) {
|
|
||||||
mobileSignalController.refreshCallIndicator(cb);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
mCallbackHandler.setListening(cb, true);
|
mCallbackHandler.setListening(cb, true);
|
||||||
}
|
}
|
||||||
@@ -863,9 +842,6 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
for (int i = 0; i < mMobileSignalControllers.size(); i++) {
|
for (int i = 0; i < mMobileSignalControllers.size(); i++) {
|
||||||
MobileSignalController controller = mMobileSignalControllers.valueAt(i);
|
MobileSignalController controller = mMobileSignalControllers.valueAt(i);
|
||||||
controller.setConfiguration(mConfig);
|
controller.setConfiguration(mConfig);
|
||||||
if (mProviderModelBehavior) {
|
|
||||||
controller.refreshCallIndicator(mCallbackHandler);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
refreshLocale();
|
refreshLocale();
|
||||||
}
|
}
|
||||||
@@ -982,11 +958,15 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
mMobileSignalControllers.put(subId, cachedControllers.get(subId));
|
mMobileSignalControllers.put(subId, cachedControllers.get(subId));
|
||||||
cachedControllers.remove(subId);
|
cachedControllers.remove(subId);
|
||||||
} else {
|
} else {
|
||||||
MobileSignalController controller = new MobileSignalController(mContext, mConfig,
|
MobileSignalController controller = mMobileFactory.createMobileSignalController(
|
||||||
mHasMobileDataFeature, mPhone.createForSubscriptionId(subId),
|
mConfig,
|
||||||
mCallbackHandler, this, subscriptions.get(i),
|
mHasMobileDataFeature,
|
||||||
mSubDefaults, mReceiverHandler.getLooper(), mCarrierConfigTracker,
|
mPhone.createForSubscriptionId(subId),
|
||||||
mFeatureFlags);
|
this,
|
||||||
|
subscriptions.get(i),
|
||||||
|
mSubDefaults,
|
||||||
|
mReceiverHandler.getLooper()
|
||||||
|
);
|
||||||
controller.setUserSetupComplete(mUserSetup);
|
controller.setUserSetupComplete(mUserSetup);
|
||||||
mMobileSignalControllers.put(subId, controller);
|
mMobileSignalControllers.put(subId, controller);
|
||||||
if (subscriptions.get(i).getSimSlotIndex() == 0) {
|
if (subscriptions.get(i).getSimSlotIndex() == 0) {
|
||||||
@@ -1140,24 +1120,11 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
|| mValidatedTransports.get(NetworkCapabilities.TRANSPORT_ETHERNET);
|
|| mValidatedTransports.get(NetworkCapabilities.TRANSPORT_ETHERNET);
|
||||||
|
|
||||||
pushConnectivityToSignals();
|
pushConnectivityToSignals();
|
||||||
if (mProviderModelBehavior) {
|
mNoDefaultNetwork = !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_CELLULAR)
|
||||||
mNoDefaultNetwork = !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_CELLULAR)
|
&& !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_WIFI)
|
||||||
&& !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_WIFI)
|
&& !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_ETHERNET);
|
||||||
&& !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_ETHERNET);
|
mCallbackHandler.setConnectivityStatus(mNoDefaultNetwork, !mInetCondition,
|
||||||
mCallbackHandler.setConnectivityStatus(mNoDefaultNetwork, !mInetCondition,
|
mNoNetworksAvailable);
|
||||||
mNoNetworksAvailable);
|
|
||||||
for (int i = 0; i < mMobileSignalControllers.size(); i++) {
|
|
||||||
MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i);
|
|
||||||
mobileSignalController.updateNoCallingState();
|
|
||||||
}
|
|
||||||
notifyAllListeners();
|
|
||||||
} else {
|
|
||||||
mNoDefaultNetwork = !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_CELLULAR)
|
|
||||||
&& !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_WIFI)
|
|
||||||
&& !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_ETHERNET);
|
|
||||||
mCallbackHandler.setConnectivityStatus(mNoDefaultNetwork, !mInetCondition,
|
|
||||||
mNoNetworksAvailable);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1347,7 +1314,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
mMobileSignalControllers.clear();
|
mMobileSignalControllers.clear();
|
||||||
int start = mSubscriptionManager.getActiveSubscriptionInfoCountMax();
|
int start = mSubscriptionManager.getActiveSubscriptionInfoCountMax();
|
||||||
for (int i = start /* get out of normal index range */; i < start + num; i++) {
|
for (int i = start /* get out of normal index range */; i < start + num; i++) {
|
||||||
subs.add(addSignalController(i, i));
|
subs.add(addDemoModeSignalController(i, i));
|
||||||
}
|
}
|
||||||
mCallbackHandler.setSubs(subs);
|
mCallbackHandler.setSubs(subs);
|
||||||
for (int i = 0; i < mMobileSignalControllers.size(); i++) {
|
for (int i = 0; i < mMobileSignalControllers.size(); i++) {
|
||||||
@@ -1373,7 +1340,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
List<SubscriptionInfo> subs = new ArrayList<>();
|
List<SubscriptionInfo> subs = new ArrayList<>();
|
||||||
while (mMobileSignalControllers.size() <= slot) {
|
while (mMobileSignalControllers.size() <= slot) {
|
||||||
int nextSlot = mMobileSignalControllers.size();
|
int nextSlot = mMobileSignalControllers.size();
|
||||||
subs.add(addSignalController(nextSlot, nextSlot));
|
subs.add(addDemoModeSignalController(nextSlot, nextSlot));
|
||||||
}
|
}
|
||||||
if (!subs.isEmpty()) {
|
if (!subs.isEmpty()) {
|
||||||
mCallbackHandler.setSubs(subs);
|
mCallbackHandler.setSubs(subs);
|
||||||
@@ -1463,14 +1430,20 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
|||||||
mHistoryIndex = (mHistoryIndex + 1) % HISTORY_SIZE;
|
mHistoryIndex = (mHistoryIndex + 1) % HISTORY_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SubscriptionInfo addSignalController(int id, int simSlotIndex) {
|
private SubscriptionInfo addDemoModeSignalController(int id, int simSlotIndex) {
|
||||||
SubscriptionInfo info = new SubscriptionInfo(id, "", simSlotIndex, "", "", 0, 0, "", 0,
|
SubscriptionInfo info = new SubscriptionInfo(id, "", simSlotIndex, "", "", 0, 0, "", 0,
|
||||||
null, null, null, "", false, null, null);
|
null, null, null, "", false, null, null);
|
||||||
MobileSignalController controller = new MobileSignalController(mContext,
|
|
||||||
mConfig, mHasMobileDataFeature,
|
MobileSignalController controller = mMobileFactory.createMobileSignalController(
|
||||||
mPhone.createForSubscriptionId(info.getSubscriptionId()), mCallbackHandler, this,
|
mConfig,
|
||||||
info, mSubDefaults, mReceiverHandler.getLooper(), mCarrierConfigTracker,
|
mHasMobileDataFeature,
|
||||||
mFeatureFlags);
|
mPhone.createForSubscriptionId(info.getSubscriptionId()),
|
||||||
|
this,
|
||||||
|
info,
|
||||||
|
mSubDefaults,
|
||||||
|
mReceiverHandler.getLooper()
|
||||||
|
);
|
||||||
|
|
||||||
mMobileSignalControllers.put(id, controller);
|
mMobileSignalControllers.put(id, controller);
|
||||||
controller.getState().userSetup = true;
|
controller.getState().userSetup = true;
|
||||||
return info;
|
return info;
|
||||||
|
|||||||
@@ -222,7 +222,6 @@ public class WifiSignalController extends SignalController<WifiState, IconGroup>
|
|||||||
mCurrentState.connected = mWifiTracker.connected;
|
mCurrentState.connected = mWifiTracker.connected;
|
||||||
mCurrentState.ssid = mWifiTracker.ssid;
|
mCurrentState.ssid = mWifiTracker.ssid;
|
||||||
mCurrentState.rssi = mWifiTracker.rssi;
|
mCurrentState.rssi = mWifiTracker.rssi;
|
||||||
boolean levelChanged = mCurrentState.level != mWifiTracker.level;
|
|
||||||
mCurrentState.level = mWifiTracker.level;
|
mCurrentState.level = mWifiTracker.level;
|
||||||
mCurrentState.statusLabel = mWifiTracker.statusLabel;
|
mCurrentState.statusLabel = mWifiTracker.statusLabel;
|
||||||
mCurrentState.isCarrierMerged = mWifiTracker.isCarrierMerged;
|
mCurrentState.isCarrierMerged = mWifiTracker.isCarrierMerged;
|
||||||
@@ -230,10 +229,6 @@ public class WifiSignalController extends SignalController<WifiState, IconGroup>
|
|||||||
mCurrentState.iconGroup =
|
mCurrentState.iconGroup =
|
||||||
mCurrentState.isCarrierMerged ? mCarrierMergedWifiIconGroup
|
mCurrentState.isCarrierMerged ? mCarrierMergedWifiIconGroup
|
||||||
: mUnmergedWifiIconGroup;
|
: mUnmergedWifiIconGroup;
|
||||||
|
|
||||||
if (levelChanged) {
|
|
||||||
mNetworkController.notifyWifiLevelChange(mCurrentState.level);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isCarrierMergedWifi(int subId) {
|
boolean isCarrierMergedWifi(int subId) {
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ import android.util.Log;
|
|||||||
import com.android.settingslib.mobile.TelephonyIcons;
|
import com.android.settingslib.mobile.TelephonyIcons;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.dagger.SysUISingleton;
|
import com.android.systemui.dagger.SysUISingleton;
|
||||||
import com.android.systemui.flags.FeatureFlags;
|
|
||||||
import com.android.systemui.flags.Flags;
|
|
||||||
import com.android.systemui.statusbar.connectivity.IconState;
|
import com.android.systemui.statusbar.connectivity.IconState;
|
||||||
import com.android.systemui.statusbar.connectivity.MobileDataIndicators;
|
import com.android.systemui.statusbar.connectivity.MobileDataIndicators;
|
||||||
import com.android.systemui.statusbar.connectivity.NetworkController;
|
import com.android.systemui.statusbar.connectivity.NetworkController;
|
||||||
@@ -66,7 +64,6 @@ public class StatusBarSignalPolicy implements SignalCallback,
|
|||||||
private final Handler mHandler = Handler.getMain();
|
private final Handler mHandler = Handler.getMain();
|
||||||
private final CarrierConfigTracker mCarrierConfigTracker;
|
private final CarrierConfigTracker mCarrierConfigTracker;
|
||||||
private final TunerService mTunerService;
|
private final TunerService mTunerService;
|
||||||
private final FeatureFlags mFeatureFlags;
|
|
||||||
|
|
||||||
private boolean mHideAirplane;
|
private boolean mHideAirplane;
|
||||||
private boolean mHideMobile;
|
private boolean mHideMobile;
|
||||||
@@ -90,8 +87,7 @@ public class StatusBarSignalPolicy implements SignalCallback,
|
|||||||
CarrierConfigTracker carrierConfigTracker,
|
CarrierConfigTracker carrierConfigTracker,
|
||||||
NetworkController networkController,
|
NetworkController networkController,
|
||||||
SecurityController securityController,
|
SecurityController securityController,
|
||||||
TunerService tunerService,
|
TunerService tunerService
|
||||||
FeatureFlags featureFlags
|
|
||||||
) {
|
) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
|
|
||||||
@@ -100,7 +96,6 @@ public class StatusBarSignalPolicy implements SignalCallback,
|
|||||||
mNetworkController = networkController;
|
mNetworkController = networkController;
|
||||||
mSecurityController = securityController;
|
mSecurityController = securityController;
|
||||||
mTunerService = tunerService;
|
mTunerService = tunerService;
|
||||||
mFeatureFlags = featureFlags;
|
|
||||||
|
|
||||||
mSlotAirplane = mContext.getString(com.android.internal.R.string.status_bar_airplane);
|
mSlotAirplane = mContext.getString(com.android.internal.R.string.status_bar_airplane);
|
||||||
mSlotMobile = mContext.getString(com.android.internal.R.string.status_bar_mobile);
|
mSlotMobile = mContext.getString(com.android.internal.R.string.status_bar_mobile);
|
||||||
@@ -377,40 +372,6 @@ public class StatusBarSignalPolicy implements SignalCallback,
|
|||||||
// Noop yay!
|
// Noop yay!
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setConnectivityStatus(boolean noDefaultNetwork, boolean noValidatedNetwork,
|
|
||||||
boolean noNetworksAvailable) {
|
|
||||||
if (!mFeatureFlags.isEnabled(Flags.COMBINED_STATUS_BAR_SIGNAL_ICONS)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (DEBUG) {
|
|
||||||
Log.d(TAG, "setConnectivityStatus: "
|
|
||||||
+ "noDefaultNetwork = " + noDefaultNetwork + ","
|
|
||||||
+ "noValidatedNetwork = " + noValidatedNetwork + ","
|
|
||||||
+ "noNetworksAvailable = " + noNetworksAvailable);
|
|
||||||
}
|
|
||||||
WifiIconState newState = mWifiIconState.copy();
|
|
||||||
newState.noDefaultNetwork = noDefaultNetwork;
|
|
||||||
newState.noValidatedNetwork = noValidatedNetwork;
|
|
||||||
newState.noNetworksAvailable = noNetworksAvailable;
|
|
||||||
newState.slot = mSlotWifi;
|
|
||||||
newState.airplaneSpacerVisible = mIsAirplaneMode;
|
|
||||||
if (noDefaultNetwork && noNetworksAvailable && !mIsAirplaneMode) {
|
|
||||||
newState.visible = true;
|
|
||||||
newState.resId = R.drawable.ic_qs_no_internet_unavailable;
|
|
||||||
} else if (noDefaultNetwork && !noNetworksAvailable
|
|
||||||
&& (!mIsAirplaneMode || (mIsAirplaneMode && mIsWifiEnabled))) {
|
|
||||||
newState.visible = true;
|
|
||||||
newState.resId = R.drawable.ic_qs_no_internet_available;
|
|
||||||
} else {
|
|
||||||
newState.visible = false;
|
|
||||||
newState.resId = 0;
|
|
||||||
}
|
|
||||||
updateWifiIconWithState(newState);
|
|
||||||
mWifiIconState = newState;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setEthernetIndicators(IconState state) {
|
public void setEthernetIndicators(IconState state) {
|
||||||
boolean visible = state.visible && !mHideEthernet;
|
boolean visible = state.visible && !mHideEthernet;
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import com.android.systemui.battery.BatteryMeterViewController
|
|||||||
import com.android.systemui.colorextraction.SysuiColorExtractor
|
import com.android.systemui.colorextraction.SysuiColorExtractor
|
||||||
import com.android.systemui.demomode.DemoModeController
|
import com.android.systemui.demomode.DemoModeController
|
||||||
import com.android.systemui.flags.FeatureFlags
|
import com.android.systemui.flags.FeatureFlags
|
||||||
import com.android.systemui.flags.Flags
|
|
||||||
import com.android.systemui.qs.carrier.QSCarrierGroup
|
import com.android.systemui.qs.carrier.QSCarrierGroup
|
||||||
import com.android.systemui.qs.carrier.QSCarrierGroupController
|
import com.android.systemui.qs.carrier.QSCarrierGroupController
|
||||||
import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider
|
import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider
|
||||||
@@ -46,10 +45,10 @@ import org.junit.runner.RunWith
|
|||||||
import org.mockito.Answers
|
import org.mockito.Answers
|
||||||
import org.mockito.ArgumentMatchers.anyInt
|
import org.mockito.ArgumentMatchers.anyInt
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
import org.mockito.Mockito.`when`
|
|
||||||
import org.mockito.Mockito.anyBoolean
|
import org.mockito.Mockito.anyBoolean
|
||||||
import org.mockito.Mockito.reset
|
import org.mockito.Mockito.reset
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
|
import org.mockito.Mockito.`when`
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
@@ -162,7 +161,6 @@ class QuickStatusBarHeaderControllerTest : SysuiTestCase() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testRSSISlot_notCombined() {
|
fun testRSSISlot_notCombined() {
|
||||||
`when`(featureFlags.isEnabled(Flags.COMBINED_STATUS_BAR_SIGNAL_ICONS)).thenReturn(false)
|
|
||||||
controller.init()
|
controller.init()
|
||||||
|
|
||||||
val captor = argumentCaptor<List<String>>()
|
val captor = argumentCaptor<List<String>>()
|
||||||
@@ -173,20 +171,6 @@ class QuickStatusBarHeaderControllerTest : SysuiTestCase() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testRSSISlot_combined() {
|
|
||||||
`when`(featureFlags.isEnabled(Flags.COMBINED_STATUS_BAR_SIGNAL_ICONS)).thenReturn(true)
|
|
||||||
controller.init()
|
|
||||||
|
|
||||||
val captor = argumentCaptor<List<String>>()
|
|
||||||
verify(view).onAttach(any(), any(), capture(captor), any(), anyBoolean())
|
|
||||||
|
|
||||||
assertThat(captor.value).containsExactly(
|
|
||||||
mContext.getString(com.android.internal.R.string.status_bar_no_calling),
|
|
||||||
mContext.getString(com.android.internal.R.string.status_bar_call_strength)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testSingleCarrierCallback() {
|
fun testSingleCarrierCallback() {
|
||||||
controller.init()
|
controller.init()
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ import android.widget.TextView;
|
|||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
|
|
||||||
import com.android.keyguard.CarrierTextManager;
|
import com.android.keyguard.CarrierTextManager;
|
||||||
import com.android.systemui.flags.FeatureFlags;
|
|
||||||
import com.android.systemui.plugins.ActivityStarter;
|
import com.android.systemui.plugins.ActivityStarter;
|
||||||
import com.android.systemui.statusbar.connectivity.IconState;
|
import com.android.systemui.statusbar.connectivity.IconState;
|
||||||
import com.android.systemui.statusbar.connectivity.MobileDataIndicators;
|
import com.android.systemui.statusbar.connectivity.MobileDataIndicators;
|
||||||
@@ -80,7 +79,6 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private QSCarrier mQSCarrier3;
|
private QSCarrier mQSCarrier3;
|
||||||
private TestableLooper mTestableLooper;
|
private TestableLooper mTestableLooper;
|
||||||
@Mock private FeatureFlags mFeatureFlags;
|
|
||||||
@Mock
|
@Mock
|
||||||
private QSCarrierGroupController.OnSingleCarrierChangedListener mOnSingleCarrierChangedListener;
|
private QSCarrierGroupController.OnSingleCarrierChangedListener mOnSingleCarrierChangedListener;
|
||||||
|
|
||||||
@@ -120,7 +118,7 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest {
|
|||||||
mQSCarrierGroupController = new QSCarrierGroupController.Builder(
|
mQSCarrierGroupController = new QSCarrierGroupController.Builder(
|
||||||
mActivityStarter, handler, TestableLooper.get(this).getLooper(),
|
mActivityStarter, handler, TestableLooper.get(this).getLooper(),
|
||||||
mNetworkController, mCarrierTextControllerBuilder, mContext, mCarrierConfigTracker,
|
mNetworkController, mCarrierTextControllerBuilder, mContext, mCarrierConfigTracker,
|
||||||
mFeatureFlags, mSlotIndexResolver)
|
mSlotIndexResolver)
|
||||||
.setQSCarrierGroup(mQSCarrierGroup)
|
.setQSCarrierGroup(mQSCarrierGroup)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
|||||||
@@ -22,13 +22,11 @@ import static org.junit.Assert.assertTrue;
|
|||||||
|
|
||||||
import android.testing.AndroidTestingRunner;
|
import android.testing.AndroidTestingRunner;
|
||||||
import android.testing.TestableLooper;
|
import android.testing.TestableLooper;
|
||||||
import android.util.FeatureFlagUtils;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
|
|
||||||
import com.android.settingslib.graph.SignalDrawable;
|
|
||||||
import com.android.settingslib.mobile.TelephonyIcons;
|
import com.android.settingslib.mobile.TelephonyIcons;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
@@ -59,14 +57,14 @@ public class QSCarrierTest extends SysuiTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_first() {
|
public void testUpdateState_first() {
|
||||||
CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false, false);
|
CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false);
|
||||||
|
|
||||||
assertTrue(mQSCarrier.updateState(c, false));
|
assertTrue(mQSCarrier.updateState(c, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_same() {
|
public void testUpdateState_same() {
|
||||||
CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false, false);
|
CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false);
|
||||||
|
|
||||||
assertTrue(mQSCarrier.updateState(c, false));
|
assertTrue(mQSCarrier.updateState(c, false));
|
||||||
assertFalse(mQSCarrier.updateState(c, false));
|
assertFalse(mQSCarrier.updateState(c, false));
|
||||||
@@ -74,7 +72,7 @@ public class QSCarrierTest extends SysuiTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_changed() {
|
public void testUpdateState_changed() {
|
||||||
CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false, false);
|
CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false);
|
||||||
|
|
||||||
assertTrue(mQSCarrier.updateState(c, false));
|
assertTrue(mQSCarrier.updateState(c, false));
|
||||||
|
|
||||||
@@ -85,14 +83,14 @@ public class QSCarrierTest extends SysuiTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_singleCarrier_first() {
|
public void testUpdateState_singleCarrier_first() {
|
||||||
CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false, false);
|
CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false);
|
||||||
|
|
||||||
assertTrue(mQSCarrier.updateState(c, true));
|
assertTrue(mQSCarrier.updateState(c, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_singleCarrier_noShowIcon() {
|
public void testUpdateState_singleCarrier_noShowIcon() {
|
||||||
CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false, false);
|
CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false);
|
||||||
|
|
||||||
mQSCarrier.updateState(c, true);
|
mQSCarrier.updateState(c, true);
|
||||||
|
|
||||||
@@ -101,7 +99,7 @@ public class QSCarrierTest extends SysuiTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_multiCarrier_showIcon() {
|
public void testUpdateState_multiCarrier_showIcon() {
|
||||||
CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false, false);
|
CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false);
|
||||||
|
|
||||||
mQSCarrier.updateState(c, false);
|
mQSCarrier.updateState(c, false);
|
||||||
|
|
||||||
@@ -110,7 +108,7 @@ public class QSCarrierTest extends SysuiTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_changeSingleMultiSingle() {
|
public void testUpdateState_changeSingleMultiSingle() {
|
||||||
CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false, false);
|
CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false);
|
||||||
|
|
||||||
mQSCarrier.updateState(c, true);
|
mQSCarrier.updateState(c, true);
|
||||||
assertEquals(View.GONE, mQSCarrier.getRSSIView().getVisibility());
|
assertEquals(View.GONE, mQSCarrier.getRSSIView().getVisibility());
|
||||||
|
|||||||
@@ -70,8 +70,6 @@ import com.android.systemui.SysuiTestCase;
|
|||||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||||
import com.android.systemui.demomode.DemoModeController;
|
import com.android.systemui.demomode.DemoModeController;
|
||||||
import com.android.systemui.dump.DumpManager;
|
import com.android.systemui.dump.DumpManager;
|
||||||
import com.android.systemui.flags.FeatureFlags;
|
|
||||||
import com.android.systemui.flags.Flags;
|
|
||||||
import com.android.systemui.log.LogBuffer;
|
import com.android.systemui.log.LogBuffer;
|
||||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener;
|
import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener;
|
||||||
@@ -127,8 +125,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
|||||||
protected CarrierConfigTracker mCarrierConfigTracker;
|
protected CarrierConfigTracker mCarrierConfigTracker;
|
||||||
protected FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock());
|
protected FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock());
|
||||||
protected Handler mMainHandler;
|
protected Handler mMainHandler;
|
||||||
protected FeatureFlags mFeatureFlags;
|
|
||||||
protected WifiStatusTrackerFactory mWifiStatusTrackerFactory;
|
protected WifiStatusTrackerFactory mWifiStatusTrackerFactory;
|
||||||
|
protected MobileSignalControllerFactory mMobileFactory;
|
||||||
|
|
||||||
protected int mSubId;
|
protected int mSubId;
|
||||||
|
|
||||||
@@ -158,9 +156,6 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
mFeatureFlags = mock(FeatureFlags.class);
|
|
||||||
when(mFeatureFlags.isEnabled(Flags.COMBINED_STATUS_BAR_SIGNAL_ICONS)).thenReturn(false);
|
|
||||||
|
|
||||||
mInstrumentation = InstrumentationRegistry.getInstrumentation();
|
mInstrumentation = InstrumentationRegistry.getInstrumentation();
|
||||||
Settings.Global.putInt(mContext.getContentResolver(), Global.AIRPLANE_MODE_ON, 0);
|
Settings.Global.putInt(mContext.getContentResolver(), Global.AIRPLANE_MODE_ON, 0);
|
||||||
TestableResources res = mContext.getOrCreateTestableResources();
|
TestableResources res = mContext.getOrCreateTestableResources();
|
||||||
@@ -224,6 +219,11 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
|||||||
|
|
||||||
mWifiStatusTrackerFactory = new WifiStatusTrackerFactory(
|
mWifiStatusTrackerFactory = new WifiStatusTrackerFactory(
|
||||||
mContext, mMockWm, mMockNsm, mMockCm, mMainHandler);
|
mContext, mMockWm, mMockNsm, mMockCm, mMainHandler);
|
||||||
|
mMobileFactory = new MobileSignalControllerFactory(
|
||||||
|
mContext,
|
||||||
|
mCallbackHandler,
|
||||||
|
mCarrierConfigTracker
|
||||||
|
);
|
||||||
|
|
||||||
mNetworkController = new NetworkControllerImpl(mContext,
|
mNetworkController = new NetworkControllerImpl(mContext,
|
||||||
mMockCm,
|
mMockCm,
|
||||||
@@ -243,8 +243,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
|||||||
mDemoModeController,
|
mDemoModeController,
|
||||||
mCarrierConfigTracker,
|
mCarrierConfigTracker,
|
||||||
mWifiStatusTrackerFactory,
|
mWifiStatusTrackerFactory,
|
||||||
|
mMobileFactory,
|
||||||
mMainHandler,
|
mMainHandler,
|
||||||
mFeatureFlags,
|
|
||||||
mock(DumpManager.class),
|
mock(DumpManager.class),
|
||||||
mock(LogBuffer.class)
|
mock(LogBuffer.class)
|
||||||
);
|
);
|
||||||
@@ -438,10 +438,6 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
|||||||
updateSignalStrength();
|
updateSignalStrength();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setImsType(int imsType) {
|
|
||||||
mMobileSignalController.setImsType(imsType);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIsGsm(boolean gsm) {
|
public void setIsGsm(boolean gsm) {
|
||||||
when(mSignalStrength.isGsm()).thenReturn(gsm);
|
when(mSignalStrength.isGsm()).thenReturn(gsm);
|
||||||
updateSignalStrength();
|
updateSignalStrength();
|
||||||
@@ -637,5 +633,4 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
|||||||
protected void assertDataNetworkNameEquals(String expected) {
|
protected void assertDataNetworkNameEquals(String expected) {
|
||||||
assertEquals("Data network name", expected, mNetworkController.getMobileDataNetworkName());
|
assertEquals("Data network name", expected, mNetworkController.getMobileDataNetworkName());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,8 +145,8 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
|
|||||||
mDemoModeController,
|
mDemoModeController,
|
||||||
mock(CarrierConfigTracker.class),
|
mock(CarrierConfigTracker.class),
|
||||||
mWifiStatusTrackerFactory,
|
mWifiStatusTrackerFactory,
|
||||||
|
mMobileFactory,
|
||||||
new Handler(TestableLooper.get(this).getLooper()),
|
new Handler(TestableLooper.get(this).getLooper()),
|
||||||
mFeatureFlags,
|
|
||||||
mock(DumpManager.class),
|
mock(DumpManager.class),
|
||||||
mock(LogBuffer.class));
|
mock(LogBuffer.class));
|
||||||
setupNetworkController();
|
setupNetworkController();
|
||||||
|
|||||||
@@ -85,8 +85,8 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
|||||||
mDemoModeController,
|
mDemoModeController,
|
||||||
mCarrierConfigTracker,
|
mCarrierConfigTracker,
|
||||||
mWifiStatusTrackerFactory,
|
mWifiStatusTrackerFactory,
|
||||||
|
mMobileFactory,
|
||||||
mMainHandler,
|
mMainHandler,
|
||||||
mFeatureFlags,
|
|
||||||
mock(DumpManager.class),
|
mock(DumpManager.class),
|
||||||
mock(LogBuffer.class)
|
mock(LogBuffer.class)
|
||||||
);
|
);
|
||||||
@@ -121,8 +121,8 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
|||||||
mDemoModeController,
|
mDemoModeController,
|
||||||
mCarrierConfigTracker,
|
mCarrierConfigTracker,
|
||||||
mWifiStatusTrackerFactory,
|
mWifiStatusTrackerFactory,
|
||||||
|
mMobileFactory,
|
||||||
mMainHandler,
|
mMainHandler,
|
||||||
mFeatureFlags,
|
|
||||||
mock(DumpManager.class),
|
mock(DumpManager.class),
|
||||||
mock(LogBuffer.class));
|
mock(LogBuffer.class));
|
||||||
TestableLooper.get(this).processAllMessages();
|
TestableLooper.get(this).processAllMessages();
|
||||||
@@ -155,8 +155,8 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
|||||||
mDemoModeController,
|
mDemoModeController,
|
||||||
mock(CarrierConfigTracker.class),
|
mock(CarrierConfigTracker.class),
|
||||||
mWifiStatusTrackerFactory,
|
mWifiStatusTrackerFactory,
|
||||||
|
mMobileFactory,
|
||||||
mMainHandler,
|
mMainHandler,
|
||||||
mFeatureFlags,
|
|
||||||
mock(DumpManager.class),
|
mock(DumpManager.class),
|
||||||
mock(LogBuffer.class));
|
mock(LogBuffer.class));
|
||||||
setupNetworkController();
|
setupNetworkController();
|
||||||
@@ -192,8 +192,8 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
|||||||
mDemoModeController,
|
mDemoModeController,
|
||||||
mock(CarrierConfigTracker.class),
|
mock(CarrierConfigTracker.class),
|
||||||
mWifiStatusTrackerFactory,
|
mWifiStatusTrackerFactory,
|
||||||
|
mMobileFactory,
|
||||||
mMainHandler,
|
mMainHandler,
|
||||||
mFeatureFlags,
|
|
||||||
mock(DumpManager.class),
|
mock(DumpManager.class),
|
||||||
mock(LogBuffer.class));
|
mock(LogBuffer.class));
|
||||||
mNetworkController.registerListeners();
|
mNetworkController.registerListeners();
|
||||||
@@ -277,8 +277,8 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
|||||||
mDemoModeController,
|
mDemoModeController,
|
||||||
mock(CarrierConfigTracker.class),
|
mock(CarrierConfigTracker.class),
|
||||||
mWifiStatusTrackerFactory,
|
mWifiStatusTrackerFactory,
|
||||||
|
mMobileFactory,
|
||||||
mMainHandler,
|
mMainHandler,
|
||||||
mFeatureFlags,
|
|
||||||
mock(DumpManager.class),
|
mock(DumpManager.class),
|
||||||
mock(LogBuffer.class));
|
mock(LogBuffer.class));
|
||||||
setupNetworkController();
|
setupNetworkController();
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import android.net.NetworkInfo;
|
|||||||
import android.net.vcn.VcnTransportInfo;
|
import android.net.vcn.VcnTransportInfo;
|
||||||
import android.net.wifi.WifiInfo;
|
import android.net.wifi.WifiInfo;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.telephony.CellSignalStrength;
|
|
||||||
import android.testing.AndroidTestingRunner;
|
import android.testing.AndroidTestingRunner;
|
||||||
import android.testing.TestableLooper.RunWithLooper;
|
import android.testing.TestableLooper.RunWithLooper;
|
||||||
|
|
||||||
@@ -285,44 +284,6 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
|
|||||||
verifyLastMobileDataIndicatorsForVcn(false, 1, 0, false);
|
verifyLastMobileDataIndicatorsForVcn(false, 1, 0, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCallStrengh() {
|
|
||||||
if (true) return;
|
|
||||||
String testSsid = "Test SSID";
|
|
||||||
setWifiEnabled(true);
|
|
||||||
setWifiState(true, testSsid);
|
|
||||||
// Set the ImsType to be IMS_TYPE_WLAN
|
|
||||||
setImsType(2);
|
|
||||||
setWifiLevel(1);
|
|
||||||
for (int testLevel = 0; testLevel < WifiIcons.WIFI_LEVEL_COUNT; testLevel++) {
|
|
||||||
setWifiLevel(testLevel);
|
|
||||||
verifyLastCallStrength(TelephonyIcons.WIFI_CALL_STRENGTH_ICONS[testLevel]);
|
|
||||||
}
|
|
||||||
// Set the ImsType to be IMS_TYPE_WWAN
|
|
||||||
setImsType(1);
|
|
||||||
setupDefaultSignal();
|
|
||||||
for (int testStrength = 0;
|
|
||||||
testStrength < CellSignalStrength.getNumSignalStrengthLevels(); testStrength++) {
|
|
||||||
setLevel(testStrength);
|
|
||||||
verifyLastCallStrength(TelephonyIcons.MOBILE_CALL_STRENGTH_ICONS[testStrength]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testNonPrimaryWiFi() {
|
|
||||||
if (true) return;
|
|
||||||
String testSsid = "Test SSID";
|
|
||||||
setWifiEnabled(true);
|
|
||||||
setWifiState(true, testSsid);
|
|
||||||
// Set the ImsType to be IMS_TYPE_WLAN
|
|
||||||
setImsType(2);
|
|
||||||
setWifiLevel(1);
|
|
||||||
verifyLastCallStrength(TelephonyIcons.WIFI_CALL_STRENGTH_ICONS[1]);
|
|
||||||
when(mWifiInfo.isPrimary()).thenReturn(false);
|
|
||||||
setWifiLevel(3);
|
|
||||||
verifyLastCallStrength(TelephonyIcons.WIFI_CALL_STRENGTH_ICONS[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void setWifiActivity(int activity) {
|
protected void setWifiActivity(int activity) {
|
||||||
// TODO: Not this, because this variable probably isn't sticking around.
|
// TODO: Not this, because this variable probably isn't sticking around.
|
||||||
mNetworkController.mWifiSignalController.setActivity(activity);
|
mNetworkController.mWifiSignalController.setActivity(activity);
|
||||||
|
|||||||
Reference in New Issue
Block a user