Snap for 5674428 from 6a1d7e60ac to qt-qpr1-release
Change-Id: I2eab659feb08238ad215542106ab310c02102e2b
This commit is contained in:
@@ -44,7 +44,7 @@
|
||||
android:key="security_lockscreen_bypass"
|
||||
android:title="@string/lockscreen_bypass_title"
|
||||
android:summary="@string/lockscreen_bypass_summary"
|
||||
settings:searchable="false"
|
||||
settings:keywords="@string/keywords_lockscreen_bypass"
|
||||
settings:controller="com.android.settings.biometrics.face.FaceSettingsLockscreenBypassPreferenceController" />
|
||||
</PreferenceCategory>
|
||||
|
||||
|
||||
@@ -72,7 +72,8 @@ public class DisabledSubscriptionController extends BasePreferenceController imp
|
||||
if (mCategory == null || mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
||||
return;
|
||||
}
|
||||
mCategory.setVisible(mSubscriptionManager.isSubscriptionEnabled(mSubId));
|
||||
// TODO b/135222940: re-evaluate whether to use mSubscriptionManager#isSubscriptionEnabled
|
||||
mCategory.setVisible(mSubscriptionManager.isActiveSubId(mSubId));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -78,16 +78,14 @@ public class MobileDataSlice implements CustomSliceable {
|
||||
final String title = mContext.getText(R.string.mobile_data_settings_title).toString();
|
||||
@ColorInt final int color = Utils.getColorAccentDefaultColor(mContext);
|
||||
|
||||
// Return a Slice without the mobile data toggle when airplane mode is on.
|
||||
// Return null until we can show a disabled-action Slice, blaming Airplane mode.
|
||||
if (isAirplaneModeEnabled()) {
|
||||
return buildUnavailableMobileDataSlice(title,
|
||||
mContext.getText(R.string.mobile_data_ap_mode_disabled), icon, color);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Return a Slice without the mobile data toggle when mobile data disabled.
|
||||
// Return null until we can show a disabled-action Slice.
|
||||
if (!isMobileDataAvailable()) {
|
||||
return buildUnavailableMobileDataSlice(title,
|
||||
mContext.getText(R.string.sim_cellular_data_unavailable), icon, color);
|
||||
return null;
|
||||
}
|
||||
|
||||
final CharSequence summary = getSummary();
|
||||
@@ -201,22 +199,6 @@ public class MobileDataSlice implements CustomSliceable {
|
||||
return mTelephonyManager.isDataEnabled();
|
||||
}
|
||||
|
||||
private Slice buildUnavailableMobileDataSlice(String title, CharSequence summary,
|
||||
IconCompat icon, int color) {
|
||||
final PendingIntent intent = PendingIntent.getActivity(mContext, 0 /* requestCode */,
|
||||
new Intent(), 0 /* flags */);
|
||||
final SliceAction deadAction =
|
||||
SliceAction.create(intent, icon, ListBuilder.ICON_IMAGE, title);
|
||||
final ListBuilder listBuilder = new ListBuilder(mContext, getUri(),
|
||||
ListBuilder.INFINITY)
|
||||
.setAccentColor(color)
|
||||
.addRow(new ListBuilder.RowBuilder()
|
||||
.setTitle(title)
|
||||
.setSubtitle(summary)
|
||||
.setPrimaryAction(deadAction));
|
||||
return listBuilder.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Listener for mobile data state changes.
|
||||
*
|
||||
|
||||
@@ -81,7 +81,9 @@ public class MobileNetworkSwitchController extends BasePreferenceController impl
|
||||
R.string.mobile_network_use_sim_off);
|
||||
|
||||
mSwitchBar.addOnSwitchChangeListener((switchView, isChecked) -> {
|
||||
if (mSubscriptionManager.isSubscriptionEnabled(mSubId) != isChecked
|
||||
// TODO b/135222940: re-evaluate whether to use
|
||||
// mSubscriptionManager#isSubscriptionEnabled
|
||||
if (mSubscriptionManager.isActiveSubId(mSubId) != isChecked
|
||||
&& (!mSubscriptionManager.setSubscriptionEnabled(mSubId, isChecked))) {
|
||||
mSwitchBar.setChecked(!isChecked);
|
||||
}
|
||||
@@ -108,7 +110,9 @@ public class MobileNetworkSwitchController extends BasePreferenceController impl
|
||||
mSwitchBar.hide();
|
||||
} else {
|
||||
mSwitchBar.show();
|
||||
mSwitchBar.setChecked(mSubscriptionManager.isSubscriptionEnabled(mSubId));
|
||||
// TODO b/135222940: re-evaluate whether to use
|
||||
// mSubscriptionManager#isSubscriptionEnabled
|
||||
mSwitchBar.setChecked(mSubscriptionManager.isActiveSubId(mSubId));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,20 +16,25 @@
|
||||
|
||||
package com.android.settings.sim;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||
import com.android.settings.network.SubscriptionsChangeListener;
|
||||
|
||||
/** Common functionality for showing a dialog in SimDialogActivity. */
|
||||
public abstract class SimDialogFragment extends InstrumentedDialogFragment {
|
||||
public abstract class SimDialogFragment extends InstrumentedDialogFragment implements
|
||||
SubscriptionsChangeListener.SubscriptionsChangeListenerClient {
|
||||
private static final String TAG = "SimDialogFragment";
|
||||
|
||||
private static final String KEY_TITLE_ID = "title_id";
|
||||
private static final String KEY_DIALOG_TYPE = "dialog_type";
|
||||
|
||||
private SubscriptionsChangeListener mChangeListener;
|
||||
|
||||
protected static Bundle initArguments(int dialogType, int titleResId) {
|
||||
final Bundle args = new Bundle();
|
||||
args.putInt(KEY_DIALOG_TYPE, dialogType);
|
||||
@@ -45,6 +50,24 @@ public abstract class SimDialogFragment extends InstrumentedDialogFragment {
|
||||
return getArguments().getInt(KEY_TITLE_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
mChangeListener = new SubscriptionsChangeListener(context, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
mChangeListener.stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
mChangeListener.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||
super.onDismiss(dialog);
|
||||
@@ -55,4 +78,13 @@ public abstract class SimDialogFragment extends InstrumentedDialogFragment {
|
||||
}
|
||||
|
||||
public abstract void updateDialog();
|
||||
|
||||
@Override
|
||||
public void onAirplaneModeChanged(boolean airplaneModeEnabled) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSubscriptionsChanged() {
|
||||
updateDialog();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -205,6 +205,11 @@ public class WifiDppUtils {
|
||||
final WifiConfiguration wifiConfiguration = accessPoint.getConfig();
|
||||
setConfiguratorIntentExtra(intent, wifiManager, wifiConfiguration);
|
||||
|
||||
// For a transition mode Wi-Fi AP, creates a QR code that's compatible with more devices
|
||||
if (accessPoint.getSecurity() == AccessPoint.SECURITY_PSK_SAE_TRANSITION) {
|
||||
intent.putExtra(EXTRA_WIFI_SECURITY, WifiQrCode.SECURITY_WPA_PSK);
|
||||
}
|
||||
|
||||
return intent;
|
||||
}
|
||||
|
||||
@@ -400,6 +405,7 @@ public class WifiDppUtils {
|
||||
}
|
||||
break;
|
||||
case AccessPoint.SECURITY_PSK:
|
||||
case AccessPoint.SECURITY_PSK_SAE_TRANSITION:
|
||||
return true;
|
||||
default:
|
||||
}
|
||||
@@ -412,6 +418,8 @@ public class WifiDppUtils {
|
||||
case AccessPoint.SECURITY_PSK:
|
||||
case AccessPoint.SECURITY_WEP:
|
||||
case AccessPoint.SECURITY_NONE:
|
||||
case AccessPoint.SECURITY_PSK_SAE_TRANSITION:
|
||||
case AccessPoint.SECURITY_OWE_TRANSITION:
|
||||
return true;
|
||||
case AccessPoint.SECURITY_SAE:
|
||||
if (wifiManager.isWpa3SaeSupported()) {
|
||||
|
||||
@@ -69,32 +69,32 @@ public class DisabledSubscriptionControllerTest {
|
||||
|
||||
@Test
|
||||
public void displayPreference_subscriptionEnabled_categoryIsVisible() {
|
||||
doReturn(true).when(mSubscriptionManager).isSubscriptionEnabled(SUB_ID);
|
||||
doReturn(true).when(mSubscriptionManager).isActiveSubId(SUB_ID);
|
||||
mController.displayPreference(mScreen);
|
||||
assertThat(mCategory.isVisible()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void displayPreference_subscriptionDisabled_categoryIsNotVisible() {
|
||||
doReturn(false).when(mSubscriptionManager).isSubscriptionEnabled(SUB_ID);
|
||||
doReturn(false).when(mSubscriptionManager).isActiveSubId(SUB_ID);
|
||||
mController.displayPreference(mScreen);
|
||||
assertThat(mCategory.isVisible()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onSubscriptionsChanged_subscriptionBecomesDisabled_categoryIsNotVisible() {
|
||||
doReturn(true).when(mSubscriptionManager).isSubscriptionEnabled(SUB_ID);
|
||||
doReturn(true).when(mSubscriptionManager).isActiveSubId(SUB_ID);
|
||||
mController.displayPreference(mScreen);
|
||||
doReturn(false).when(mSubscriptionManager).isSubscriptionEnabled(SUB_ID);
|
||||
doReturn(false).when(mSubscriptionManager).isActiveSubId(SUB_ID);
|
||||
mController.onSubscriptionsChanged();
|
||||
assertThat(mCategory.isVisible()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onSubscriptionsChanged_subscriptionBecomesEnabled_categoryIsVisible() {
|
||||
doReturn(false).when(mSubscriptionManager).isSubscriptionEnabled(SUB_ID);
|
||||
doReturn(false).when(mSubscriptionManager).isActiveSubId(SUB_ID);
|
||||
mController.displayPreference(mScreen);
|
||||
doReturn(true).when(mSubscriptionManager).isSubscriptionEnabled(SUB_ID);
|
||||
doReturn(true).when(mSubscriptionManager).isActiveSubId(SUB_ID);
|
||||
mController.onSubscriptionsChanged();
|
||||
assertThat(mCategory.isVisible()).isTrue();
|
||||
}
|
||||
|
||||
@@ -174,21 +174,7 @@ public class MobileDataSliceTest {
|
||||
doReturn(new ArrayList<>()).when(mSubscriptionManager).getSelectableSubscriptionInfoList();
|
||||
final Slice mobileData = mMobileDataSlice.getSlice();
|
||||
|
||||
final SliceMetadata metadata = SliceMetadata.from(mContext, mobileData);
|
||||
assertThat(metadata.getTitle())
|
||||
.isEqualTo(mContext.getString(R.string.mobile_data_settings_title));
|
||||
|
||||
assertThat(metadata.getSubtitle())
|
||||
.isEqualTo(mContext.getString(R.string.sim_cellular_data_unavailable));
|
||||
|
||||
final List<SliceAction> toggles = metadata.getToggles();
|
||||
assertThat(toggles).hasSize(0);
|
||||
|
||||
final SliceAction primaryAction = metadata.getPrimaryAction();
|
||||
final PendingIntent pendingIntent = primaryAction.getAction();
|
||||
final Intent actionIntent = pendingIntent.getIntent();
|
||||
|
||||
assertThat(actionIntent).isNull();
|
||||
assertThat(mobileData).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -196,21 +182,7 @@ public class MobileDataSliceTest {
|
||||
doReturn(null).when(mSubscriptionManager).getSelectableSubscriptionInfoList();
|
||||
final Slice mobileData = mMobileDataSlice.getSlice();
|
||||
|
||||
final SliceMetadata metadata = SliceMetadata.from(mContext, mobileData);
|
||||
assertThat(metadata.getTitle())
|
||||
.isEqualTo(mContext.getString(R.string.mobile_data_settings_title));
|
||||
|
||||
assertThat(metadata.getSubtitle())
|
||||
.isEqualTo(mContext.getString(R.string.sim_cellular_data_unavailable));
|
||||
|
||||
final List<SliceAction> toggles = metadata.getToggles();
|
||||
assertThat(toggles).hasSize(0);
|
||||
|
||||
final SliceAction primaryAction = metadata.getPrimaryAction();
|
||||
final PendingIntent pendingIntent = primaryAction.getAction();
|
||||
final Intent actionIntent = pendingIntent.getIntent();
|
||||
|
||||
assertThat(actionIntent).isNull();
|
||||
assertThat(mobileData).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -219,20 +191,6 @@ public class MobileDataSliceTest {
|
||||
doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID);
|
||||
final Slice mobileData = mMobileDataSlice.getSlice();
|
||||
|
||||
final SliceMetadata metadata = SliceMetadata.from(mContext, mobileData);
|
||||
assertThat(metadata.getTitle())
|
||||
.isEqualTo(mContext.getString(R.string.mobile_data_settings_title));
|
||||
|
||||
assertThat(metadata.getSubtitle())
|
||||
.isEqualTo(mContext.getString(R.string.mobile_data_ap_mode_disabled));
|
||||
|
||||
final List<SliceAction> toggles = metadata.getToggles();
|
||||
assertThat(toggles).hasSize(0);
|
||||
|
||||
final SliceAction primaryAction = metadata.getPrimaryAction();
|
||||
final PendingIntent pendingIntent = primaryAction.getAction();
|
||||
final Intent actionIntent = pendingIntent.getIntent();
|
||||
|
||||
assertThat(actionIntent).isNull();
|
||||
assertThat(mobileData).isNull();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ public class MobileNetworkSwitchControllerTest {
|
||||
|
||||
@Test
|
||||
public void displayPreference_oneEnabledSubscription_switchBarNotHidden() {
|
||||
doReturn(true).when(mSubscriptionManager).isSubscriptionEnabled(mSubId);
|
||||
doReturn(true).when(mSubscriptionManager).isActiveSubId(mSubId);
|
||||
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mSubscription));
|
||||
mController.displayPreference(mScreen);
|
||||
assertThat(mSwitchBar.isShowing()).isTrue();
|
||||
@@ -117,7 +117,7 @@ public class MobileNetworkSwitchControllerTest {
|
||||
|
||||
@Test
|
||||
public void displayPreference_oneDisabledSubscription_switchBarNotHidden() {
|
||||
doReturn(false).when(mSubscriptionManager).isSubscriptionEnabled(mSubId);
|
||||
doReturn(false).when(mSubscriptionManager).isActiveSubId(mSubId);
|
||||
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mSubscription));
|
||||
mController.displayPreference(mScreen);
|
||||
assertThat(mSwitchBar.isShowing()).isTrue();
|
||||
@@ -125,7 +125,7 @@ public class MobileNetworkSwitchControllerTest {
|
||||
|
||||
@Test
|
||||
public void displayPreference_subscriptionEnabled_switchIsOn() {
|
||||
when(mSubscriptionManager.isSubscriptionEnabled(mSubId)).thenReturn(true);
|
||||
when(mSubscriptionManager.isActiveSubId(mSubId)).thenReturn(true);
|
||||
mController.displayPreference(mScreen);
|
||||
assertThat(mSwitchBar.isShowing()).isTrue();
|
||||
assertThat(mSwitchBar.isChecked()).isTrue();
|
||||
@@ -133,7 +133,7 @@ public class MobileNetworkSwitchControllerTest {
|
||||
|
||||
@Test
|
||||
public void displayPreference_subscriptionDisabled_switchIsOff() {
|
||||
when(mSubscriptionManager.isSubscriptionEnabled(mSubId)).thenReturn(false);
|
||||
when(mSubscriptionManager.isActiveSubId(mSubId)).thenReturn(false);
|
||||
mController.displayPreference(mScreen);
|
||||
assertThat(mSwitchBar.isShowing()).isTrue();
|
||||
assertThat(mSwitchBar.isChecked()).isFalse();
|
||||
@@ -141,7 +141,7 @@ public class MobileNetworkSwitchControllerTest {
|
||||
|
||||
@Test
|
||||
public void switchChangeListener_fromEnabledToDisabled_setSubscriptionEnabledCalledCorrectly() {
|
||||
when(mSubscriptionManager.isSubscriptionEnabled(mSubId)).thenReturn(true);
|
||||
when(mSubscriptionManager.isActiveSubId(mSubId)).thenReturn(true);
|
||||
mController.displayPreference(mScreen);
|
||||
assertThat(mSwitchBar.isShowing()).isTrue();
|
||||
assertThat(mSwitchBar.isChecked()).isTrue();
|
||||
@@ -153,7 +153,7 @@ public class MobileNetworkSwitchControllerTest {
|
||||
public void switchChangeListener_fromEnabledToDisabled_setSubscriptionEnabledFailed() {
|
||||
when(mSubscriptionManager.setSubscriptionEnabled(eq(mSubId), anyBoolean()))
|
||||
.thenReturn(false);
|
||||
when(mSubscriptionManager.isSubscriptionEnabled(mSubId)).thenReturn(true);
|
||||
when(mSubscriptionManager.isActiveSubId(mSubId)).thenReturn(true);
|
||||
mController.displayPreference(mScreen);
|
||||
assertThat(mSwitchBar.isShowing()).isTrue();
|
||||
assertThat(mSwitchBar.isChecked()).isTrue();
|
||||
@@ -164,7 +164,7 @@ public class MobileNetworkSwitchControllerTest {
|
||||
|
||||
@Test
|
||||
public void switchChangeListener_fromDisabledToEnabled_setSubscriptionEnabledCalledCorrectly() {
|
||||
when(mSubscriptionManager.isSubscriptionEnabled(mSubId)).thenReturn(false);
|
||||
when(mSubscriptionManager.isActiveSubId(mSubId)).thenReturn(false);
|
||||
mController.displayPreference(mScreen);
|
||||
assertThat(mSwitchBar.isShowing()).isTrue();
|
||||
assertThat(mSwitchBar.isChecked()).isFalse();
|
||||
|
||||
@@ -26,6 +26,7 @@ import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import android.telephony.SubscriptionManager;
|
||||
@@ -77,6 +78,22 @@ public class SimListDialogFragmentTest extends SimDialogFragmentTestBase<SimList
|
||||
verify(activity).onSubscriptionSelected(dialogType, SIM2_ID);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onSubscriptionsChanged_dialogUpdates() {
|
||||
final int dialogType = DATA_PICK;
|
||||
setDialogType(dialogType);
|
||||
mFragment = spy(SimListDialogFragment.newInstance(dialogType, R.string.select_sim_for_data,
|
||||
false /* includeAskEveryTime */));
|
||||
doReturn(Arrays.asList(mSim1, mSim2)).when(mFragment).getCurrentSubscriptions();
|
||||
// Avoid problems robolectric has with our real adapter.
|
||||
doNothing().when(mFragment).setAdapter(any());
|
||||
startDialog();
|
||||
verify(mFragment).updateDialog();
|
||||
|
||||
mFragment.onSubscriptionsChanged();
|
||||
verify(mFragment, times(2)).updateDialog();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onCreateDialog_twoSubscriptionsAskEveryTime_threeSubsForDisplay() {
|
||||
final int dialogType = SMS_PICK;
|
||||
|
||||
Reference in New Issue
Block a user