diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java index 28dd986c931bd..52dd769506dea 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java @@ -259,17 +259,19 @@ public class InternetTile extends QSTileImpl { 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 diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/InternetTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/InternetTileTest.java index 80c39cf9e4cd1..addca9d28d1ab 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/InternetTileTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/InternetTileTest.java @@ -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)); + } }