From 1d0e1b6d64e726f3c91b19aab61ca0808f01a134 Mon Sep 17 00:00:00 2001 From: Shawn Lee Date: Fri, 26 May 2023 17:45:40 -0700 Subject: [PATCH] Set CarrierTextManager.airplaneMode to true when wifi enabled while in airplane mode ShadeCarrierGroup was treating airplane mode as disabled when both airplane mode and wifi were enabled. Bug: 276519370 Test: verified ShadeCarrierGroup behavior when airplane mode and wifi are enabled/disabled Change-Id: Id5b1f4bcd7d86a39a228be84597dddd59b28df54 --- .../carrier/ShadeCarrierGroupController.java | 17 ++-- .../ShadeCarrierGroupControllerTest.java | 79 ++++++++++++------- 2 files changed, 61 insertions(+), 35 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/shade/carrier/ShadeCarrierGroupController.java b/packages/SystemUI/src/com/android/systemui/shade/carrier/ShadeCarrierGroupController.java index fc1e87ad3e45e..ad49b267c6ac9 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/carrier/ShadeCarrierGroupController.java +++ b/packages/SystemUI/src/com/android/systemui/shade/carrier/ShadeCarrierGroupController.java @@ -198,6 +198,11 @@ public class ShadeCarrierGroupController { return mSlotIndexResolver.getSlotIndex(subscriptionId); } + @VisibleForTesting + protected int getShadeCarrierVisibility(int index) { + return mCarrierGroups[index].getVisibility(); + } + /** * Sets a {@link OnSingleCarrierChangedListener}. * @@ -307,11 +312,13 @@ public class ShadeCarrierGroupController { + info.subscriptionIds[i]); continue; } - mInfos[slot] = mInfos[slot].changeVisibility(true); - slotSeen[slot] = true; - mCarrierGroups[slot].setCarrierText( - info.listOfCarriers[i].toString().trim()); - mCarrierGroups[slot].setVisibility(View.VISIBLE); + String carrierText = info.listOfCarriers[i].toString().trim(); + if (!TextUtils.isEmpty(carrierText)) { + mInfos[slot] = mInfos[slot].changeVisibility(true); + slotSeen[slot] = true; + mCarrierGroups[slot].setCarrierText(carrierText); + mCarrierGroups[slot].setVisibility(View.VISIBLE); + } } for (int i = 0; i < SIM_SLOTS; i++) { if (!slotSeen[i]) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/carrier/ShadeCarrierGroupControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/carrier/ShadeCarrierGroupControllerTest.java index 57ae621f01ef9..31bfa3fdf8cba 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/carrier/ShadeCarrierGroupControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/carrier/ShadeCarrierGroupControllerTest.java @@ -66,6 +66,11 @@ import org.mockito.MockitoAnnotations; @SmallTest public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { + private static final String SINGLE_CARRIER_TEXT = "singleCarrierText"; + private static final String MULTI_CARRIER_TEXT = "multiCarrierText"; + private static final String FIRST_CARRIER_NAME = "carrier1"; + private static final String SECOND_CARRIER_NAME = "carrier2"; + private ShadeCarrierGroupController mShadeCarrierGroupController; private SignalCallback mSignalCallback; private CarrierTextManager.CarrierTextCallback mCallback; @@ -148,8 +153,8 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { // listOfCarriers length 1, subscriptionIds length 1, anySims false CarrierTextManager.CarrierTextCallbackInfo c1 = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{""}, + SINGLE_CARRIER_TEXT, + new CharSequence[]{FIRST_CARRIER_NAME}, false, new int[]{0}); mCallback.updateCarrierInfo(c1); @@ -157,8 +162,8 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { // listOfCarriers length 1, subscriptionIds length 1, anySims true CarrierTextManager.CarrierTextCallbackInfo c2 = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{""}, + SINGLE_CARRIER_TEXT, + new CharSequence[]{FIRST_CARRIER_NAME}, true, new int[]{0}); mCallback.updateCarrierInfo(c2); @@ -166,8 +171,8 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { // listOfCarriers length 2, subscriptionIds length 2, anySims false CarrierTextManager.CarrierTextCallbackInfo c3 = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{"", ""}, + MULTI_CARRIER_TEXT, + new CharSequence[]{FIRST_CARRIER_NAME, SECOND_CARRIER_NAME}, false, new int[]{0, 1}); mCallback.updateCarrierInfo(c3); @@ -175,8 +180,8 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { // listOfCarriers length 2, subscriptionIds length 2, anySims true CarrierTextManager.CarrierTextCallbackInfo c4 = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{"", ""}, + MULTI_CARRIER_TEXT, + new CharSequence[]{FIRST_CARRIER_NAME, SECOND_CARRIER_NAME}, true, new int[]{0, 1}); mCallback.updateCarrierInfo(c4); @@ -189,8 +194,8 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { // listOfCarriers length 2, subscriptionIds length 1, anySims false CarrierTextManager.CarrierTextCallbackInfo c1 = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{"", ""}, + MULTI_CARRIER_TEXT, + new CharSequence[]{FIRST_CARRIER_NAME, SECOND_CARRIER_NAME}, false, new int[]{0}); mCallback.updateCarrierInfo(c1); @@ -198,8 +203,8 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { // listOfCarriers length 2, subscriptionIds length 1, anySims true CarrierTextManager.CarrierTextCallbackInfo c2 = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{"", ""}, + MULTI_CARRIER_TEXT, + new CharSequence[]{FIRST_CARRIER_NAME, SECOND_CARRIER_NAME}, true, new int[]{0}); mCallback.updateCarrierInfo(c2); @@ -207,8 +212,8 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { // listOfCarriers length 1, subscriptionIds length 2, anySims false CarrierTextManager.CarrierTextCallbackInfo c3 = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{""}, + SINGLE_CARRIER_TEXT, + new CharSequence[]{FIRST_CARRIER_NAME}, false, new int[]{0, 1}); mCallback.updateCarrierInfo(c3); @@ -216,8 +221,8 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { // listOfCarriers length 1, subscriptionIds length 2, anySims true CarrierTextManager.CarrierTextCallbackInfo c4 = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{""}, + SINGLE_CARRIER_TEXT, + new CharSequence[]{FIRST_CARRIER_NAME}, true, new int[]{0, 1}); mCallback.updateCarrierInfo(c4); @@ -230,8 +235,8 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { CarrierTextManager.CarrierTextCallbackInfo c4 = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{"", ""}, + MULTI_CARRIER_TEXT, + new CharSequence[]{FIRST_CARRIER_NAME, SECOND_CARRIER_NAME}, true, new int[]{0, 1}); mCallback.updateCarrierInfo(c4); @@ -263,6 +268,20 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { assertEquals(View.GONE, mShadeCarrierGroup.getNoSimTextView().getVisibility()); } + @Test + public void testVisibleView_airplaneMode_WFCOn() { + CarrierTextManager.CarrierTextCallbackInfo + info = new CarrierTextManager.CarrierTextCallbackInfo( + "", + new CharSequence[]{FIRST_CARRIER_NAME, ""}, + true, + new int[]{0, 1}, + false /* airplaneMode */); + mCallback.updateCarrierInfo(info); + mTestableLooper.processAllMessages(); + assertEquals(View.VISIBLE, mShadeCarrierGroupController.getShadeCarrierVisibility(0)); + } + @Test public void testListenerNotCalledOnRegistreation() { mShadeCarrierGroupController @@ -276,8 +295,8 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { // Only one element in the info CarrierTextManager.CarrierTextCallbackInfo info = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{""}, + SINGLE_CARRIER_TEXT, + new CharSequence[]{SINGLE_CARRIER_TEXT}, true, new int[]{0}, false /* airplaneMode */); @@ -295,8 +314,8 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { // More than one element in the info CarrierTextManager.CarrierTextCallbackInfo info = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{"", ""}, + MULTI_CARRIER_TEXT, + new CharSequence[]{FIRST_CARRIER_NAME, SECOND_CARRIER_NAME}, true, new int[]{0, 1}, false /* airplaneMode */); @@ -313,16 +332,16 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { public void testSingleMultiCarrierSwitch() { CarrierTextManager.CarrierTextCallbackInfo singleCarrierInfo = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{""}, + SINGLE_CARRIER_TEXT, + new CharSequence[]{FIRST_CARRIER_NAME}, true, new int[]{0}, false /* airplaneMode */); CarrierTextManager.CarrierTextCallbackInfo multiCarrierInfo = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{"", ""}, + MULTI_CARRIER_TEXT, + new CharSequence[]{FIRST_CARRIER_NAME, SECOND_CARRIER_NAME}, true, new int[]{0, 1}, false /* airplaneMode */); @@ -347,8 +366,8 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { public void testNoCallbackIfSingleCarrierDoesntChange() { CarrierTextManager.CarrierTextCallbackInfo singleCarrierInfo = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{""}, + SINGLE_CARRIER_TEXT, + new CharSequence[]{FIRST_CARRIER_NAME}, true, new int[]{0}, false /* airplaneMode */); @@ -369,8 +388,8 @@ public class ShadeCarrierGroupControllerTest extends LeakCheckedTest { public void testNoCallbackIfMultiCarrierDoesntChange() { CarrierTextManager.CarrierTextCallbackInfo multiCarrierInfo = new CarrierTextManager.CarrierTextCallbackInfo( - "", - new CharSequence[]{"", ""}, + MULTI_CARRIER_TEXT, + new CharSequence[]{FIRST_CARRIER_NAME, SECOND_CARRIER_NAME}, true, new int[]{0, 1}, false /* airplaneMode */);