Merge "Define wrapper classes for WiFi and Mobile indicators" into sc-dev
This commit is contained in:
@@ -42,6 +42,7 @@ import com.android.systemui.dagger.qualifiers.Background;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.plugins.ActivityStarter;
|
||||
import com.android.systemui.statusbar.policy.NetworkController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -74,30 +75,25 @@ public class QSCarrierGroupController {
|
||||
private final NetworkController.SignalCallback mSignalCallback =
|
||||
new NetworkController.SignalCallback() {
|
||||
@Override
|
||||
public void setMobileDataIndicators(NetworkController.IconState statusIcon,
|
||||
NetworkController.IconState qsIcon, int statusType, int qsType,
|
||||
boolean activityIn, boolean activityOut,
|
||||
CharSequence typeContentDescription,
|
||||
CharSequence typeContentDescriptionHtml, CharSequence description,
|
||||
boolean isWide, int subId, boolean roaming, boolean showTriangle) {
|
||||
public void setMobileDataIndicators(MobileDataIndicators indicators) {
|
||||
if (mProviderModel) {
|
||||
return;
|
||||
}
|
||||
int slotIndex = getSlotIndex(subId);
|
||||
int slotIndex = getSlotIndex(indicators.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);
|
||||
Log.e(TAG, "Invalid SIM slot index for subscription: " + indicators.subId);
|
||||
return;
|
||||
}
|
||||
mInfos[slotIndex] = new CellSignalState(
|
||||
statusIcon.visible,
|
||||
statusIcon.icon,
|
||||
statusIcon.contentDescription,
|
||||
typeContentDescription.toString(),
|
||||
roaming
|
||||
indicators.statusIcon.visible,
|
||||
indicators.statusIcon.icon,
|
||||
indicators.statusIcon.contentDescription,
|
||||
indicators.typeContentDescription.toString(),
|
||||
indicators.roaming
|
||||
);
|
||||
mMainHandler.obtainMessage(H.MSG_UPDATE_STATE).sendToTarget();
|
||||
}
|
||||
|
||||
@@ -54,6 +54,7 @@ import com.android.systemui.statusbar.policy.CastController.CastDevice;
|
||||
import com.android.systemui.statusbar.policy.HotspotController;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.WifiIndicators;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
@@ -269,13 +270,10 @@ public class CastTile extends QSTileImpl<BooleanState> {
|
||||
private final NetworkController.SignalCallback mSignalCallback =
|
||||
new NetworkController.SignalCallback() {
|
||||
@Override
|
||||
public void setWifiIndicators(boolean enabled,
|
||||
NetworkController.IconState statusIcon,
|
||||
NetworkController.IconState qsIcon, boolean activityIn, boolean activityOut,
|
||||
String description, boolean isTransient, String statusLabel) {
|
||||
public void setWifiIndicators(WifiIndicators indicators) {
|
||||
// statusIcon.visible has the connected status information
|
||||
boolean enabledAndConnected =
|
||||
enabled && (qsIcon == null ? false : qsIcon.visible);
|
||||
boolean enabledAndConnected = indicators.enabled
|
||||
&& (indicators.qsIcon == null ? false : indicators.qsIcon.visible);
|
||||
if (enabledAndConnected != mWifiConnected) {
|
||||
mWifiConnected = enabledAndConnected;
|
||||
// Hotspot is not connected, so changes here should update
|
||||
|
||||
@@ -56,6 +56,7 @@ import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
import com.android.systemui.statusbar.phone.SystemUIDialog;
|
||||
import com.android.systemui.statusbar.policy.NetworkController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.IconState;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@@ -264,21 +265,17 @@ public class CellularTile extends QSTileImpl<SignalState> {
|
||||
private final CallbackInfo mInfo = new CallbackInfo();
|
||||
|
||||
@Override
|
||||
public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
|
||||
int qsType, boolean activityIn, boolean activityOut,
|
||||
CharSequence typeContentDescription,
|
||||
CharSequence typeContentDescriptionHtml, CharSequence description,
|
||||
boolean isWide, int subId, boolean roaming, boolean showTriangle) {
|
||||
if (qsIcon == null) {
|
||||
public void setMobileDataIndicators(MobileDataIndicators indicators) {
|
||||
if (indicators.qsIcon == null) {
|
||||
// Not data sim, don't display.
|
||||
return;
|
||||
}
|
||||
mInfo.dataSubscriptionName = mController.getMobileDataNetworkName();
|
||||
mInfo.dataContentDescription =
|
||||
(description != null) ? typeContentDescriptionHtml : null;
|
||||
mInfo.activityIn = activityIn;
|
||||
mInfo.activityOut = activityOut;
|
||||
mInfo.roaming = roaming;
|
||||
mInfo.dataContentDescription = indicators.description != null
|
||||
? indicators.typeContentDescriptionHtml : null;
|
||||
mInfo.activityIn = indicators.activityIn;
|
||||
mInfo.activityOut = indicators.activityOut;
|
||||
mInfo.roaming = indicators.roaming;
|
||||
mInfo.multipleSubs = mController.getNumberSubscriptions() > 1;
|
||||
refreshState(mInfo);
|
||||
}
|
||||
|
||||
@@ -51,7 +51,9 @@ import com.android.systemui.qs.logging.QSLogger;
|
||||
import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
import com.android.systemui.statusbar.policy.NetworkController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.IconState;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.WifiIndicators;
|
||||
import com.android.systemui.statusbar.policy.WifiIcons;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
@@ -234,70 +236,44 @@ public class InternetTile extends QSTileImpl<SignalState> {
|
||||
|
||||
|
||||
@Override
|
||||
public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
|
||||
boolean activityIn, boolean activityOut, String description, boolean isTransient,
|
||||
String statusLabel) {
|
||||
public void setWifiIndicators(WifiIndicators indicators) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "setWifiIndicators: "
|
||||
+ "enabled = " + enabled + ","
|
||||
+ "statusIcon = " + (statusIcon == null ? "" : statusIcon.toString()) + ","
|
||||
+ "qsIcon = " + (qsIcon == null ? "" : qsIcon.toString()) + ","
|
||||
+ "activityIn = " + activityIn + ","
|
||||
+ "activityOut = " + activityOut + ","
|
||||
+ "description = " + description + ","
|
||||
+ "isTransient = " + isTransient + ","
|
||||
+ "statusLabel = " + statusLabel);
|
||||
Log.d(TAG, "setWifiIndicators: " + indicators);
|
||||
}
|
||||
mWifiInfo.mEnabled = enabled;
|
||||
if (qsIcon == null) {
|
||||
mWifiInfo.mEnabled = indicators.enabled;
|
||||
if (indicators.qsIcon == null) {
|
||||
return;
|
||||
}
|
||||
mWifiInfo.mConnected = qsIcon.visible;
|
||||
mWifiInfo.mWifiSignalIconId = qsIcon.icon;
|
||||
mWifiInfo.mWifiSignalContentDescription = qsIcon.contentDescription;
|
||||
mWifiInfo.mSsid = description;
|
||||
mWifiInfo.mActivityIn = activityIn;
|
||||
mWifiInfo.mActivityOut = activityOut;
|
||||
mWifiInfo.mIsTransient = isTransient;
|
||||
mWifiInfo.mStatusLabel = statusLabel;
|
||||
mWifiInfo.mConnected = indicators.qsIcon.visible;
|
||||
mWifiInfo.mWifiSignalIconId = indicators.qsIcon.icon;
|
||||
mWifiInfo.mWifiSignalContentDescription = indicators.qsIcon.contentDescription;
|
||||
mWifiInfo.mEnabled = indicators.enabled;
|
||||
mWifiInfo.mSsid = indicators.description;
|
||||
mWifiInfo.mActivityIn = indicators.activityIn;
|
||||
mWifiInfo.mActivityOut = indicators.activityOut;
|
||||
mWifiInfo.mIsTransient = indicators.isTransient;
|
||||
mWifiInfo.mStatusLabel = indicators.statusLabel;
|
||||
refreshState(mWifiInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
|
||||
int qsType, boolean activityIn, boolean activityOut,
|
||||
CharSequence typeContentDescription,
|
||||
CharSequence typeContentDescriptionHtml, CharSequence description,
|
||||
boolean isWide, int subId, boolean roaming, boolean showTriangle) {
|
||||
public void setMobileDataIndicators(MobileDataIndicators indicators) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "setMobileDataIndicators: "
|
||||
+ "statusIcon = " + (statusIcon == null ? "" : statusIcon.toString()) + ","
|
||||
+ "qsIcon = " + (qsIcon == null ? "" : qsIcon.toString()) + ","
|
||||
+ "statusType = " + statusType + ","
|
||||
+ "qsType = " + qsType + ","
|
||||
+ "activityIn = " + activityIn + ","
|
||||
+ "activityOut = " + activityOut + ","
|
||||
+ "typeContentDescription = " + typeContentDescription + ","
|
||||
+ "typeContentDescriptionHtml = " + typeContentDescriptionHtml + ","
|
||||
+ "description = " + description + ","
|
||||
+ "isWide = " + isWide + ","
|
||||
+ "subId = " + subId + ","
|
||||
+ "roaming = " + roaming + ","
|
||||
+ "showTriangle = " + showTriangle);
|
||||
Log.d(TAG, "setMobileDataIndicators: " + indicators);
|
||||
}
|
||||
if (qsIcon == null) {
|
||||
if (indicators.qsIcon == null) {
|
||||
// Not data sim, don't display.
|
||||
return;
|
||||
}
|
||||
mCellularInfo.mDataSubscriptionName =
|
||||
description == null ? mController.getMobileDataNetworkName() : description;
|
||||
mCellularInfo.mDataContentDescription =
|
||||
(description != null) ? typeContentDescriptionHtml : null;
|
||||
mCellularInfo.mMobileSignalIconId = qsIcon.icon;
|
||||
mCellularInfo.mQsTypeIcon = qsType;
|
||||
mCellularInfo.mActivityIn = activityIn;
|
||||
mCellularInfo.mActivityOut = activityOut;
|
||||
mCellularInfo.mRoaming = roaming;
|
||||
mCellularInfo.mDataSubscriptionName = indicators.description == null
|
||||
? mController.getMobileDataNetworkName() : indicators.description;
|
||||
mCellularInfo.mDataContentDescription = indicators.description != null
|
||||
? indicators.typeContentDescriptionHtml : null;
|
||||
mCellularInfo.mMobileSignalIconId = indicators.qsIcon.icon;
|
||||
mCellularInfo.mQsTypeIcon = indicators.qsType;
|
||||
mCellularInfo.mActivityIn = indicators.activityIn;
|
||||
mCellularInfo.mActivityOut = indicators.activityOut;
|
||||
mCellularInfo.mRoaming = indicators.roaming;
|
||||
mCellularInfo.mMultipleSubs = mController.getNumberSubscriptions() > 1;
|
||||
refreshState(mCellularInfo);
|
||||
}
|
||||
|
||||
@@ -51,8 +51,8 @@ import com.android.systemui.qs.tileimpl.QSIconViewImpl;
|
||||
import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
import com.android.systemui.statusbar.policy.NetworkController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.AccessPointController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.IconState;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.WifiIndicators;
|
||||
import com.android.systemui.statusbar.policy.WifiIcons;
|
||||
import com.android.wifitrackerlib.WifiEntry;
|
||||
|
||||
@@ -303,22 +303,20 @@ public class WifiTile extends QSTileImpl<SignalState> {
|
||||
final CallbackInfo mInfo = new CallbackInfo();
|
||||
|
||||
@Override
|
||||
public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
|
||||
boolean activityIn, boolean activityOut, String description, boolean isTransient,
|
||||
String statusLabel) {
|
||||
if (DEBUG) Log.d(TAG, "onWifiSignalChanged enabled=" + enabled);
|
||||
if (qsIcon == null) {
|
||||
public void setWifiIndicators(WifiIndicators indicators) {
|
||||
if (DEBUG) Log.d(TAG, "onWifiSignalChanged enabled=" + indicators.enabled);
|
||||
if (indicators.qsIcon == null) {
|
||||
return;
|
||||
}
|
||||
mInfo.enabled = enabled;
|
||||
mInfo.connected = qsIcon.visible;
|
||||
mInfo.wifiSignalIconId = qsIcon.icon;
|
||||
mInfo.ssid = description;
|
||||
mInfo.activityIn = activityIn;
|
||||
mInfo.activityOut = activityOut;
|
||||
mInfo.wifiSignalContentDescription = qsIcon.contentDescription;
|
||||
mInfo.isTransient = isTransient;
|
||||
mInfo.statusLabel = statusLabel;
|
||||
mInfo.enabled = indicators.enabled;
|
||||
mInfo.connected = indicators.qsIcon.visible;
|
||||
mInfo.wifiSignalIconId = indicators.qsIcon.icon;
|
||||
mInfo.ssid = indicators.description;
|
||||
mInfo.activityIn = indicators.activityIn;
|
||||
mInfo.activityOut = indicators.activityOut;
|
||||
mInfo.wifiSignalContentDescription = indicators.qsIcon.contentDescription;
|
||||
mInfo.isTransient = indicators.isTransient;
|
||||
mInfo.statusLabel = indicators.statusLabel;
|
||||
if (isShowingDetail()) {
|
||||
mDetailAdapter.updateItems();
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@ import com.android.systemui.Dependency;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.statusbar.policy.NetworkController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.IconState;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.WifiIndicators;
|
||||
import com.android.systemui.statusbar.policy.NetworkControllerImpl;
|
||||
import com.android.systemui.statusbar.policy.SecurityController;
|
||||
import com.android.systemui.tuner.TunerService;
|
||||
@@ -143,24 +145,14 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
|
||||
boolean activityIn, boolean activityOut, String description, boolean isTransient,
|
||||
String statusLabel) {
|
||||
public void setWifiIndicators(WifiIndicators indicators) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "setWifiIndicators: "
|
||||
+ "enabled = " + enabled + ","
|
||||
+ "statusIcon = " + (statusIcon == null ? "" : statusIcon.toString()) + ","
|
||||
+ "qsIcon = " + (qsIcon == null ? "" : qsIcon.toString()) + ","
|
||||
+ "activityIn = " + activityIn + ","
|
||||
+ "activityOut = " + activityOut + ","
|
||||
+ "description = " + description + ","
|
||||
+ "isTransient = " + isTransient + ","
|
||||
+ "statusLabel = " + statusLabel);
|
||||
Log.d(TAG, "setWifiIndicators: " + indicators);
|
||||
}
|
||||
boolean visible = statusIcon.visible && !mHideWifi;
|
||||
boolean in = activityIn && mActivityEnabled && visible;
|
||||
boolean out = activityOut && mActivityEnabled && visible;
|
||||
mIsWifiEnabled = enabled;
|
||||
boolean visible = indicators.statusIcon.visible && !mHideWifi;
|
||||
boolean in = indicators.activityIn && mActivityEnabled && visible;
|
||||
boolean out = indicators.activityOut && mActivityEnabled && visible;
|
||||
mIsWifiEnabled = indicators.enabled;
|
||||
|
||||
WifiIconState newState = mWifiIconState.copy();
|
||||
|
||||
@@ -174,10 +166,10 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba
|
||||
newState.resId = R.drawable.ic_qs_no_internet_available;
|
||||
} else {
|
||||
newState.visible = visible;
|
||||
newState.resId = statusIcon.icon;
|
||||
newState.resId = indicators.statusIcon.icon;
|
||||
newState.activityIn = in;
|
||||
newState.activityOut = out;
|
||||
newState.contentDescription = statusIcon.contentDescription;
|
||||
newState.contentDescription = indicators.statusIcon.contentDescription;
|
||||
MobileIconState first = getFirstMobileState();
|
||||
newState.signalSpacerVisible = first != null && first.typeId != 0;
|
||||
}
|
||||
@@ -225,44 +217,28 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
|
||||
int qsType, boolean activityIn, boolean activityOut,
|
||||
CharSequence typeContentDescription,
|
||||
CharSequence typeContentDescriptionHtml, CharSequence description,
|
||||
boolean isWide, int subId, boolean roaming, boolean showTriangle) {
|
||||
public void setMobileDataIndicators(MobileDataIndicators indicators) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "setMobileDataIndicators: "
|
||||
+ "statusIcon = " + (statusIcon == null ? "" : statusIcon.toString()) + ","
|
||||
+ "qsIcon = " + (qsIcon == null ? "" : qsIcon.toString()) + ","
|
||||
+ "statusType = " + statusType + ","
|
||||
+ "qsType = " + qsType + ","
|
||||
+ "activityIn = " + activityIn + ","
|
||||
+ "activityOut = " + activityOut + ","
|
||||
+ "typeContentDescription = " + typeContentDescription + ","
|
||||
+ "typeContentDescriptionHtml = " + typeContentDescriptionHtml + ","
|
||||
+ "description = " + description + ","
|
||||
+ "isWide = " + isWide + ","
|
||||
+ "subId = " + subId + ","
|
||||
+ "roaming = " + roaming + ","
|
||||
+ "showTriangle = " + showTriangle);
|
||||
Log.d(TAG, "setMobileDataIndicators: " + indicators);
|
||||
}
|
||||
MobileIconState state = getState(subId);
|
||||
MobileIconState state = getState(indicators.subId);
|
||||
if (state == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Visibility of the data type indicator changed
|
||||
boolean typeChanged = statusType != state.typeId && (statusType == 0 || state.typeId == 0);
|
||||
boolean typeChanged = indicators.statusType != state.typeId
|
||||
&& (indicators.statusType == 0 || state.typeId == 0);
|
||||
|
||||
state.visible = statusIcon.visible && !mHideMobile;
|
||||
state.strengthId = statusIcon.icon;
|
||||
state.typeId = statusType;
|
||||
state.contentDescription = statusIcon.contentDescription;
|
||||
state.typeContentDescription = typeContentDescription;
|
||||
state.showTriangle = showTriangle;
|
||||
state.roaming = roaming;
|
||||
state.activityIn = activityIn && mActivityEnabled;
|
||||
state.activityOut = activityOut && mActivityEnabled;
|
||||
state.visible = indicators.statusIcon.visible && !mHideMobile;
|
||||
state.strengthId = indicators.statusIcon.icon;
|
||||
state.typeId = indicators.statusType;
|
||||
state.contentDescription = indicators.statusIcon.contentDescription;
|
||||
state.typeContentDescription = indicators.typeContentDescription;
|
||||
state.showTriangle = indicators.showTriangle;
|
||||
state.roaming = indicators.roaming;
|
||||
state.activityIn = indicators.activityIn && mActivityEnabled;
|
||||
state.activityOut = indicators.activityOut && mActivityEnabled;
|
||||
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "MobileIconStates: "
|
||||
|
||||
@@ -23,7 +23,9 @@ import android.telephony.SubscriptionInfo;
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.EmergencyListener;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.IconState;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.WifiIndicators;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.text.SimpleDateFormat;
|
||||
@@ -119,63 +121,29 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWifiIndicators(final boolean enabled, final IconState statusIcon,
|
||||
final IconState qsIcon, final boolean activityIn, final boolean activityOut,
|
||||
final String description, boolean isTransient, String secondaryLabel) {
|
||||
public void setWifiIndicators(final WifiIndicators indicators) {
|
||||
String log = new StringBuilder()
|
||||
.append(SSDF.format(System.currentTimeMillis())).append(",")
|
||||
.append("setWifiIndicators: ")
|
||||
.append("enabled=").append(enabled).append(",")
|
||||
.append("statusIcon=").append(statusIcon).append(",")
|
||||
.append("qsIcon=").append(qsIcon).append(",")
|
||||
.append("activityIn=").append(activityIn).append(",")
|
||||
.append("activityOut=").append(activityOut).append(",")
|
||||
.append("description=").append(description).append(",")
|
||||
.append("isTransient=").append(isTransient).append(",")
|
||||
.append("secondaryLabel=").append(secondaryLabel)
|
||||
.append(indicators)
|
||||
.toString();
|
||||
recordLastCallback(log);
|
||||
post(() -> {
|
||||
for (SignalCallback callback : mSignalCallbacks) {
|
||||
callback.setWifiIndicators(enabled, statusIcon, qsIcon, activityIn, activityOut,
|
||||
description, isTransient, secondaryLabel);
|
||||
callback.setWifiIndicators(indicators);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMobileDataIndicators(final IconState statusIcon, final IconState qsIcon,
|
||||
final int statusType, final int qsType, final boolean activityIn,
|
||||
final boolean activityOut, final CharSequence typeContentDescription,
|
||||
CharSequence typeContentDescriptionHtml, final CharSequence description,
|
||||
final boolean isWide, final int subId, boolean roaming, boolean showTriangle) {
|
||||
public void setMobileDataIndicators(final MobileDataIndicators indicators) {
|
||||
String log = new StringBuilder()
|
||||
.append(SSDF.format(System.currentTimeMillis())).append(",")
|
||||
.append("setMobileDataIndicators: ")
|
||||
.append("statusIcon=").append(statusIcon).append(",")
|
||||
.append("qsIcon=").append(qsIcon).append(",")
|
||||
.append("statusType=").append(statusType).append(",")
|
||||
.append("qsType=").append(qsType).append(",")
|
||||
.append("activityIn=").append(activityIn).append(",")
|
||||
.append("activityOut=").append(activityOut).append(",")
|
||||
.append("typeContentDescription=").append(typeContentDescription).append(",")
|
||||
.append("typeContentDescriptionHtml=").append(typeContentDescriptionHtml)
|
||||
.append(",")
|
||||
.append("description=").append(description).append(",")
|
||||
.append("isWide=").append(isWide).append(",")
|
||||
.append("subId=").append(subId).append(",")
|
||||
.append("roaming=").append(roaming).append(",")
|
||||
.append("showTriangle=").append(showTriangle)
|
||||
.append(indicators)
|
||||
.toString();
|
||||
recordLastCallback(log);
|
||||
post(() -> {
|
||||
for (SignalCallback signalCluster : mSignalCallbacks) {
|
||||
signalCluster.setMobileDataIndicators(statusIcon, qsIcon, statusType, qsType,
|
||||
activityIn, activityOut, typeContentDescription,
|
||||
typeContentDescriptionHtml, description, isWide, subId, roaming,
|
||||
showTriangle);
|
||||
signalCluster.setMobileDataIndicators(indicators);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -59,6 +59,7 @@ import com.android.settingslib.mobile.TelephonyIcons;
|
||||
import com.android.settingslib.net.SignalStrengthUtil;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.IconState;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
@@ -402,10 +403,12 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
||||
showDataIcon |= mCurrentState.roaming;
|
||||
IconState statusIcon = new IconState(showDataIcon && !mCurrentState.airplaneMode,
|
||||
getCurrentIconId(), contentDescription);
|
||||
callback.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon,
|
||||
MobileDataIndicators mobileDataIndicators = new MobileDataIndicators(
|
||||
statusIcon, qsIcon, typeIcon, qsTypeIcon,
|
||||
activityIn, activityOut, dataContentDescription, dataContentDescriptionHtml,
|
||||
description, icons.isWide, mSubscriptionInfo.getSubscriptionId(),
|
||||
mCurrentState.roaming, showTriangle);
|
||||
callback.setMobileDataIndicators(mobileDataIndicators);
|
||||
} else {
|
||||
boolean showDataIcon = mCurrentState.dataConnected || dataDisabled;
|
||||
IconState statusIcon = new IconState(
|
||||
@@ -432,10 +435,12 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
||||
showDataIcon &= mCurrentState.isDefault || dataDisabled;
|
||||
int typeIcon = (showDataIcon || mConfig.alwaysShowDataRatIcon) ? icons.dataType : 0;
|
||||
boolean showTriangle = mCurrentState.enabled && !mCurrentState.airplaneMode;
|
||||
callback.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon,
|
||||
MobileDataIndicators mobileDataIndicators = new MobileDataIndicators(
|
||||
statusIcon, qsIcon, typeIcon, qsTypeIcon,
|
||||
activityIn, activityOut, dataContentDescription, dataContentDescriptionHtml,
|
||||
description, icons.isWide, mSubscriptionInfo.getSubscriptionId(),
|
||||
mCurrentState.roaming, showTriangle);
|
||||
callback.setMobileDataIndicators(mobileDataIndicators);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -46,34 +46,117 @@ public interface NetworkController extends CallbackController<SignalCallback>, D
|
||||
|
||||
boolean isRadioOn();
|
||||
|
||||
/**
|
||||
* Wrapper class for all the WiFi signals used for WiFi indicators.
|
||||
*/
|
||||
final class WifiIndicators {
|
||||
public boolean enabled;
|
||||
public IconState statusIcon;
|
||||
public IconState qsIcon;
|
||||
public boolean activityIn;
|
||||
public boolean activityOut;
|
||||
public String description;
|
||||
public boolean isTransient;
|
||||
public String statusLabel;
|
||||
|
||||
public WifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
|
||||
boolean activityIn, boolean activityOut, String description,
|
||||
boolean isTransient, String statusLabel) {
|
||||
this.enabled = enabled;
|
||||
this.statusIcon = statusIcon;
|
||||
this.qsIcon = qsIcon;
|
||||
this.activityIn = activityIn;
|
||||
this.activityOut = activityOut;
|
||||
this.description = description;
|
||||
this.isTransient = isTransient;
|
||||
this.statusLabel = statusLabel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new StringBuilder("WifiIndicators[")
|
||||
.append("enabled=").append(enabled)
|
||||
.append(",statusIcon=").append(statusIcon == null ? "" : statusIcon.toString())
|
||||
.append(",qsIcon=").append(qsIcon == null ? "" : qsIcon.toString())
|
||||
.append(",activityIn=").append(activityIn)
|
||||
.append(",activityOut=").append(activityOut)
|
||||
.append(",description=").append(description)
|
||||
.append(",isTransient=").append(isTransient)
|
||||
.append(",statusLabel=").append(statusLabel)
|
||||
.append(']').toString();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper class for all the mobile signals used for mobile data indicators.
|
||||
*/
|
||||
final class MobileDataIndicators {
|
||||
public IconState statusIcon;
|
||||
public IconState qsIcon;
|
||||
public int statusType;
|
||||
public int qsType;
|
||||
public boolean activityIn;
|
||||
public boolean activityOut;
|
||||
public CharSequence typeContentDescription;
|
||||
public CharSequence typeContentDescriptionHtml;
|
||||
public CharSequence description;
|
||||
public boolean isWide;
|
||||
public int subId;
|
||||
public boolean roaming;
|
||||
public boolean showTriangle;
|
||||
|
||||
public MobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
|
||||
int qsType, boolean activityIn, boolean activityOut,
|
||||
CharSequence typeContentDescription, CharSequence typeContentDescriptionHtml,
|
||||
CharSequence description, boolean isWide, int subId, boolean roaming,
|
||||
boolean showTriangle) {
|
||||
this.statusIcon = statusIcon;
|
||||
this.qsIcon = qsIcon;
|
||||
this.statusType = statusType;
|
||||
this.qsType = qsType;
|
||||
this.activityIn = activityIn;
|
||||
this.activityOut = activityOut;
|
||||
this.typeContentDescription = typeContentDescription;
|
||||
this.typeContentDescriptionHtml = typeContentDescriptionHtml;
|
||||
this.description = description;
|
||||
this.isWide = isWide;
|
||||
this.subId = subId;
|
||||
this.roaming = roaming;
|
||||
this.showTriangle = showTriangle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new StringBuilder("MobileDataIndicators[")
|
||||
.append("statusIcon=").append(statusIcon == null ? "" : statusIcon.toString())
|
||||
.append(",qsIcon=").append(qsIcon == null ? "" : qsIcon.toString())
|
||||
.append(",statusType=").append(statusType)
|
||||
.append(",qsType=").append(qsType)
|
||||
.append(",activityIn=").append(activityIn)
|
||||
.append(",activityOut=").append(activityOut)
|
||||
.append(",typeContentDescription=").append(typeContentDescription)
|
||||
.append(",typeContentDescriptionHtml=").append(typeContentDescriptionHtml)
|
||||
.append(",description=").append(description)
|
||||
.append(",isWide=").append(isWide)
|
||||
.append(",subId=").append(subId)
|
||||
.append(",roaming=").append(roaming)
|
||||
.append(",showTriangle=").append(showTriangle)
|
||||
.append(']').toString();
|
||||
}
|
||||
}
|
||||
|
||||
public interface SignalCallback {
|
||||
default void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
|
||||
boolean activityIn, boolean activityOut, String description, boolean isTransient,
|
||||
String statusLabel) {}
|
||||
/**
|
||||
* Callback for listeners to be able to update the state of any UI tracking connectivity of
|
||||
* WiFi networks.
|
||||
*/
|
||||
default void setWifiIndicators(WifiIndicators wifiIndicators) {}
|
||||
|
||||
/**
|
||||
* Callback for listeners to be able to update the state of any UI tracking connectivity
|
||||
* @param statusIcon the icon that should be shown in the status bar
|
||||
* @param qsIcon the icon to show in Quick Settings
|
||||
* @param statusType the resId of the data type icon (e.g. LTE) to show in the status bar
|
||||
* @param qsType similar to above, the resId of the data type icon to show in Quick Settings
|
||||
* @param activityIn indicates whether there is inbound activity
|
||||
* @param activityOut indicates outbound activity
|
||||
* @param typeContentDescription the contentDescription of the data type
|
||||
* @param typeContentDescriptionHtml the (possibly HTML-styled) contentDescription of the
|
||||
* data type. Suitable for display
|
||||
* @param description description of the network (usually just the network name)
|
||||
* @param isWide //TODO: unused?
|
||||
* @param subId subscription ID for which to update the UI
|
||||
* @param roaming indicates roaming
|
||||
* @param showTriangle whether to show the mobile triangle the in status bar
|
||||
* of Mobile networks.
|
||||
*/
|
||||
default void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
|
||||
int qsType, boolean activityIn, boolean activityOut,
|
||||
CharSequence typeContentDescription,
|
||||
CharSequence typeContentDescriptionHtml, CharSequence description,
|
||||
boolean isWide, int subId, boolean roaming, boolean showTriangle) {
|
||||
}
|
||||
default void setMobileDataIndicators(MobileDataIndicators mobileDataIndicators) {}
|
||||
|
||||
default void setSubs(List<SubscriptionInfo> subs) {}
|
||||
|
||||
|
||||
@@ -38,7 +38,9 @@ import com.android.settingslib.mobile.TelephonyIcons;
|
||||
import com.android.settingslib.wifi.WifiStatusTracker;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.IconState;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.WifiIndicators;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Objects;
|
||||
@@ -113,18 +115,24 @@ public class WifiSignalController extends
|
||||
mWifiTracker.isCaptivePortal ? R.drawable.ic_qs_wifi_disconnected
|
||||
: getQsCurrentIconId(), contentDescription);
|
||||
}
|
||||
callback.setWifiIndicators(mCurrentState.enabled, statusIcon, qsIcon,
|
||||
WifiIndicators wifiIndicators = new WifiIndicators(
|
||||
mCurrentState.enabled, statusIcon, qsIcon,
|
||||
ssidPresent && mCurrentState.activityIn,
|
||||
ssidPresent && mCurrentState.activityOut,
|
||||
wifiDesc, mCurrentState.isTransient, mCurrentState.statusLabel);
|
||||
wifiDesc, mCurrentState.isTransient, mCurrentState.statusLabel
|
||||
);
|
||||
callback.setWifiIndicators(wifiIndicators);
|
||||
} else {
|
||||
IconState qsIcon = new IconState(mCurrentState.connected,
|
||||
mWifiTracker.isCaptivePortal ? R.drawable.ic_qs_wifi_disconnected
|
||||
: getQsCurrentIconId(), contentDescription);
|
||||
callback.setWifiIndicators(mCurrentState.enabled, statusIcon, qsIcon,
|
||||
WifiIndicators wifiIndicators = new WifiIndicators(
|
||||
mCurrentState.enabled, statusIcon, qsIcon,
|
||||
ssidPresent && mCurrentState.activityIn,
|
||||
ssidPresent && mCurrentState.activityOut,
|
||||
wifiDesc, mCurrentState.isTransient, mCurrentState.statusLabel);
|
||||
wifiDesc, mCurrentState.isTransient, mCurrentState.statusLabel
|
||||
);
|
||||
callback.setWifiIndicators(wifiIndicators);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,10 +157,13 @@ public class WifiSignalController extends
|
||||
mCurrentState.connected, getQsCurrentIconIdForCarrierWifi(), contentDescription);
|
||||
CharSequence description =
|
||||
mNetworkController.getNetworkNameForCarrierWiFi(mCurrentState.subId);
|
||||
callback.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon,
|
||||
MobileDataIndicators mobileDataIndicators = new MobileDataIndicators(
|
||||
statusIcon, qsIcon, typeIcon, qsTypeIcon,
|
||||
mCurrentState.activityIn, mCurrentState.activityOut, dataContentDescription,
|
||||
dataContentDescriptionHtml, description, icons.isWide,
|
||||
mCurrentState.subId, /* roaming= */ false, /* showTriangle= */ true);
|
||||
mCurrentState.subId, /* roaming= */ false, /* showTriangle= */ true
|
||||
);
|
||||
callback.setMobileDataIndicators(mobileDataIndicators);
|
||||
}
|
||||
|
||||
private int getCurrentIconIdForCarrierWifi() {
|
||||
|
||||
@@ -36,6 +36,7 @@ import androidx.test.filters.SmallTest;
|
||||
import com.android.keyguard.CarrierTextController;
|
||||
import com.android.systemui.plugins.ActivityStarter;
|
||||
import com.android.systemui.statusbar.policy.NetworkController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators;
|
||||
import com.android.systemui.utils.leaks.LeakCheckedTest;
|
||||
import com.android.systemui.utils.os.FakeHandler;
|
||||
|
||||
@@ -215,10 +216,11 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest {
|
||||
|
||||
@Test // throws no Exception
|
||||
public void testSetMobileDataIndicators_invalidSim() {
|
||||
mSignalCallback.setMobileDataIndicators(
|
||||
MobileDataIndicators indicators = new MobileDataIndicators(
|
||||
mock(NetworkController.IconState.class),
|
||||
mock(NetworkController.IconState.class),
|
||||
0, 0, true, true, "", "", "", true, 0, true, true);
|
||||
mSignalCallback.setMobileDataIndicators(indicators);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -46,6 +46,7 @@ import com.android.systemui.statusbar.policy.CastController.CastDevice;
|
||||
import com.android.systemui.statusbar.policy.HotspotController;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.WifiIndicators;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -134,9 +135,11 @@ public class CastTileTest extends SysuiTestCase {
|
||||
public void testStateUnavailable_wifiDisabled() {
|
||||
NetworkController.IconState qsIcon =
|
||||
new NetworkController.IconState(false, 0, "");
|
||||
mSignalCallback.setWifiIndicators(false, mock(NetworkController.IconState.class),
|
||||
WifiIndicators indicators = new WifiIndicators(
|
||||
false, mock(NetworkController.IconState.class),
|
||||
qsIcon, false,false, "",
|
||||
false, "");
|
||||
mSignalCallback.setWifiIndicators(indicators);
|
||||
mTestableLooper.processAllMessages();
|
||||
|
||||
assertEquals(Tile.STATE_UNAVAILABLE, mCastTile.getState().state);
|
||||
@@ -146,9 +149,11 @@ public class CastTileTest extends SysuiTestCase {
|
||||
public void testStateUnavailable_wifiNotConnected() {
|
||||
NetworkController.IconState qsIcon =
|
||||
new NetworkController.IconState(false, 0, "");
|
||||
mSignalCallback.setWifiIndicators(true, mock(NetworkController.IconState.class),
|
||||
WifiIndicators indicators = new WifiIndicators(
|
||||
true, mock(NetworkController.IconState.class),
|
||||
qsIcon, false,false, "",
|
||||
false, "");
|
||||
mSignalCallback.setWifiIndicators(indicators);
|
||||
mTestableLooper.processAllMessages();
|
||||
|
||||
assertEquals(Tile.STATE_UNAVAILABLE, mCastTile.getState().state);
|
||||
@@ -157,9 +162,11 @@ public class CastTileTest extends SysuiTestCase {
|
||||
private void enableWifiAndProcessMessages() {
|
||||
NetworkController.IconState qsIcon =
|
||||
new NetworkController.IconState(true, 0, "");
|
||||
mSignalCallback.setWifiIndicators(true, mock(NetworkController.IconState.class),
|
||||
WifiIndicators indicators = new WifiIndicators(
|
||||
true, mock(NetworkController.IconState.class),
|
||||
qsIcon, false,false, "",
|
||||
false, "");
|
||||
mSignalCallback.setWifiIndicators(indicators);
|
||||
mTestableLooper.processAllMessages();
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,9 @@ import com.android.settingslib.mobile.TelephonyIcons;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.EmergencyListener;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.IconState;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.WifiIndicators;
|
||||
import com.android.systemui.tests.R;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -86,28 +88,24 @@ public class CallbackHandlerTest extends SysuiTestCase {
|
||||
boolean out = true;
|
||||
String description = "Test";
|
||||
String secondaryLabel = "Secondary label";
|
||||
mHandler.setWifiIndicators(enabled, status, qs, in, out, description, true, secondaryLabel);
|
||||
WifiIndicators indicators = new WifiIndicators(
|
||||
enabled, status, qs, in, out, description, true, secondaryLabel);
|
||||
mHandler.setWifiIndicators(indicators);
|
||||
waitForCallbacks();
|
||||
|
||||
ArgumentCaptor<Boolean> enableArg = ArgumentCaptor.forClass(Boolean.class);
|
||||
ArgumentCaptor<IconState> statusArg = ArgumentCaptor.forClass(IconState.class);
|
||||
ArgumentCaptor<IconState> qsArg = ArgumentCaptor.forClass(IconState.class);
|
||||
ArgumentCaptor<Boolean> inArg = ArgumentCaptor.forClass(Boolean.class);
|
||||
ArgumentCaptor<Boolean> outArg = ArgumentCaptor.forClass(Boolean.class);
|
||||
ArgumentCaptor<String> descArg = ArgumentCaptor.forClass(String.class);
|
||||
ArgumentCaptor<Boolean> isTransient = ArgumentCaptor.forClass(Boolean.class);
|
||||
ArgumentCaptor<String> secondary = ArgumentCaptor.forClass(String.class);
|
||||
Mockito.verify(mSignalCallback).setWifiIndicators(enableArg.capture(),
|
||||
statusArg.capture(), qsArg.capture(), inArg.capture(), outArg.capture(),
|
||||
descArg.capture(), isTransient.capture(), secondary.capture());
|
||||
assertEquals(enabled, (boolean) enableArg.getValue());
|
||||
assertEquals(status, statusArg.getValue());
|
||||
assertEquals(qs, qsArg.getValue());
|
||||
assertEquals(in, (boolean) inArg.getValue());
|
||||
assertEquals(out, (boolean) outArg.getValue());
|
||||
assertEquals(description, descArg.getValue());
|
||||
assertTrue(isTransient.getValue());
|
||||
assertEquals(secondaryLabel, secondary.getValue());
|
||||
ArgumentCaptor<WifiIndicators> indicatorArg =
|
||||
ArgumentCaptor.forClass(WifiIndicators.class);
|
||||
Mockito.verify(mSignalCallback).setWifiIndicators(indicatorArg.capture());
|
||||
WifiIndicators expected = indicatorArg.getValue();
|
||||
|
||||
assertEquals(enabled, expected.enabled);
|
||||
assertEquals(status, expected.statusIcon);
|
||||
assertEquals(qs, expected.qsIcon);
|
||||
assertEquals(in, expected.activityIn);
|
||||
assertEquals(out, expected.activityOut);
|
||||
assertEquals(description, expected.description);
|
||||
assertTrue(expected.isTransient);
|
||||
assertEquals(secondaryLabel, expected.statusLabel);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -124,37 +122,30 @@ public class CallbackHandlerTest extends SysuiTestCase {
|
||||
boolean wide = true;
|
||||
int subId = 5;
|
||||
boolean roaming = true;
|
||||
mHandler.setMobileDataIndicators(status, qs, type, qsType, in, out, typeDescription,
|
||||
MobileDataIndicators indicators = new MobileDataIndicators(
|
||||
status, qs, type, qsType, in, out, typeDescription,
|
||||
typeDescriptionHtml, description, wide, subId, roaming, true);
|
||||
mHandler.setMobileDataIndicators(indicators);
|
||||
waitForCallbacks();
|
||||
|
||||
ArgumentCaptor<IconState> statusArg = ArgumentCaptor.forClass(IconState.class);
|
||||
ArgumentCaptor<IconState> qsArg = ArgumentCaptor.forClass(IconState.class);
|
||||
ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
|
||||
ArgumentCaptor<Integer> qsTypeIconArg = ArgumentCaptor.forClass(Integer.class);
|
||||
ArgumentCaptor<Boolean> inArg = ArgumentCaptor.forClass(Boolean.class);
|
||||
ArgumentCaptor<Boolean> outArg = ArgumentCaptor.forClass(Boolean.class);
|
||||
ArgumentCaptor<CharSequence> typeContentArg = ArgumentCaptor.forClass(CharSequence.class);
|
||||
ArgumentCaptor<CharSequence> typeContentHtmlArg =
|
||||
ArgumentCaptor.forClass(CharSequence.class);
|
||||
ArgumentCaptor<CharSequence> descArg = ArgumentCaptor.forClass(CharSequence.class);
|
||||
ArgumentCaptor<Boolean> wideArg = ArgumentCaptor.forClass(Boolean.class);
|
||||
ArgumentCaptor<Integer> subIdArg = ArgumentCaptor.forClass(Integer.class);
|
||||
Mockito.verify(mSignalCallback).setMobileDataIndicators(statusArg.capture(),
|
||||
qsArg.capture(), typeIconArg.capture(), qsTypeIconArg.capture(), inArg.capture(),
|
||||
outArg.capture(), typeContentArg.capture(), typeContentHtmlArg.capture(),
|
||||
descArg.capture(), wideArg.capture(), subIdArg.capture(), eq(roaming), eq(true));
|
||||
assertEquals(status, statusArg.getValue());
|
||||
assertEquals(qs, qsArg.getValue());
|
||||
assertEquals(type, (int) typeIconArg.getValue());
|
||||
assertEquals(qsType, (int) qsTypeIconArg.getValue());
|
||||
assertEquals(in, (boolean) inArg.getValue());
|
||||
assertEquals(out, (boolean) outArg.getValue());
|
||||
assertEquals(typeDescription, typeContentArg.getValue());
|
||||
assertEquals(typeDescriptionHtml, typeContentHtmlArg.getValue());
|
||||
assertEquals(description, descArg.getValue());
|
||||
assertEquals(wide, (boolean) wideArg.getValue());
|
||||
assertEquals(subId, (int) subIdArg.getValue());
|
||||
ArgumentCaptor<MobileDataIndicators> indicatorArg =
|
||||
ArgumentCaptor.forClass(MobileDataIndicators.class);
|
||||
Mockito.verify(mSignalCallback).setMobileDataIndicators(indicatorArg.capture());
|
||||
MobileDataIndicators expected = indicatorArg.getValue();
|
||||
|
||||
assertEquals(status, expected.statusIcon);
|
||||
assertEquals(qs, expected.qsIcon);
|
||||
assertEquals(type, expected.statusType);
|
||||
assertEquals(qsType, expected.qsType);
|
||||
assertEquals(in, expected.activityIn);
|
||||
assertEquals(out, expected.activityOut);
|
||||
assertEquals(typeDescription, expected.typeContentDescription);
|
||||
assertEquals(typeDescriptionHtml, expected.typeContentDescriptionHtml);
|
||||
assertEquals(description, expected.description);
|
||||
assertEquals(wide, expected.isWide);
|
||||
assertEquals(subId, expected.subId);
|
||||
assertTrue(expected.roaming);
|
||||
assertTrue(expected.showTriangle);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
||||
@@ -23,7 +23,6 @@ import static junit.framework.Assert.assertEquals;
|
||||
import static junit.framework.Assert.assertNotNull;
|
||||
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Matchers.anyBoolean;
|
||||
import static org.mockito.Matchers.anyInt;
|
||||
import static org.mockito.Matchers.eq;
|
||||
import static org.mockito.Matchers.isA;
|
||||
@@ -76,6 +75,7 @@ import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.demomode.DemoModeController;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.IconState;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
|
||||
|
||||
import org.junit.After;
|
||||
@@ -487,28 +487,21 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
||||
|
||||
protected void verifyLastQsMobileDataIndicators(boolean visible, int icon, int typeIcon,
|
||||
boolean dataIn, boolean dataOut) {
|
||||
ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
|
||||
ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
|
||||
ArgumentCaptor<Boolean> dataInArg = ArgumentCaptor.forClass(Boolean.class);
|
||||
ArgumentCaptor<Boolean> dataOutArg = ArgumentCaptor.forClass(Boolean.class);
|
||||
ArgumentCaptor<MobileDataIndicators> indicatorsArg =
|
||||
ArgumentCaptor.forClass(MobileDataIndicators.class);
|
||||
|
||||
verify(mCallbackHandler, Mockito.atLeastOnce()).setMobileDataIndicators(
|
||||
any(),
|
||||
iconArg.capture(),
|
||||
anyInt(),
|
||||
typeIconArg.capture(), dataInArg.capture(), dataOutArg.capture(),
|
||||
any(CharSequence.class), any(CharSequence.class), any(CharSequence.class),
|
||||
anyBoolean(), anyInt(), anyBoolean(), anyBoolean());
|
||||
IconState iconState = iconArg.getValue();
|
||||
indicatorsArg.capture());
|
||||
MobileDataIndicators expected = indicatorsArg.getValue();
|
||||
int state = SignalDrawable.getState(icon, CellSignalStrength.getNumSignalStrengthLevels(),
|
||||
false);
|
||||
assertEquals("Visibility in, quick settings", visible, iconState.visible);
|
||||
assertEquals("Signal icon in, quick settings", state, iconState.icon);
|
||||
assertEquals("Data icon in, quick settings", typeIcon, (int) typeIconArg.getValue());
|
||||
assertEquals("Visibility in, quick settings", visible, expected.qsIcon.visible);
|
||||
assertEquals("Signal icon in, quick settings", state, expected.qsIcon.icon);
|
||||
assertEquals("Data icon in, quick settings", typeIcon, expected.qsType);
|
||||
assertEquals("Data direction in, in quick settings", dataIn,
|
||||
(boolean) dataInArg.getValue());
|
||||
expected.activityIn);
|
||||
assertEquals("Data direction out, in quick settings", dataOut,
|
||||
(boolean) dataOutArg.getValue());
|
||||
expected.activityOut);
|
||||
}
|
||||
|
||||
protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon) {
|
||||
@@ -522,44 +515,35 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
||||
|
||||
protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon,
|
||||
boolean roaming, boolean inet) {
|
||||
ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
|
||||
ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
|
||||
ArgumentCaptor<MobileDataIndicators> indicatorsArg =
|
||||
ArgumentCaptor.forClass(MobileDataIndicators.class);
|
||||
|
||||
// TODO: Verify all fields.
|
||||
verify(mCallbackHandler, Mockito.atLeastOnce()).setMobileDataIndicators(
|
||||
iconArg.capture(),
|
||||
any(),
|
||||
typeIconArg.capture(),
|
||||
anyInt(), anyBoolean(), anyBoolean(),
|
||||
any(CharSequence.class), any(CharSequence.class), any(),
|
||||
anyBoolean(), anyInt(), eq(roaming), anyBoolean());
|
||||
IconState iconState = iconArg.getValue();
|
||||
indicatorsArg.capture());
|
||||
MobileDataIndicators expected = indicatorsArg.getValue();
|
||||
int state = icon == -1 ? 0
|
||||
: SignalDrawable.getState(icon, CellSignalStrength.getNumSignalStrengthLevels(),
|
||||
!inet);
|
||||
assertEquals("Signal icon in status bar", state, iconState.icon);
|
||||
assertEquals("Data icon in status bar", typeIcon, (int) typeIconArg.getValue());
|
||||
assertEquals("Visibility in status bar", visible, iconState.visible);
|
||||
assertEquals("Signal icon in status bar", state, expected.statusIcon.icon);
|
||||
assertEquals("Data icon in status bar", typeIcon, expected.statusType);
|
||||
assertEquals("Visibility in status bar", visible, expected.statusIcon.visible);
|
||||
}
|
||||
|
||||
protected void verifyLastMobileDataIndicatorsForVcn(boolean visible, int level, int typeIcon,
|
||||
boolean inet) {
|
||||
ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
|
||||
ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
|
||||
ArgumentCaptor<MobileDataIndicators> indicatorsArg =
|
||||
ArgumentCaptor.forClass(MobileDataIndicators.class);
|
||||
|
||||
verify(mCallbackHandler, Mockito.atLeastOnce()).setMobileDataIndicators(
|
||||
iconArg.capture(),
|
||||
any(),
|
||||
typeIconArg.capture(),
|
||||
anyInt(), anyBoolean(), anyBoolean(),
|
||||
any(CharSequence.class), any(CharSequence.class), any(),
|
||||
anyBoolean(), anyInt(), anyBoolean(), anyBoolean());
|
||||
IconState iconState = iconArg.getValue();
|
||||
indicatorsArg.capture());
|
||||
|
||||
MobileDataIndicators expected = indicatorsArg.getValue();
|
||||
int state = SignalDrawable.getState(
|
||||
level, CellSignalStrength.getNumSignalStrengthLevels(), !inet);
|
||||
assertEquals("Signal icon in status bar", state, iconState.icon);
|
||||
assertEquals("Data icon in status bar", typeIcon, (int) typeIconArg.getValue());
|
||||
assertEquals("Visibility in status bar", visible, iconState.visible);
|
||||
assertEquals("Signal icon in status bar", state, expected.statusIcon.icon);
|
||||
assertEquals("Data icon in status bar", typeIcon, expected.statusType);
|
||||
assertEquals("Visibility in status bar", visible, expected.statusIcon.visible);
|
||||
}
|
||||
|
||||
protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon,
|
||||
@@ -580,6 +564,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
||||
boolean qsVisible, int qsIcon, int qsTypeIcon, boolean dataIn, boolean dataOut,
|
||||
boolean cutOut, CharSequence typeContentDescription,
|
||||
CharSequence typeContentDescriptionHtml) {
|
||||
ArgumentCaptor<MobileDataIndicators> indicatorsArg =
|
||||
ArgumentCaptor.forClass(MobileDataIndicators.class);
|
||||
ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
|
||||
ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
|
||||
ArgumentCaptor<IconState> qsIconArg = ArgumentCaptor.forClass(IconState.class);
|
||||
@@ -592,17 +578,9 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
||||
ArgumentCaptor.forClass(CharSequence.class);
|
||||
|
||||
verify(mCallbackHandler, Mockito.atLeastOnce()).setMobileDataIndicators(
|
||||
iconArg.capture(),
|
||||
qsIconArg.capture(),
|
||||
typeIconArg.capture(),
|
||||
qsTypeIconArg.capture(),
|
||||
dataInArg.capture(),
|
||||
dataOutArg.capture(),
|
||||
typeContentDescriptionArg.capture(),
|
||||
typeContentDescriptionHtmlArg.capture(),
|
||||
any(), anyBoolean(), anyInt(), anyBoolean(), anyBoolean());
|
||||
indicatorsArg.capture());
|
||||
|
||||
IconState iconState = iconArg.getValue();
|
||||
MobileDataIndicators expected = indicatorsArg.getValue();
|
||||
|
||||
int numSignalStrengthBins = CellSignalStrength.getNumSignalStrengthLevels();
|
||||
if (mMobileSignalController.mInflateSignalStrengths) {
|
||||
@@ -610,29 +588,28 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
||||
icon++;
|
||||
}
|
||||
int state = SignalDrawable.getState(icon, numSignalStrengthBins, cutOut);
|
||||
assertEquals("Data icon in status bar", typeIcon, (int) typeIconArg.getValue());
|
||||
assertEquals("Signal icon in status bar", state, iconState.icon);
|
||||
assertEquals("Visibility in status bar", visible, iconState.visible);
|
||||
assertEquals("Data icon in status bar", typeIcon, expected.statusType);
|
||||
assertEquals("Signal icon in status bar", state, expected.statusIcon.icon);
|
||||
assertEquals("Visibility in status bar", visible, expected.statusIcon.visible);
|
||||
|
||||
iconState = qsIconArg.getValue();
|
||||
if (visible) {
|
||||
assertEquals("Visibility in quick settings", qsVisible, iconState.visible);
|
||||
assertEquals("Signal icon in quick settings", state, iconState.icon);
|
||||
assertEquals("Visibility in quick settings", qsVisible, expected.qsIcon.visible);
|
||||
assertEquals("Signal icon in quick settings", state, expected.qsIcon.icon);
|
||||
} else {
|
||||
assertEquals("Cellular is not default", null, iconState);
|
||||
assertEquals("Cellular is not default", null, expected.qsIcon);
|
||||
}
|
||||
assertEquals("Data icon in quick settings", qsTypeIcon, (int) qsTypeIconArg.getValue());
|
||||
assertEquals("Data icon in quick settings", qsTypeIcon, expected.qsType);
|
||||
assertEquals("Data direction in in quick settings", dataIn,
|
||||
(boolean) dataInArg.getValue());
|
||||
expected.activityIn);
|
||||
assertEquals("Data direction out in quick settings", dataOut,
|
||||
(boolean) dataOutArg.getValue());
|
||||
expected.activityOut);
|
||||
if (typeContentDescription != null) { // Only check if it was provided
|
||||
assertEquals("Type content description", typeContentDescription,
|
||||
typeContentDescriptionArg.getValue());
|
||||
expected.typeContentDescription);
|
||||
}
|
||||
if (typeContentDescriptionHtml != null) { // Only check if it was provided
|
||||
assertEquals("Type content description (html)", typeContentDescriptionHtml,
|
||||
typeContentDescriptionHtmlArg.getValue());
|
||||
expected.typeContentDescriptionHtml);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.android.systemui.statusbar.policy;
|
||||
import static junit.framework.Assert.assertEquals;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Matchers.anyBoolean;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -21,7 +20,7 @@ import android.testing.AndroidTestingRunner;
|
||||
import android.testing.TestableLooper.RunWithLooper;
|
||||
|
||||
import com.android.settingslib.mobile.TelephonyIcons;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.IconState;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.WifiIndicators;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -316,44 +315,42 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
|
||||
}
|
||||
|
||||
protected void verifyLastQsDataDirection(boolean in, boolean out) {
|
||||
ArgumentCaptor<Boolean> inArg = ArgumentCaptor.forClass(Boolean.class);
|
||||
ArgumentCaptor<Boolean> outArg = ArgumentCaptor.forClass(Boolean.class);
|
||||
ArgumentCaptor<WifiIndicators> indicatorsArg =
|
||||
ArgumentCaptor.forClass(WifiIndicators.class);
|
||||
|
||||
Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setWifiIndicators(
|
||||
anyBoolean(), any(), any(), inArg.capture(), outArg.capture(), any(), anyBoolean(),
|
||||
any());
|
||||
assertEquals("WiFi data in, in quick settings", in, (boolean) inArg.getValue());
|
||||
assertEquals("WiFi data out, in quick settings", out, (boolean) outArg.getValue());
|
||||
indicatorsArg.capture());
|
||||
WifiIndicators expected = indicatorsArg.getValue();
|
||||
assertEquals("WiFi data in, in quick settings", in, expected.activityIn);
|
||||
assertEquals("WiFi data out, in quick settings", out, expected.activityOut);
|
||||
}
|
||||
|
||||
protected void verifyLastQsWifiIcon(boolean enabled, boolean connected, int icon,
|
||||
String description) {
|
||||
ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
|
||||
ArgumentCaptor<Boolean> enabledArg = ArgumentCaptor.forClass(Boolean.class);
|
||||
ArgumentCaptor<String> descArg = ArgumentCaptor.forClass(String.class);
|
||||
ArgumentCaptor<WifiIndicators> indicatorsArg =
|
||||
ArgumentCaptor.forClass(WifiIndicators.class);
|
||||
|
||||
Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setWifiIndicators(
|
||||
enabledArg.capture(), any(), iconArg.capture(), anyBoolean(),
|
||||
anyBoolean(), descArg.capture(), anyBoolean(), any());
|
||||
IconState iconState = iconArg.getValue();
|
||||
assertEquals("WiFi enabled, in quick settings", enabled, (boolean) enabledArg.getValue());
|
||||
assertEquals("WiFI desc (ssid), in quick settings", description, descArg.getValue());
|
||||
indicatorsArg.capture());
|
||||
WifiIndicators expected = indicatorsArg.getValue();
|
||||
assertEquals("WiFi enabled, in quick settings", enabled, expected.enabled);
|
||||
assertEquals("WiFI desc (ssid), in quick settings", description, expected.description);
|
||||
if (enabled && connected) {
|
||||
assertEquals("WiFi connected, in quick settings", connected, iconState.visible);
|
||||
assertEquals("WiFi signal, in quick settings", icon, iconState.icon);
|
||||
assertEquals("WiFi connected, in quick settings", connected, expected.qsIcon.visible);
|
||||
assertEquals("WiFi signal, in quick settings", icon, expected.qsIcon.icon);
|
||||
} else {
|
||||
assertEquals("WiFi is not default", null, iconState);
|
||||
assertEquals("WiFi is not default", null, expected.qsIcon);
|
||||
}
|
||||
}
|
||||
|
||||
protected void verifyLastWifiIcon(boolean visible, int icon) {
|
||||
ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
|
||||
ArgumentCaptor<WifiIndicators> indicatorsArg =
|
||||
ArgumentCaptor.forClass(WifiIndicators.class);
|
||||
|
||||
Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setWifiIndicators(
|
||||
anyBoolean(), iconArg.capture(), any(), anyBoolean(), anyBoolean(),
|
||||
any(), anyBoolean(), any());
|
||||
IconState iconState = iconArg.getValue();
|
||||
assertEquals("WiFi visible, in status bar", visible, iconState.visible);
|
||||
assertEquals("WiFi signal, in status bar", icon, iconState.icon);
|
||||
indicatorsArg.capture());
|
||||
WifiIndicators expected = indicatorsArg.getValue();
|
||||
assertEquals("WiFi visible, in status bar", visible, expected.statusIcon.visible);
|
||||
assertEquals("WiFi signal, in status bar", icon, expected.statusIcon.icon);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user