Loading packages/SystemUI/src/com/android/systemui/qs/carrier/QSCarrierGroupController.java +1 −1 Original line number Diff line number Diff line Loading @@ -243,7 +243,7 @@ public class QSCarrierGroupController { mActivityStarter.postStartActivityDismissingKeyguard( new Intent(Settings.ACTION_WIRELESS_SETTINGS), 0); }; view.setOnClickListener(onClickListener); mNoSimTextView = view.getNoSimTextView(); mNoSimTextView.setOnClickListener(onClickListener); mMainHandler = new H(mainLooper, this::handleUpdateCarrierInfo, this::handleUpdateState); Loading packages/SystemUI/tests/src/com/android/systemui/qs/carrier/QSCarrierGroupControllerTest.java +70 −1 Original line number Diff line number Diff line Loading @@ -16,19 +16,26 @@ package com.android.systemui.qs.carrier; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import android.content.Context; import android.content.Intent; import android.os.Handler; import android.provider.Settings; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.view.View; Loading @@ -50,6 +57,7 @@ import com.android.systemui.utils.os.FakeHandler; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; Loading Loading @@ -85,6 +93,7 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest { private QSCarrierGroupController.OnSingleCarrierChangedListener mOnSingleCarrierChangedListener; private FakeSlotIndexResolver mSlotIndexResolver; private ClickListenerTextView mNoCarrierTextView; @Before public void setup() throws Exception { Loading @@ -108,7 +117,8 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest { .when(mCarrierTextManager) .setListening(any(CarrierTextManager.CarrierTextCallback.class)); when(mQSCarrierGroup.getNoSimTextView()).thenReturn(new TextView(mContext)); mNoCarrierTextView = new ClickListenerTextView(mContext); when(mQSCarrierGroup.getNoSimTextView()).thenReturn(mNoCarrierTextView); when(mQSCarrierGroup.getCarrier1View()).thenReturn(mQSCarrier1); when(mQSCarrierGroup.getCarrier2View()).thenReturn(mQSCarrier2); when(mQSCarrierGroup.getCarrier3View()).thenReturn(mQSCarrier3); Loading Loading @@ -376,6 +386,47 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest { verify(mOnSingleCarrierChangedListener, never()).onSingleCarrierChanged(anyBoolean()); } @Test public void testOnlyInternalViewsHaveClickableListener() { ArgumentCaptor<View.OnClickListener> captor = ArgumentCaptor.forClass(View.OnClickListener.class); verify(mQSCarrier1).setOnClickListener(captor.capture()); verify(mQSCarrier2).setOnClickListener(captor.getValue()); verify(mQSCarrier3).setOnClickListener(captor.getValue()); assertThat(mNoCarrierTextView.getOnClickListener()).isSameInstanceAs(captor.getValue()); verify(mQSCarrierGroup, never()).setOnClickListener(any()); } @Test public void testOnClickListenerDoesntStartActivityIfViewNotVisible() { ArgumentCaptor<View.OnClickListener> captor = ArgumentCaptor.forClass(View.OnClickListener.class); verify(mQSCarrier1).setOnClickListener(captor.capture()); when(mQSCarrier1.isVisibleToUser()).thenReturn(false); captor.getValue().onClick(mQSCarrier1); verifyZeroInteractions(mActivityStarter); } @Test public void testOnClickListenerLaunchesActivityIfViewVisible() { ArgumentCaptor<View.OnClickListener> listenerCaptor = ArgumentCaptor.forClass(View.OnClickListener.class); ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class); verify(mQSCarrier1).setOnClickListener(listenerCaptor.capture()); when(mQSCarrier1.isVisibleToUser()).thenReturn(true); listenerCaptor.getValue().onClick(mQSCarrier1); verify(mActivityStarter) .postStartActivityDismissingKeyguard(intentCaptor.capture(), anyInt()); assertThat(intentCaptor.getValue().getAction()) .isEqualTo(Settings.ACTION_WIRELESS_SETTINGS); } private class FakeSlotIndexResolver implements QSCarrierGroupController.SlotIndexResolver { public boolean overrideInvalid; Loading @@ -384,4 +435,22 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest { return overrideInvalid ? -1 : subscriptionId; } } private class ClickListenerTextView extends TextView { View.OnClickListener mListener = null; ClickListenerTextView(Context context) { super(context); } @Override public void setOnClickListener(OnClickListener l) { super.setOnClickListener(l); mListener = l; } View.OnClickListener getOnClickListener() { return mListener; } } } Loading
packages/SystemUI/src/com/android/systemui/qs/carrier/QSCarrierGroupController.java +1 −1 Original line number Diff line number Diff line Loading @@ -243,7 +243,7 @@ public class QSCarrierGroupController { mActivityStarter.postStartActivityDismissingKeyguard( new Intent(Settings.ACTION_WIRELESS_SETTINGS), 0); }; view.setOnClickListener(onClickListener); mNoSimTextView = view.getNoSimTextView(); mNoSimTextView.setOnClickListener(onClickListener); mMainHandler = new H(mainLooper, this::handleUpdateCarrierInfo, this::handleUpdateState); Loading
packages/SystemUI/tests/src/com/android/systemui/qs/carrier/QSCarrierGroupControllerTest.java +70 −1 Original line number Diff line number Diff line Loading @@ -16,19 +16,26 @@ package com.android.systemui.qs.carrier; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import android.content.Context; import android.content.Intent; import android.os.Handler; import android.provider.Settings; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.view.View; Loading @@ -50,6 +57,7 @@ import com.android.systemui.utils.os.FakeHandler; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; Loading Loading @@ -85,6 +93,7 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest { private QSCarrierGroupController.OnSingleCarrierChangedListener mOnSingleCarrierChangedListener; private FakeSlotIndexResolver mSlotIndexResolver; private ClickListenerTextView mNoCarrierTextView; @Before public void setup() throws Exception { Loading @@ -108,7 +117,8 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest { .when(mCarrierTextManager) .setListening(any(CarrierTextManager.CarrierTextCallback.class)); when(mQSCarrierGroup.getNoSimTextView()).thenReturn(new TextView(mContext)); mNoCarrierTextView = new ClickListenerTextView(mContext); when(mQSCarrierGroup.getNoSimTextView()).thenReturn(mNoCarrierTextView); when(mQSCarrierGroup.getCarrier1View()).thenReturn(mQSCarrier1); when(mQSCarrierGroup.getCarrier2View()).thenReturn(mQSCarrier2); when(mQSCarrierGroup.getCarrier3View()).thenReturn(mQSCarrier3); Loading Loading @@ -376,6 +386,47 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest { verify(mOnSingleCarrierChangedListener, never()).onSingleCarrierChanged(anyBoolean()); } @Test public void testOnlyInternalViewsHaveClickableListener() { ArgumentCaptor<View.OnClickListener> captor = ArgumentCaptor.forClass(View.OnClickListener.class); verify(mQSCarrier1).setOnClickListener(captor.capture()); verify(mQSCarrier2).setOnClickListener(captor.getValue()); verify(mQSCarrier3).setOnClickListener(captor.getValue()); assertThat(mNoCarrierTextView.getOnClickListener()).isSameInstanceAs(captor.getValue()); verify(mQSCarrierGroup, never()).setOnClickListener(any()); } @Test public void testOnClickListenerDoesntStartActivityIfViewNotVisible() { ArgumentCaptor<View.OnClickListener> captor = ArgumentCaptor.forClass(View.OnClickListener.class); verify(mQSCarrier1).setOnClickListener(captor.capture()); when(mQSCarrier1.isVisibleToUser()).thenReturn(false); captor.getValue().onClick(mQSCarrier1); verifyZeroInteractions(mActivityStarter); } @Test public void testOnClickListenerLaunchesActivityIfViewVisible() { ArgumentCaptor<View.OnClickListener> listenerCaptor = ArgumentCaptor.forClass(View.OnClickListener.class); ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class); verify(mQSCarrier1).setOnClickListener(listenerCaptor.capture()); when(mQSCarrier1.isVisibleToUser()).thenReturn(true); listenerCaptor.getValue().onClick(mQSCarrier1); verify(mActivityStarter) .postStartActivityDismissingKeyguard(intentCaptor.capture(), anyInt()); assertThat(intentCaptor.getValue().getAction()) .isEqualTo(Settings.ACTION_WIRELESS_SETTINGS); } private class FakeSlotIndexResolver implements QSCarrierGroupController.SlotIndexResolver { public boolean overrideInvalid; Loading @@ -384,4 +435,22 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest { return overrideInvalid ? -1 : subscriptionId; } } private class ClickListenerTextView extends TextView { View.OnClickListener mListener = null; ClickListenerTextView(Context context) { super(context); } @Override public void setOnClickListener(OnClickListener l) { super.setOnClickListener(l); mListener = l; } View.OnClickListener getOnClickListener() { return mListener; } } }