Snap for 5674428 from 6a1d7e60ac to qt-qpr1-release

Change-Id: I2eab659feb08238ad215542106ab310c02102e2b
This commit is contained in:
android-build-team Robot
2019-06-20 03:08:58 +00:00
10 changed files with 87 additions and 85 deletions

View File

@@ -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>

View File

@@ -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

View File

@@ -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.
*

View File

@@ -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));
}
}

View File

@@ -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();
}
}

View File

@@ -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()) {

View File

@@ -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();
}

View File

@@ -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();
}
}

View File

@@ -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();

View File

@@ -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;