Merge "Don't show no sim when a sim has been detected." into oc-mr1-dev
am: dddbb2261c
Change-Id: Ic6154e7b2e10d8b538ca466f3cd38ded953a3dbd
This commit is contained in:
@@ -263,7 +263,7 @@ public class CellularTile extends QSTileImpl<SignalState> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNoSims(boolean show) {
|
||||
public void setNoSims(boolean show, boolean simDetected) {
|
||||
mInfo.noSim = show;
|
||||
if (mInfo.noSim) {
|
||||
// Make sure signal gets cleared out when no sims.
|
||||
|
||||
@@ -22,8 +22,6 @@ import android.content.res.ColorStateList;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.Animatable;
|
||||
import android.graphics.drawable.AnimatedVectorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
import android.util.ArraySet;
|
||||
@@ -53,6 +51,7 @@ import com.android.systemui.tuner.TunerService.Tunable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
// Intimately tied to the design of res/layout/signal_cluster_view.xml
|
||||
public class SignalClusterView extends LinearLayout implements NetworkControllerImpl.SignalCallback,
|
||||
@@ -73,6 +72,7 @@ public class SignalClusterView extends LinearLayout implements NetworkController
|
||||
|
||||
private boolean mNoSimsVisible = false;
|
||||
private boolean mVpnVisible = false;
|
||||
private boolean mSimDetected;
|
||||
private int mVpnIconId = 0;
|
||||
private int mLastVpnIconId = -1;
|
||||
private boolean mEthernetVisible = false;
|
||||
@@ -327,8 +327,9 @@ public class SignalClusterView extends LinearLayout implements NetworkController
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNoSims(boolean show) {
|
||||
public void setNoSims(boolean show, boolean simDetected) {
|
||||
mNoSimsVisible = show && !mBlockMobile;
|
||||
mSimDetected = simDetected;
|
||||
apply();
|
||||
}
|
||||
|
||||
@@ -548,6 +549,23 @@ public class SignalClusterView extends LinearLayout implements NetworkController
|
||||
if (mNoSimsVisible) {
|
||||
mIconLogger.onIconShown(SLOT_MOBILE);
|
||||
mNoSimsCombo.setVisibility(View.VISIBLE);
|
||||
if (!Objects.equals(mSimDetected, mNoSimsCombo.getTag())) {
|
||||
mNoSimsCombo.setTag(mSimDetected);
|
||||
if (mSimDetected) {
|
||||
SignalDrawable d = new SignalDrawable(mNoSims.getContext());
|
||||
d.setDarkIntensity(0);
|
||||
mNoSims.setImageDrawable(d);
|
||||
mNoSims.setImageLevel(SignalDrawable.getEmptyState(4));
|
||||
|
||||
SignalDrawable dark = new SignalDrawable(mNoSims.getContext());
|
||||
dark.setDarkIntensity(1);
|
||||
mNoSimsDark.setImageDrawable(dark);
|
||||
mNoSimsDark.setImageLevel(SignalDrawable.getEmptyState(4));
|
||||
} else {
|
||||
mNoSims.setImageResource(R.drawable.stat_sys_no_sims);
|
||||
mNoSimsDark.setImageResource(R.drawable.stat_sys_no_sims);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
mIconLogger.onIconHidden(SLOT_MOBILE);
|
||||
mNoSimsCombo.setVisibility(View.GONE);
|
||||
|
||||
@@ -71,7 +71,7 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa
|
||||
break;
|
||||
case MSG_NO_SIM_VISIBLE_CHANGED:
|
||||
for (SignalCallback signalCluster : mSignalCallbacks) {
|
||||
signalCluster.setNoSims(msg.arg1 != 0);
|
||||
signalCluster.setNoSims(msg.arg1 != 0, msg.arg2 != 0);
|
||||
}
|
||||
break;
|
||||
case MSG_ETHERNET_CHANGED:
|
||||
@@ -144,8 +144,8 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNoSims(boolean show) {
|
||||
obtainMessage(MSG_NO_SIM_VISIBLE_CHANGED, show ? 1 : 0, 0).sendToTarget();
|
||||
public void setNoSims(boolean show, boolean simDetected) {
|
||||
obtainMessage(MSG_NO_SIM_VISIBLE_CHANGED, show ? 1 : 0, simDetected ? 1 : 0).sendToTarget();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -52,7 +52,7 @@ public interface NetworkController extends CallbackController<SignalCallback>, D
|
||||
int qsType, boolean activityIn, boolean activityOut, String typeContentDescription,
|
||||
String description, boolean isWide, int subId, boolean roaming) {}
|
||||
default void setSubs(List<SubscriptionInfo> subs) {}
|
||||
default void setNoSims(boolean show) {}
|
||||
default void setNoSims(boolean show, boolean simDetected) {}
|
||||
|
||||
default void setEthernetIndicators(IconState icon) {}
|
||||
|
||||
|
||||
@@ -58,10 +58,8 @@ import java.util.ArrayList;
|
||||
import java.util.BitSet;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
|
||||
|
||||
@@ -116,7 +114,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
|
||||
// States that don't belong to a subcontroller.
|
||||
private boolean mAirplaneMode = false;
|
||||
private boolean mHasNoSims;
|
||||
private boolean mHasNoSubs;
|
||||
private Locale mLocale = null;
|
||||
// This list holds our ordering.
|
||||
private List<SubscriptionInfo> mCurrentSubscriptions = new ArrayList<>();
|
||||
@@ -140,6 +138,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
@VisibleForTesting
|
||||
ServiceState mLastServiceState;
|
||||
private boolean mUserSetup;
|
||||
private boolean mSimDetected;
|
||||
|
||||
/**
|
||||
* Construct this controller object and register for updates.
|
||||
@@ -363,7 +362,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
cb.setSubs(mCurrentSubscriptions);
|
||||
cb.setIsAirplaneMode(new IconState(mAirplaneMode,
|
||||
TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext));
|
||||
cb.setNoSims(mHasNoSims);
|
||||
cb.setNoSims(mHasNoSubs, mSimDetected);
|
||||
mWifiSignalController.notifyListeners(cb);
|
||||
mEthernetSignalController.notifyListeners(cb);
|
||||
for (int i = 0; i < mMobileSignalControllers.size(); i++) {
|
||||
@@ -498,13 +497,27 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
|
||||
@VisibleForTesting
|
||||
protected void updateNoSims() {
|
||||
boolean hasNoSims = mHasMobileDataFeature && mMobileSignalControllers.size() == 0;
|
||||
if (hasNoSims != mHasNoSims) {
|
||||
mHasNoSims = hasNoSims;
|
||||
mCallbackHandler.setNoSims(mHasNoSims);
|
||||
boolean hasNoSubs = mHasMobileDataFeature && mMobileSignalControllers.size() == 0;
|
||||
boolean simDetected = hasAnySim();
|
||||
if (hasNoSubs != mHasNoSubs || simDetected != mSimDetected) {
|
||||
mHasNoSubs = hasNoSubs;
|
||||
mSimDetected = simDetected;
|
||||
mCallbackHandler.setNoSims(mHasNoSubs, mSimDetected);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean hasAnySim() {
|
||||
int simCount = mPhone.getSimCount();
|
||||
for (int i = 0; i < simCount; i++) {
|
||||
int state = mPhone.getSimState(i);
|
||||
if (state != TelephonyManager.SIM_STATE_ABSENT
|
||||
&& state != TelephonyManager.SIM_STATE_UNKNOWN) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void setCurrentSubscriptions(List<SubscriptionInfo> subscriptions) {
|
||||
Collections.sort(subscriptions, new Comparator<SubscriptionInfo>() {
|
||||
@@ -631,7 +644,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
private void notifyListeners() {
|
||||
mCallbackHandler.setIsAirplaneMode(new IconState(mAirplaneMode,
|
||||
TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext));
|
||||
mCallbackHandler.setNoSims(mHasNoSims);
|
||||
mCallbackHandler.setNoSims(mHasNoSubs, mSimDetected);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -822,8 +835,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
}
|
||||
String nosim = args.getString("nosim");
|
||||
if (nosim != null) {
|
||||
mHasNoSims = nosim.equals("show");
|
||||
mCallbackHandler.setNoSims(mHasNoSims);
|
||||
mHasNoSubs = nosim.equals("show");
|
||||
mCallbackHandler.setNoSims(mHasNoSubs, mSimDetected);
|
||||
}
|
||||
String mobile = args.getString("mobile");
|
||||
if (mobile != null) {
|
||||
|
||||
@@ -161,12 +161,11 @@ public class CallbackHandlerTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void testSignalCallback_setNoSims() {
|
||||
boolean noSims = true;
|
||||
mHandler.setNoSims(noSims);
|
||||
boolean simDetected = false;
|
||||
mHandler.setNoSims(noSims, simDetected);
|
||||
waitForCallbacks();
|
||||
|
||||
ArgumentCaptor<Boolean> noSimsArg = ArgumentCaptor.forClass(Boolean.class);
|
||||
Mockito.verify(mSignalCallback).setNoSims(noSimsArg.capture());
|
||||
assertEquals(noSims, (boolean) noSimsArg.getValue());
|
||||
Mockito.verify(mSignalCallback).setNoSims(eq(noSims), eq(simDetected));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -46,8 +46,6 @@ import org.junit.rules.TestWatcher;
|
||||
import org.junit.runner.Description;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.invocation.InvocationOnMock;
|
||||
import org.mockito.stubbing.Answer;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
@@ -292,10 +290,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
||||
}
|
||||
|
||||
protected void verifyHasNoSims(boolean hasNoSimsVisible) {
|
||||
ArgumentCaptor<Boolean> hasNoSimsArg = ArgumentCaptor.forClass(Boolean.class);
|
||||
|
||||
Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setNoSims(hasNoSimsArg.capture());
|
||||
assertEquals("No sims", hasNoSimsVisible, (boolean) hasNoSimsArg.getValue());
|
||||
Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setNoSims(
|
||||
eq(hasNoSimsVisible), eq(false));
|
||||
}
|
||||
|
||||
protected void verifyLastQsMobileDataIndicators(boolean visible, int icon, int typeIcon,
|
||||
|
||||
Reference in New Issue
Block a user