Merge "Add a plus button to the mobile pref on Network & internet page"
This commit is contained in:
committed by
Android (Google) Code Review
commit
a0690b3d2e
@@ -16,10 +16,16 @@
|
||||
|
||||
package com.android.settings.network;
|
||||
|
||||
import static android.telephony.TelephonyManager.MultiSimVariants.DSDS;
|
||||
import static android.telephony.TelephonyManager.MultiSimVariants.UNKNOWN;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.ArgumentMatchers.isNull;
|
||||
import static org.mockito.ArgumentMatchers.notNull;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -28,8 +34,11 @@ import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.telephony.euicc.EuiccManager;
|
||||
|
||||
import com.android.settings.network.telephony.MobileNetworkActivity;
|
||||
import com.android.settings.widget.AddPreference;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
@@ -44,7 +53,6 @@ import org.robolectric.RobolectricTestRunner;
|
||||
import java.util.Arrays;
|
||||
|
||||
import androidx.lifecycle.Lifecycle;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@@ -52,10 +60,12 @@ public class MobileNetworkSummaryControllerTest {
|
||||
@Mock
|
||||
private Lifecycle mLifecycle;
|
||||
@Mock
|
||||
PreferenceScreen mPreferenceScreen;
|
||||
private TelephonyManager mTelephonyManager;
|
||||
|
||||
Preference mPreference;
|
||||
@Mock
|
||||
private PreferenceScreen mPreferenceScreen;
|
||||
|
||||
private AddPreference mPreference;
|
||||
private Context mContext;
|
||||
private MobileNetworkSummaryController mController;
|
||||
|
||||
@@ -63,8 +73,11 @@ public class MobileNetworkSummaryControllerTest {
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = spy(Robolectric.setupActivity(Activity.class));
|
||||
when(mContext.getSystemService(eq(TelephonyManager.class))).thenReturn(mTelephonyManager);
|
||||
when(mTelephonyManager.getMultiSimConfiguration()).thenReturn(UNKNOWN);
|
||||
|
||||
mController = new MobileNetworkSummaryController(mContext, mLifecycle);
|
||||
mPreference = new Preference(mContext);
|
||||
mPreference = spy(new AddPreference(mContext, null));
|
||||
mPreference.setKey(mController.getPreferenceKey());
|
||||
when(mPreferenceScreen.findPreference(eq(mController.getPreferenceKey()))).thenReturn(
|
||||
mPreference);
|
||||
@@ -76,15 +89,21 @@ public class MobileNetworkSummaryControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSummary_noSubscriptions_correctSummary() {
|
||||
public void getSummary_noSubscriptions_correctSummaryAndClickHandler() {
|
||||
mController.displayPreference(mPreferenceScreen);
|
||||
mController.onResume();
|
||||
assertThat(mController.getSummary()).isEqualTo("Add a network");
|
||||
|
||||
mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
|
||||
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
verify(mContext).startActivity(intentCaptor.capture());
|
||||
assertThat(intentCaptor.getValue().getAction()).isEqualTo(
|
||||
EuiccManager.ACTION_PROVISION_EMBEDDED_SUBSCRIPTION);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSummary_oneSubscription_correctSummaryAndClickHandler() {
|
||||
SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
|
||||
final SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
|
||||
when(sub1.getSubscriptionId()).thenReturn(1);
|
||||
when(sub1.getDisplayName()).thenReturn("sub1");
|
||||
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1));
|
||||
@@ -93,7 +112,7 @@ public class MobileNetworkSummaryControllerTest {
|
||||
assertThat(mController.getSummary()).isEqualTo("sub1");
|
||||
assertThat(mPreference.getFragment()).isNull();
|
||||
mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
|
||||
ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
verify(mContext).startActivity(intentCaptor.capture());
|
||||
assertThat(intentCaptor.getValue().getComponent().getClassName()).isEqualTo(
|
||||
MobileNetworkActivity.class.getName());
|
||||
@@ -101,8 +120,8 @@ public class MobileNetworkSummaryControllerTest {
|
||||
|
||||
@Test
|
||||
public void getSummary_twoSubscriptions_correctSummaryAndFragment() {
|
||||
SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
|
||||
SubscriptionInfo sub2 = mock(SubscriptionInfo.class);
|
||||
final SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
|
||||
final SubscriptionInfo sub2 = mock(SubscriptionInfo.class);
|
||||
when(sub1.getSubscriptionId()).thenReturn(1);
|
||||
when(sub2.getSubscriptionId()).thenReturn(2);
|
||||
|
||||
@@ -115,8 +134,8 @@ public class MobileNetworkSummaryControllerTest {
|
||||
|
||||
@Test
|
||||
public void getSummaryAfterUpdate_twoSubscriptionsBecomesOne_correctSummaryAndFragment() {
|
||||
SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
|
||||
SubscriptionInfo sub2 = mock(SubscriptionInfo.class);
|
||||
final SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
|
||||
final SubscriptionInfo sub2 = mock(SubscriptionInfo.class);
|
||||
when(sub1.getSubscriptionId()).thenReturn(1);
|
||||
when(sub2.getSubscriptionId()).thenReturn(2);
|
||||
when(sub1.getDisplayName()).thenReturn("sub1");
|
||||
@@ -135,7 +154,7 @@ public class MobileNetworkSummaryControllerTest {
|
||||
assertThat(mController.getSummary()).isEqualTo("sub1");
|
||||
assertThat(mPreference.getFragment()).isNull();
|
||||
mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
|
||||
ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
verify(mContext).startActivity(intentCaptor.capture());
|
||||
assertThat(intentCaptor.getValue().getComponent().getClassName()).isEqualTo(
|
||||
MobileNetworkActivity.class.getName());
|
||||
@@ -143,8 +162,8 @@ public class MobileNetworkSummaryControllerTest {
|
||||
|
||||
@Test
|
||||
public void getSummaryAfterUpdate_oneSubscriptionBecomesTwo_correctSummaryAndFragment() {
|
||||
SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
|
||||
SubscriptionInfo sub2 = mock(SubscriptionInfo.class);
|
||||
final SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
|
||||
final SubscriptionInfo sub2 = mock(SubscriptionInfo.class);
|
||||
when(sub1.getSubscriptionId()).thenReturn(1);
|
||||
when(sub2.getSubscriptionId()).thenReturn(2);
|
||||
when(sub1.getDisplayName()).thenReturn("sub1");
|
||||
@@ -156,7 +175,7 @@ public class MobileNetworkSummaryControllerTest {
|
||||
assertThat(mController.getSummary()).isEqualTo("sub1");
|
||||
assertThat(mPreference.getFragment()).isNull();
|
||||
mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
|
||||
ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
verify(mContext).startActivity(intentCaptor.capture());
|
||||
assertThat(intentCaptor.getValue().getComponent().getClassName()).isEqualTo(
|
||||
MobileNetworkActivity.class.getName());
|
||||
@@ -168,4 +187,53 @@ public class MobileNetworkSummaryControllerTest {
|
||||
assertThat(mController.getSummary()).isEqualTo("2 SIMs");
|
||||
assertThat(mPreference.getFragment()).isEqualTo(MobileNetworkListFragment.class.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addButton_noSubscriptionsSingleSimMode_noAddClickListener() {
|
||||
mController.displayPreference(mPreferenceScreen);
|
||||
mController.onResume();
|
||||
verify(mPreference, never()).setOnAddClickListener(notNull());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addButton_oneSubscriptionSingleSimMode_noAddClickListener() {
|
||||
final SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
|
||||
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1));
|
||||
mController.displayPreference(mPreferenceScreen);
|
||||
mController.onResume();
|
||||
verify(mPreference, never()).setOnAddClickListener(notNull());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addButton_noSubscriptionsMultiSimMode_hasAddClickListenerAndPrefDisabled() {
|
||||
when(mTelephonyManager.getMultiSimConfiguration()).thenReturn(DSDS);
|
||||
mController.displayPreference(mPreferenceScreen);
|
||||
mController.onResume();
|
||||
assertThat(mPreference.isEnabled()).isFalse();
|
||||
verify(mPreference, never()).setOnAddClickListener(isNull());
|
||||
verify(mPreference).setOnAddClickListener(notNull());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addButton_oneSubscriptionMultiSimMode_hasAddClickListener() {
|
||||
when(mTelephonyManager.getMultiSimConfiguration()).thenReturn(DSDS);
|
||||
final SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
|
||||
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1));
|
||||
mController.displayPreference(mPreferenceScreen);
|
||||
mController.onResume();
|
||||
verify(mPreference, never()).setOnAddClickListener(isNull());
|
||||
verify(mPreference).setOnAddClickListener(notNull());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addButton_twoSubscriptionsMultiSimMode_hasAddClickListener() {
|
||||
when(mTelephonyManager.getMultiSimConfiguration()).thenReturn(DSDS);
|
||||
final SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
|
||||
final SubscriptionInfo sub2 = mock(SubscriptionInfo.class);
|
||||
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1, sub2));
|
||||
mController.displayPreference(mPreferenceScreen);
|
||||
mController.onResume();
|
||||
verify(mPreference, never()).setOnAddClickListener(isNull());
|
||||
verify(mPreference).setOnAddClickListener(notNull());
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,149 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.widget;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class AddPreferenceTest {
|
||||
|
||||
private Context mContext;
|
||||
private PreferenceViewHolder mViewHolder;
|
||||
private View mWidgetFrame;
|
||||
private View mAddWidget;
|
||||
private AddPreference mPreference;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mPreference = new AddPreference(mContext, null);
|
||||
|
||||
final View view = spy(View.inflate(mContext, mPreference.getLayoutResource(), null));
|
||||
mViewHolder = PreferenceViewHolder.createInstanceForTests(view);
|
||||
mWidgetFrame = view.findViewById(android.R.id.widget_frame);
|
||||
mAddWidget = spy(View.inflate(mContext, mPreference.getSecondTargetResId(), null));
|
||||
when(mViewHolder.findViewById(mPreference.getAddWidgetResId())).thenReturn(mAddWidget);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBindViewHolder_noListener_addButtonNotVisible() {
|
||||
mPreference.onBindViewHolder(mViewHolder);
|
||||
assertThat(mPreference.shouldHideSecondTarget()).isTrue();
|
||||
assertThat(mWidgetFrame.getVisibility()).isEqualTo(View.GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBindViewHolder_hasListener_addButtonVisible() {
|
||||
mPreference.setOnAddClickListener(p -> {});
|
||||
mPreference.onBindViewHolder(mViewHolder);
|
||||
assertThat(mPreference.shouldHideSecondTarget()).isFalse();
|
||||
assertThat(mWidgetFrame.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setOnAddClickListener_listenerAddedAfterBinding_addButtonBecomesVisible() {
|
||||
mPreference.onBindViewHolder(mViewHolder);
|
||||
assertThat(mPreference.shouldHideSecondTarget()).isTrue();
|
||||
assertThat(mWidgetFrame.getVisibility()).isEqualTo(View.GONE);
|
||||
|
||||
mPreference.setOnAddClickListener(p -> {});
|
||||
assertThat(mPreference.shouldHideSecondTarget()).isFalse();
|
||||
assertThat(mWidgetFrame.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setOnAddClickListener_listenerRemovedAfterBinding_addButtonNotVisible() {
|
||||
mPreference.setOnAddClickListener(p -> {});
|
||||
|
||||
mPreference.onBindViewHolder(mViewHolder);
|
||||
assertThat(mPreference.shouldHideSecondTarget()).isFalse();
|
||||
assertThat(mWidgetFrame.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
|
||||
mPreference.setOnAddClickListener(null);
|
||||
assertThat(mPreference.shouldHideSecondTarget()).isTrue();
|
||||
assertThat(mWidgetFrame.getVisibility()).isEqualTo(View.GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setOnAddClickListener_listenerAddedAndRemovedAfterBinding_addButtonNotVisible() {
|
||||
mPreference.onBindViewHolder(mViewHolder);
|
||||
assertThat(mPreference.shouldHideSecondTarget()).isTrue();
|
||||
assertThat(mWidgetFrame.getVisibility()).isEqualTo(View.GONE);
|
||||
|
||||
mPreference.setOnAddClickListener(p -> {});
|
||||
assertThat(mPreference.shouldHideSecondTarget()).isFalse();
|
||||
assertThat(mWidgetFrame.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
|
||||
mPreference.setOnAddClickListener(null);
|
||||
assertThat(mPreference.shouldHideSecondTarget()).isTrue();
|
||||
assertThat(mWidgetFrame.getVisibility()).isEqualTo(View.GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onClick_noListener_noCrash() {
|
||||
mPreference.onBindViewHolder(mViewHolder);
|
||||
// should be no crash here
|
||||
mPreference.onClick(mAddWidget);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onClick_hasListenerBeforeBind_firesCorrectly() {
|
||||
final AddPreference.OnAddClickListener listener = mock(
|
||||
AddPreference.OnAddClickListener.class);
|
||||
mPreference.setOnAddClickListener(listener);
|
||||
|
||||
mPreference.onBindViewHolder(mViewHolder);
|
||||
assertThat(mWidgetFrame.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
|
||||
mPreference.onClick(mAddWidget);
|
||||
verify(listener).onAddClick(eq(mPreference));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onClick_listenerAddedAfterBind_firesCorrectly() {
|
||||
mPreference.onBindViewHolder(mViewHolder);
|
||||
assertThat(mWidgetFrame.getVisibility()).isEqualTo(View.GONE);
|
||||
|
||||
final AddPreference.OnAddClickListener listener = mock(
|
||||
AddPreference.OnAddClickListener.class);
|
||||
mPreference.setOnAddClickListener(listener);
|
||||
assertThat(mWidgetFrame.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
|
||||
mPreference.onClick(mAddWidget);
|
||||
verify(listener).onAddClick(eq(mPreference));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user