Update the WiFiInfo in the InternetTile when qsIcon is null
Previously when MobileDataIndicators.qsIcon is null, the WiFiInfo cached in the InternetTile is not correctly updated, so whenever APM is enabled, the stale WiFiInfo will be used to determine the Icon of the InternetTile. Bug: 266262663 Test: Manual test, atest -c com.android.systemui.qs.tiles.InternetTileTest Change-Id: I68955157236d150413e14b60b946b866a370883d
This commit is contained in:
@@ -255,17 +255,19 @@ public class InternetTile extends QSTileImpl<SignalState> {
|
||||
Log.d(TAG, "setWifiIndicators: " + indicators);
|
||||
}
|
||||
mWifiInfo.mEnabled = indicators.enabled;
|
||||
if (indicators.qsIcon == null) {
|
||||
return;
|
||||
}
|
||||
mWifiInfo.mConnected = indicators.qsIcon.visible;
|
||||
mWifiInfo.mWifiSignalIconId = indicators.qsIcon.icon;
|
||||
mWifiInfo.mWifiSignalContentDescription = indicators.qsIcon.contentDescription;
|
||||
mWifiInfo.mEnabled = indicators.enabled;
|
||||
mWifiInfo.mSsid = indicators.description;
|
||||
mWifiInfo.mIsTransient = indicators.isTransient;
|
||||
mWifiInfo.mStatusLabel = indicators.statusLabel;
|
||||
refreshState(mWifiInfo);
|
||||
if (indicators.qsIcon != null) {
|
||||
mWifiInfo.mConnected = indicators.qsIcon.visible;
|
||||
mWifiInfo.mWifiSignalIconId = indicators.qsIcon.icon;
|
||||
mWifiInfo.mWifiSignalContentDescription = indicators.qsIcon.contentDescription;
|
||||
refreshState(mWifiInfo);
|
||||
} else {
|
||||
mWifiInfo.mConnected = false;
|
||||
mWifiInfo.mWifiSignalIconId = 0;
|
||||
mWifiInfo.mWifiSignalContentDescription = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -37,10 +37,12 @@ import com.android.systemui.plugins.ActivityStarter;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.qs.QSTileHost;
|
||||
import com.android.systemui.qs.logging.QSLogger;
|
||||
import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
import com.android.systemui.qs.tiles.dialog.InternetDialogFactory;
|
||||
import com.android.systemui.statusbar.connectivity.AccessPointController;
|
||||
import com.android.systemui.statusbar.connectivity.IconState;
|
||||
import com.android.systemui.statusbar.connectivity.NetworkController;
|
||||
import com.android.systemui.statusbar.connectivity.WifiIndicators;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -135,4 +137,24 @@ public class InternetTileTest extends SysuiTestCase {
|
||||
assertThat(mTile.getState().secondaryLabel)
|
||||
.isNotEqualTo(mContext.getString(R.string.status_bar_airplane));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setIsAirplaneMode_APM_enabled_after_wifi_disconnected() {
|
||||
WifiIndicators wifiIndicators = new WifiIndicators(
|
||||
/* enabled= */ true,
|
||||
/* statusIcon= */ null,
|
||||
/* qsIcon= */ null,
|
||||
/* activityIn= */ false,
|
||||
/* activityOut= */ false,
|
||||
/* description= */ null,
|
||||
/* isTransient= */ false,
|
||||
/* statusLabel= */ null
|
||||
);
|
||||
mTile.mSignalCallback.setWifiIndicators(wifiIndicators);
|
||||
IconState state = new IconState(true, 0, "");
|
||||
mTile.mSignalCallback.setIsAirplaneMode(state);
|
||||
mTestableLooper.processAllMessages();
|
||||
assertThat(mTile.getState().icon).isEqualTo(
|
||||
QSTileImpl.ResourceIcon.get(R.drawable.ic_qs_no_internet_unavailable));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user