Merge "Fix QSCarrierGroup click listeners" into tm-qpr-dev am: bbf7246779
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19396066 Change-Id: I0a168ce65111bbbf641644b005692d98ca4bd83b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -243,7 +243,7 @@ public class QSCarrierGroupController {
|
|||||||
mActivityStarter.postStartActivityDismissingKeyguard(
|
mActivityStarter.postStartActivityDismissingKeyguard(
|
||||||
new Intent(Settings.ACTION_WIRELESS_SETTINGS), 0);
|
new Intent(Settings.ACTION_WIRELESS_SETTINGS), 0);
|
||||||
};
|
};
|
||||||
view.setOnClickListener(onClickListener);
|
|
||||||
mNoSimTextView = view.getNoSimTextView();
|
mNoSimTextView = view.getNoSimTextView();
|
||||||
mNoSimTextView.setOnClickListener(onClickListener);
|
mNoSimTextView.setOnClickListener(onClickListener);
|
||||||
mMainHandler = new H(mainLooper, this::handleUpdateCarrierInfo, this::handleUpdateState);
|
mMainHandler = new H(mainLooper, this::handleUpdateCarrierInfo, this::handleUpdateState);
|
||||||
|
|||||||
@@ -16,19 +16,26 @@
|
|||||||
|
|
||||||
package com.android.systemui.qs.carrier;
|
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.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.doAnswer;
|
import static org.mockito.Mockito.doAnswer;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.reset;
|
import static org.mockito.Mockito.reset;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.verifyZeroInteractions;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.provider.Settings;
|
||||||
import android.testing.AndroidTestingRunner;
|
import android.testing.AndroidTestingRunner;
|
||||||
import android.testing.TestableLooper;
|
import android.testing.TestableLooper;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -50,6 +57,7 @@ import com.android.systemui.utils.os.FakeHandler;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
|
||||||
@@ -85,6 +93,7 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest {
|
|||||||
private QSCarrierGroupController.OnSingleCarrierChangedListener mOnSingleCarrierChangedListener;
|
private QSCarrierGroupController.OnSingleCarrierChangedListener mOnSingleCarrierChangedListener;
|
||||||
|
|
||||||
private FakeSlotIndexResolver mSlotIndexResolver;
|
private FakeSlotIndexResolver mSlotIndexResolver;
|
||||||
|
private ClickListenerTextView mNoCarrierTextView;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws Exception {
|
public void setup() throws Exception {
|
||||||
@@ -108,7 +117,8 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest {
|
|||||||
.when(mCarrierTextManager)
|
.when(mCarrierTextManager)
|
||||||
.setListening(any(CarrierTextManager.CarrierTextCallback.class));
|
.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.getCarrier1View()).thenReturn(mQSCarrier1);
|
||||||
when(mQSCarrierGroup.getCarrier2View()).thenReturn(mQSCarrier2);
|
when(mQSCarrierGroup.getCarrier2View()).thenReturn(mQSCarrier2);
|
||||||
when(mQSCarrierGroup.getCarrier3View()).thenReturn(mQSCarrier3);
|
when(mQSCarrierGroup.getCarrier3View()).thenReturn(mQSCarrier3);
|
||||||
@@ -376,6 +386,47 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest {
|
|||||||
verify(mOnSingleCarrierChangedListener, never()).onSingleCarrierChanged(anyBoolean());
|
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 {
|
private class FakeSlotIndexResolver implements QSCarrierGroupController.SlotIndexResolver {
|
||||||
public boolean overrideInvalid;
|
public boolean overrideInvalid;
|
||||||
|
|
||||||
@@ -384,4 +435,22 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest {
|
|||||||
return overrideInvalid ? -1 : subscriptionId;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user